From b8ea21d24a35b67b3a1b2d59b9f1a96e2ad01b63 Mon Sep 17 00:00:00 2001 From: grdddj Date: Fri, 11 Aug 2023 17:57:32 +0200 Subject: [PATCH] feat(all): implement translations into Trezor Co-authored-by matejcik --- .gitlab-ci.yml | 1 + Makefile | 4 +- ci/deploy.yml | 38 + ci/make_nonenglish_tests.py | 166 + ci/shell.nix | 1 + ci/test-nonenglish.yml | 587 + common/protob/messages-management.proto | 49 +- common/protob/messages.proto | 3 + common/tools/cointool.py | 5 + core/Makefile | 24 +- core/SConscript.firmware | 2 + core/SConscript.unix | 3 + .../extmod/modtrezorutils/modtrezorutils.c | 70 +- core/embed/extmod/rustmods.c | 5 + core/embed/firmware/mpconfigport.h | 1 + core/embed/lib/display.c | 18 +- .../lib/fonts/font_pixeloperator_bold_8.c | 2 +- .../lib/fonts/font_pixeloperator_regular_8.c | 2 +- .../fonts/font_pixeloperatormono_regular_8.c | 2 +- core/embed/lib/fonts/font_roboto_bold_20.c | 2 +- core/embed/lib/fonts/font_roboto_regular_20.c | 2 +- .../lib/fonts/font_robotomono_medium_20.c | 2 +- core/embed/lib/fonts/font_tthoves_bold_17.c | 2 +- .../lib/fonts/font_tthoves_demibold_21.c | 2 +- .../embed/lib/fonts/font_tthoves_regular_21.c | 2 +- core/embed/lib/fonts/font_unifont_bold_16.c | 2 +- .../embed/lib/fonts/font_unifont_regular_16.c | 2 +- core/embed/lib/fonts/fonts.c | 221 +- core/embed/lib/fonts/fonts.h | 17 +- core/embed/lib/image.c | 1 + core/embed/lib/image.h | 1 + core/embed/models/layout_common.h | 1 + core/embed/models/model_T2B1_layout.c | 17 +- core/embed/models/model_T2T1_layout.c | 9 + core/embed/rust/Cargo.toml | 4 +- core/embed/rust/build.rs | 4 + core/embed/rust/librust.h | 1 + core/embed/rust/librust_fonts.h | 1 + core/embed/rust/librust_qstr.h | 850 + core/embed/rust/src/lib.rs | 2 + core/embed/rust/src/micropython/buffer.rs | 2 +- core/embed/rust/src/micropython/macros.rs | 12 +- core/embed/rust/src/micropython/qstr.rs | 2 +- core/embed/rust/src/micropython/typ.rs | 8 + core/embed/rust/src/storage/mod.rs | 1 + core/embed/rust/src/strutil.rs | 108 +- core/embed/rust/src/trace.rs | 16 +- core/embed/rust/src/translations/blob.rs | 386 + core/embed/rust/src/translations/flash.rs | 80 + .../rust/src/translations/generated/mod.rs | 1 + .../generated/translated_string.rs | 2526 +++ .../generated/translated_string.rs.mako | 50 + core/embed/rust/src/translations/mod.rs | 33 + core/embed/rust/src/translations/obj.rs | 241 + .../rust/src/translations/public_keys.rs | 15 + .../src/translations/translated_string.rs | 41 + core/embed/rust/src/trezorhal/display.rs | 2 +- core/embed/rust/src/trezorhal/mod.rs | 2 + core/embed/rust/src/trezorhal/translations.rs | 31 + core/embed/rust/src/ui/component/label.rs | 2 +- core/embed/rust/src/ui/component/marquee.rs | 2 +- core/embed/rust/src/ui/component/qr_code.rs | 2 +- .../rust/src/ui/component/text/common.rs | 2 +- .../rust/src/ui/component/text/layout.rs | 10 +- .../rust/src/ui/component/text/paragraphs.rs | 2 +- core/embed/rust/src/ui/component/text/util.rs | 23 +- core/embed/rust/src/ui/display/font.rs | 54 +- core/embed/rust/src/ui/display/mod.rs | 65 +- .../rust/src/ui/model_tr/bootloader/intro.rs | 6 +- .../rust/src/ui/model_tr/bootloader/menu.rs | 12 +- .../ui/model_tr/component/address_details.rs | 57 +- .../src/ui/model_tr/component/bl_confirm.rs | 60 +- .../rust/src/ui/model_tr/component/button.rs | 164 +- .../model_tr/component/button_controller.rs | 62 +- .../model_tr/component/coinjoin_progress.rs | 15 +- .../rust/src/ui/model_tr/component/common.rs | 8 +- .../rust/src/ui/model_tr/component/flow.rs | 2 +- .../src/ui/model_tr/component/flow_pages.rs | 8 +- .../ui/model_tr/component/hold_to_confirm.rs | 41 +- .../src/ui/model_tr/component/homescreen.rs | 33 +- .../component/input_methods/choice.rs | 49 +- .../component/input_methods/choice_item.rs | 27 +- .../model_tr/component/input_methods/mod.rs | 5 + .../component/input_methods/number_input.rs | 32 +- .../component/input_methods/passphrase.rs | 216 +- .../model_tr/component/input_methods/pin.rs | 102 +- .../component/input_methods/simple_choice.rs | 52 +- .../component/input_methods/wordlist.rs | 53 +- .../rust/src/ui/model_tr/component/loader.rs | 42 +- .../rust/src/ui/model_tr/component/mod.rs | 9 + .../rust/src/ui/model_tr/component/page.rs | 43 +- .../src/ui/model_tr/component/result_popup.rs | 2 +- .../src/ui/model_tr/component/share_words.rs | 24 +- .../src/ui/model_tr/component/show_more.rs | 24 +- .../rust/src/ui/model_tr/component/title.rs | 2 +- .../ui/model_tr/component/welcome_screen.rs | 2 +- core/embed/rust/src/ui/model_tr/layout.rs | 491 +- .../ui/model_tt/component/address_details.rs | 15 +- .../src/ui/model_tt/component/bl_confirm.rs | 8 +- .../rust/src/ui/model_tt/component/button.rs | 4 +- .../model_tt/component/coinjoin_progress.rs | 21 +- .../ui/model_tt/component/homescreen/mod.rs | 84 +- .../model_tt/component/homescreen/render.rs | 14 +- .../model_tt/component/keyboard/passphrase.rs | 2 +- .../src/ui/model_tt/component/keyboard/pin.rs | 4 +- .../rust/src/ui/model_tt/component/mod.rs | 8 + .../src/ui/model_tt/component/number_input.rs | 17 +- .../rust/src/ui/model_tt/component/page.rs | 23 +- .../ui/model_tt/component/welcome_screen.rs | 2 +- core/embed/rust/src/ui/model_tt/layout.rs | 181 +- core/embed/rust/src/ui/util.rs | 44 +- core/embed/rust/trezorhal.h | 1 + core/embed/trezorhal/stm32f4/mpu.c | 18 +- core/embed/trezorhal/stm32f4/translations.c | 39 + core/embed/trezorhal/translations.h | 10 + core/embed/trezorhal/unix/translations.c | 1 + core/embed/unix/mpconfigport.h | 1 + core/mocks/generated/trezortranslate.pyi | 60 + core/mocks/generated/trezortranslate_keys.pyi | 1 + core/mocks/generated/trezorui2.pyi | 10 + core/mocks/generated/trezorutils.pyi | 30 +- core/mocks/trezortranslate_keys.pyi | 838 + core/mocks/trezortranslate_keys.pyi.mako | 19 + core/site_scons/boards/stm32f4_common.py | 1 + core/src/all_modules.py | 2 + core/src/apps/base.py | 21 +- core/src/apps/binance/layout.py | 31 +- core/src/apps/bitcoin/authorize_coinjoin.py | 5 +- core/src/apps/bitcoin/get_address.py | 5 +- core/src/apps/bitcoin/get_ownership_proof.py | 9 +- core/src/apps/bitcoin/get_public_key.py | 4 +- core/src/apps/bitcoin/keychain.py | 4 +- core/src/apps/bitcoin/sign_tx/approvers.py | 10 +- core/src/apps/bitcoin/sign_tx/layout.py | 55 +- core/src/apps/bitcoin/sign_tx/omni.py | 7 +- core/src/apps/bitcoin/sign_tx/progress.py | 8 +- core/src/apps/bitcoin/verify_message.py | 4 +- core/src/apps/cardano/get_public_key.py | 4 +- core/src/apps/cardano/helpers/credential.py | 15 +- core/src/apps/cardano/helpers/paths.py | 6 - .../apps/cardano/helpers/protocol_magics.py | 4 +- core/src/apps/cardano/layout.py | 341 +- .../apps/cardano/sign_tx/multisig_signer.py | 3 +- .../apps/cardano/sign_tx/ordinary_signer.py | 7 +- .../src/apps/cardano/sign_tx/plutus_signer.py | 3 +- .../apps/cardano/sign_tx/pool_owner_signer.py | 3 +- core/src/apps/cardano/sign_tx/signer.py | 17 +- core/src/apps/common/passphrase.py | 14 +- core/src/apps/common/request_pin.py | 21 +- core/src/apps/common/sdcard.py | 56 +- core/src/apps/debug/__init__.py | 9 +- core/src/apps/debug/load_device.py | 8 +- core/src/apps/eos/actions/layout.py | 126 +- core/src/apps/eos/layout.py | 9 +- core/src/apps/ethereum/definitions.py | 2 +- core/src/apps/ethereum/layout.py | 74 +- core/src/apps/ethereum/sign_typed_data.py | 6 +- core/src/apps/ethereum/verify_message.py | 3 +- core/src/apps/homescreen/__init__.py | 16 +- core/src/apps/management/apply_settings.py | 79 +- .../apps/management/authenticate_device.py | 10 +- core/src/apps/management/change_language.py | 181 + core/src/apps/management/change_pin.py | 30 +- core/src/apps/management/change_wipe_code.py | 34 +- .../apps/management/get_next_u2f_counter.py | 5 +- .../apps/management/reboot_to_bootloader.py | 88 +- .../management/recovery_device/__init__.py | 12 +- .../management/recovery_device/homescreen.py | 33 +- .../apps/management/recovery_device/layout.py | 50 +- .../apps/management/reset_device/__init__.py | 8 +- .../apps/management/reset_device/layout.py | 29 +- core/src/apps/management/sd_protect.py | 22 +- core/src/apps/management/set_u2f_counter.py | 8 +- core/src/apps/management/wipe_device.py | 15 +- core/src/apps/misc/cipher_key_value.py | 11 +- core/src/apps/misc/get_ecdh_session_key.py | 1 + core/src/apps/misc/get_entropy.py | 7 +- core/src/apps/monero/layout.py | 45 +- core/src/apps/nem/layout.py | 11 +- core/src/apps/nem/mosaic/layout.py | 54 +- core/src/apps/nem/multisig/layout.py | 21 +- core/src/apps/nem/namespace/layout.py | 14 +- core/src/apps/nem/transfer/layout.py | 36 +- core/src/apps/ripple/layout.py | 6 +- core/src/apps/solana/layout.py | 66 +- core/src/apps/solana/sign_tx.py | 10 +- core/src/apps/stellar/layout.py | 53 +- core/src/apps/stellar/operations/layout.py | 113 +- core/src/apps/tezos/layout.py | 48 +- .../apps/webauthn/add_resident_credential.py | 6 +- core/src/apps/webauthn/fido2.py | 36 +- .../webauthn/list_resident_credentials.py | 7 +- .../webauthn/remove_resident_credential.py | 4 +- core/src/apps/workflow_handlers.py | 2 + core/src/boot.py | 3 +- core/src/trezor/__init__.py | 4 + core/src/trezor/enums/MessageType.py | 3 + core/src/trezor/enums/__init__.py | 3 + core/src/trezor/messages.py | 48 + core/src/trezor/pin.py | 9 +- core/src/trezor/strings.py | 49 +- core/src/trezor/ui/layouts/tr/__init__.py | 227 +- core/src/trezor/ui/layouts/tr/fido.py | 8 +- core/src/trezor/ui/layouts/tr/homescreen.py | 9 +- core/src/trezor/ui/layouts/tr/progress.py | 12 +- core/src/trezor/ui/layouts/tr/recovery.py | 14 +- core/src/trezor/ui/layouts/tr/reset.py | 82 +- core/src/trezor/ui/layouts/tt/__init__.py | 261 +- core/src/trezor/ui/layouts/tt/fido.py | 8 +- core/src/trezor/ui/layouts/tt/homescreen.py | 11 +- core/src/trezor/ui/layouts/tt/progress.py | 11 +- core/src/trezor/ui/layouts/tt/recovery.py | 24 +- core/src/trezor/ui/layouts/tt/reset.py | 125 +- core/src/trezor/utils.py | 4 +- core/tests/test_trezor.strings.py | 28 +- core/tools/codegen/foreign_chars.py | 104 + core/tools/codegen/gen_font.py | 501 +- core/tools/translations/.gitignore | 2 + core/tools/translations/check_missing_rust.py | 80 + core/tools/translations/check_missing_upy.py | 273 + core/tools/translations/flatten_json.py | 26 + core/tools/translations/font_widths.json | 666 + core/tools/translations/helpers.py | 10 + core/tools/translations/rules.json | 830 + core/tools/translations/sort_keys.py | 18 + core/tools/translations/translate_missing.py | 90 + core/tools/translations/validate_same_keys.py | 41 + core/tools/translations/validate_strings.py | 254 + core/translations/.gitignore | 1 + core/translations/cli.py | 287 + core/translations/crowdin.py | 55 + core/translations/crowdin.yml | 12 + core/translations/cs.json | 856 + core/translations/de.json | 856 + core/translations/en.json | 844 + core/translations/es.json | 856 + .../fonts/font_pixeloperator_bold_8_cs.json | 32 + .../fonts/font_pixeloperator_bold_8_de.json | 9 + .../fonts/font_pixeloperator_bold_8_es.json | 17 + .../fonts/font_pixeloperator_bold_8_fr.json | 34 + .../font_pixeloperator_regular_8_cs.json | 32 + .../font_pixeloperator_regular_8_de.json | 9 + .../font_pixeloperator_regular_8_es.json | 17 + .../font_pixeloperator_regular_8_fr.json | 34 + .../font_pixeloperatormono_regular_8_cs.json | 32 + .../font_pixeloperatormono_regular_8_de.json | 9 + .../font_pixeloperatormono_regular_8_es.json | 17 + .../font_pixeloperatormono_regular_8_fr.json | 34 + .../fonts/font_roboto_bold_20_cs.json | 32 + .../fonts/font_roboto_bold_20_de.json | 9 + .../fonts/font_roboto_bold_20_es.json | 17 + .../fonts/font_roboto_bold_20_fr.json | 34 + .../fonts/font_roboto_regular_20_cs.json | 32 + .../fonts/font_roboto_regular_20_de.json | 9 + .../fonts/font_roboto_regular_20_es.json | 17 + .../fonts/font_roboto_regular_20_fr.json | 34 + .../fonts/font_robotomono_medium_20_cs.json | 32 + .../fonts/font_robotomono_medium_20_de.json | 9 + .../fonts/font_robotomono_medium_20_es.json | 17 + .../fonts/font_robotomono_medium_20_fr.json | 34 + .../fonts/font_tthoves_bold_17_cs.json | 32 + .../fonts/font_tthoves_bold_17_de.json | 9 + .../fonts/font_tthoves_bold_17_es.json | 17 + .../fonts/font_tthoves_bold_17_fr.json | 34 + .../fonts/font_tthoves_demibold_21_cs.json | 32 + .../fonts/font_tthoves_demibold_21_de.json | 9 + .../fonts/font_tthoves_demibold_21_es.json | 17 + .../fonts/font_tthoves_demibold_21_fr.json | 34 + .../fonts/font_tthoves_regular_21_cs.json | 32 + .../fonts/font_tthoves_regular_21_de.json | 9 + .../fonts/font_tthoves_regular_21_es.json | 17 + .../fonts/font_tthoves_regular_21_fr.json | 34 + .../fonts/font_unifont_bold_16_cs.json | 32 + .../fonts/font_unifont_bold_16_de.json | 9 + .../fonts/font_unifont_bold_16_es.json | 17 + .../fonts/font_unifont_bold_16_fr.json | 34 + .../fonts/font_unifont_regular_16_cs.json | 32 + .../fonts/font_unifont_regular_16_de.json | 9 + .../fonts/font_unifont_regular_16_es.json | 17 + .../fonts/font_unifont_regular_16_fr.json | 34 + core/translations/fr.json | 856 + core/translations/order.json | 835 + core/translations/order.py | 37 + core/translations/signatures.json | 9 + docs/ci/jobs.md | 49 +- legacy/firmware/protob/Makefile | 3 +- .../src/trezorlib/_internal/translations.py | 347 + python/src/trezorlib/cli/firmware.py | 25 + python/src/trezorlib/cli/settings.py | 35 + python/src/trezorlib/device.py | 47 +- python/src/trezorlib/firmware/models.py | 6 + python/src/trezorlib/messages.py | 54 + rust/trezor-client/src/messages/generated.rs | 3 + .../src/protos/generated/messages.rs | 630 +- .../protos/generated/messages_management.rs | 638 +- storage/storage.c | 1 + tests/click_tests/recovery.py | 80 +- tests/click_tests/reset.py | 74 +- tests/click_tests/test_autolock.py | 26 +- tests/click_tests/test_passphrase_tr.py | 26 +- tests/click_tests/test_pin.py | 31 +- tests/click_tests/test_reset_bip39.py | 6 +- .../click_tests/test_reset_slip39_advanced.py | 14 +- tests/click_tests/test_reset_slip39_basic.py | 14 +- tests/click_tests/test_tutorial.py | 4 +- tests/common.py | 37 +- tests/conftest.py | 40 +- .../device_tests/bitcoin/test_signmessage.py | 4 +- tests/device_tests/ethereum/common.py | 20 +- .../test_recovery_bip39_dryrun.py | 4 + .../reset_recovery/test_recovery_bip39_t1.py | 7 +- .../test_recovery_slip39_advanced_dryrun.py | 2 - .../test_recovery_slip39_basic_dryrun.py | 2 - .../test_reset_bip39_skipbackup.py | 3 - .../reset_recovery/test_reset_bip39_t1.py | 5 +- .../reset_recovery/test_reset_bip39_t2.py | 5 +- .../test_reset_recovery_bip39.py | 1 - .../test_reset_recovery_slip39_advanced.py | 1 - .../test_reset_recovery_slip39_basic.py | 1 - .../test_reset_slip39_advanced.py | 1 - .../reset_recovery/test_reset_slip39_basic.py | 1 - tests/device_tests/test_language.py | 209 + tests/device_tests/test_msg_applysettings.py | 12 - tests/device_tests/test_msg_backup_device.py | 1 - tests/device_tests/test_msg_loaddevice.py | 4 - tests/device_tests/test_protection_levels.py | 7 +- tests/device_tests/test_sdcard.py | 14 +- .../test_session_id_and_passphrase.py | 28 +- tests/gitlab.py | 21 +- tests/input_flows.py | 101 +- tests/input_flows_helpers.py | 150 +- tests/translations.py | 138 + tests/ui_tests/common.py | 41 +- tests/ui_tests/fixtures.json | 18192 +++++++++++++--- tests/ui_tests/reporting/common.py | 2 +- tests/upgrade_tests/test_firmware_upgrades.py | 15 - tools/check-bitcoin-only | 2 + vendor/fido2-tests | 2 +- 338 files changed, 35662 insertions(+), 6891 deletions(-) create mode 100644 ci/make_nonenglish_tests.py create mode 100644 ci/test-nonenglish.yml create mode 100644 core/embed/rust/librust_fonts.h create mode 100644 core/embed/rust/src/translations/blob.rs create mode 100644 core/embed/rust/src/translations/flash.rs create mode 100644 core/embed/rust/src/translations/generated/mod.rs create mode 100644 core/embed/rust/src/translations/generated/translated_string.rs create mode 100644 core/embed/rust/src/translations/generated/translated_string.rs.mako create mode 100644 core/embed/rust/src/translations/mod.rs create mode 100644 core/embed/rust/src/translations/obj.rs create mode 100644 core/embed/rust/src/translations/public_keys.rs create mode 100644 core/embed/rust/src/translations/translated_string.rs create mode 100644 core/embed/rust/src/trezorhal/translations.rs create mode 100644 core/embed/trezorhal/stm32f4/translations.c create mode 100644 core/embed/trezorhal/translations.h create mode 120000 core/embed/trezorhal/unix/translations.c create mode 100644 core/mocks/generated/trezortranslate.pyi create mode 120000 core/mocks/generated/trezortranslate_keys.pyi create mode 100644 core/mocks/trezortranslate_keys.pyi create mode 100644 core/mocks/trezortranslate_keys.pyi.mako create mode 100644 core/src/apps/management/change_language.py create mode 100644 core/tools/codegen/foreign_chars.py create mode 100644 core/tools/translations/.gitignore create mode 100644 core/tools/translations/check_missing_rust.py create mode 100644 core/tools/translations/check_missing_upy.py create mode 100644 core/tools/translations/flatten_json.py create mode 100644 core/tools/translations/font_widths.json create mode 100644 core/tools/translations/helpers.py create mode 100644 core/tools/translations/rules.json create mode 100644 core/tools/translations/sort_keys.py create mode 100644 core/tools/translations/translate_missing.py create mode 100644 core/tools/translations/validate_same_keys.py create mode 100644 core/tools/translations/validate_strings.py create mode 100644 core/translations/.gitignore create mode 100644 core/translations/cli.py create mode 100644 core/translations/crowdin.py create mode 100644 core/translations/crowdin.yml create mode 100644 core/translations/cs.json create mode 100644 core/translations/de.json create mode 100644 core/translations/en.json create mode 100644 core/translations/es.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_cs.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_de.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_es.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_fr.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_cs.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_de.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_es.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_fr.json create mode 100644 core/translations/fonts/font_pixeloperatormono_regular_8_cs.json create mode 100644 core/translations/fonts/font_pixeloperatormono_regular_8_de.json create mode 100644 core/translations/fonts/font_pixeloperatormono_regular_8_es.json create mode 100644 core/translations/fonts/font_pixeloperatormono_regular_8_fr.json create mode 100644 core/translations/fonts/font_roboto_bold_20_cs.json create mode 100644 core/translations/fonts/font_roboto_bold_20_de.json create mode 100644 core/translations/fonts/font_roboto_bold_20_es.json create mode 100644 core/translations/fonts/font_roboto_bold_20_fr.json create mode 100644 core/translations/fonts/font_roboto_regular_20_cs.json create mode 100644 core/translations/fonts/font_roboto_regular_20_de.json create mode 100644 core/translations/fonts/font_roboto_regular_20_es.json create mode 100644 core/translations/fonts/font_roboto_regular_20_fr.json create mode 100644 core/translations/fonts/font_robotomono_medium_20_cs.json create mode 100644 core/translations/fonts/font_robotomono_medium_20_de.json create mode 100644 core/translations/fonts/font_robotomono_medium_20_es.json create mode 100644 core/translations/fonts/font_robotomono_medium_20_fr.json create mode 100644 core/translations/fonts/font_tthoves_bold_17_cs.json create mode 100644 core/translations/fonts/font_tthoves_bold_17_de.json create mode 100644 core/translations/fonts/font_tthoves_bold_17_es.json create mode 100644 core/translations/fonts/font_tthoves_bold_17_fr.json create mode 100644 core/translations/fonts/font_tthoves_demibold_21_cs.json create mode 100644 core/translations/fonts/font_tthoves_demibold_21_de.json create mode 100644 core/translations/fonts/font_tthoves_demibold_21_es.json create mode 100644 core/translations/fonts/font_tthoves_demibold_21_fr.json create mode 100644 core/translations/fonts/font_tthoves_regular_21_cs.json create mode 100644 core/translations/fonts/font_tthoves_regular_21_de.json create mode 100644 core/translations/fonts/font_tthoves_regular_21_es.json create mode 100644 core/translations/fonts/font_tthoves_regular_21_fr.json create mode 100644 core/translations/fonts/font_unifont_bold_16_cs.json create mode 100644 core/translations/fonts/font_unifont_bold_16_de.json create mode 100644 core/translations/fonts/font_unifont_bold_16_es.json create mode 100644 core/translations/fonts/font_unifont_bold_16_fr.json create mode 100644 core/translations/fonts/font_unifont_regular_16_cs.json create mode 100644 core/translations/fonts/font_unifont_regular_16_de.json create mode 100644 core/translations/fonts/font_unifont_regular_16_es.json create mode 100644 core/translations/fonts/font_unifont_regular_16_fr.json create mode 100644 core/translations/fr.json create mode 100644 core/translations/order.json create mode 100644 core/translations/order.py create mode 100644 core/translations/signatures.json create mode 100644 python/src/trezorlib/_internal/translations.py create mode 100644 tests/device_tests/test_language.py create mode 100644 tests/translations.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f0e80f57c..725034e38 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -46,5 +46,6 @@ include: - ci/build.yml - ci/test.yml - ci/test-hw.yml + - ci/test-nonenglish.yml - ci/posttest.yml - ci/deploy.yml diff --git a/Makefile b/Makefile index fe99a3b7d..8f5cb4163 100644 --- a/Makefile +++ b/Makefile @@ -144,6 +144,6 @@ vendorheader: ## generate vendor header vendorheader_check: ## check that vendor header is up to date ./core/embed/vendorheader/generate.sh --quiet --check -gen: mocks icons templates protobuf ci_docs vendorheader solana_templates ## regenerate auto-generated files from sources +gen: templates mocks icons protobuf ci_docs vendorheader solana ## regenerate auto-generated files from sources -gen_check: mocks_check icons_check templates_check protobuf_check ci_docs_check vendorheader_check solana_templates_check ## check validity of auto-generated files +gen_check: templates_check mocks_check icons_check protobuf_check ci_docs_check vendorheader_check solana_templates_check ## check validity of auto-generated files diff --git a/ci/deploy.yml b/ci/deploy.yml index 32c8e8dfe..5a1cd0683 100644 --- a/ci/deploy.yml +++ b/ci/deploy.yml @@ -261,6 +261,44 @@ ui tests fixtures deploy: tags: - deploy +ui tests fixtures deploy nonenglish: + stage: deploy + variables: + DEPLOY_PATH: "${DEPLOY_BASE_DIR}/ui_tests/" + BUCKET: "data.trezor.io" + GIT_SUBMODULE_STRATEGY: "none" + only: + - schedules # nightly build + - /translations/ # translations branches + before_script: [] # no poetry + interruptible: false + needs: + - core click test czech + - core device test czech + - core device R test czech + - core click R test czech + - core click test german + - core device test german + - core device R test german + - core click R test german + - core click test french + - core device test french + - core device R test french + - core click R test french + - core click test spanish + - core device test spanish + - core device R test spanish + - core click R test spanish + script: + - echo "Deploying to $DEPLOY_PATH" + - rsync --delete -va ci/ui_test_records/* "$DEPLOY_PATH" + - source ${AWS_DEPLOY_DATA} + - aws s3 sync $DEPLOY_PATH s3://$BUCKET/dev/firmware/ui_tests + # This "hack" is needed because aws does not have an easy option to generate autoindex. We fetch the one autogenerated by nginx on local server. + - wget https://firmware.corp.sldev.cz/ui_tests/ -O index.html && aws s3 cp index.html s3://$BUCKET/dev/firmware/ui_tests/ + tags: + - deploy + # sync to aws sync emulators to aws: diff --git a/ci/make_nonenglish_tests.py b/ci/make_nonenglish_tests.py new file mode 100644 index 000000000..5e4a62f56 --- /dev/null +++ b/ci/make_nonenglish_tests.py @@ -0,0 +1,166 @@ +from __future__ import annotations + +import re +from dataclasses import dataclass +from pathlib import Path +from typing import Callable + +HERE = Path(__file__).resolve().parent + +TEST_FILE = HERE / "test-nonenglish.yml" + +LANGS = { + "cs": "czech", + "fr": "french", + "de": "german", + "es": "spanish", +} + +MODELS = ["T", "R"] + + +@dataclass +class Replacement: + start: str + end: str + replacement: str + + +def replace_content_between_markers( + file_path: Path | str, replacements: list[Replacement] +) -> None: + with open(file_path, "r") as file: + content = file.read() + + for replace in replacements: + pattern = rf"({replace.start}.*?{replace.end})" + content = re.sub( + pattern, + f"{replace.start}\n{replace.replacement}\n{replace.end}", + content, + flags=re.DOTALL, + ) + + with open(file_path, "w") as file: + file.write(content) + + +def get_device_test(lang: str, model: str) -> str: + lang_long = LANGS[lang] + + model_or_empty = f" {model}" if model != "T" else "" + model_needs_or_empty = f" {model}" if model != "T" else "" + + return f"""\ +core device{model_or_empty} test {lang_long}: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen{model_needs_or_empty} debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "{model}" + MULTICORE: "4" # more could interfere with other jobs + TEST_LANG: "{lang}" # {lang_long} + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_ui_multicore | ts -s" + after_script: + - mv core/src/.coverage.* core # there will be more coverage files (one per core) + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/junit.xml + - tests/trezor.log + - core/.coverage.* + when: always + expire_in: 1 week + reports: + junit: tests/junit.xml +""" + + +def get_click_test(lang: str, model: str) -> str: + lang_long = LANGS[lang] + + model_or_empty = f" {model}" if model != "T" else "" + model_needs_or_empty = f" {model}" if model != "T" else "" + + return f"""\ +core click{model_or_empty} test {lang_long}: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen{model_needs_or_empty} debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "{model}" + TEST_LANG: "{lang}" # {lang_long} + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_click_ui | ts -s" + after_script: + - mv core/src/.coverage core/.coverage.test_click + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/trezor.log + - tests/junit.xml + - core/.coverage.* + reports: + junit: tests/junit.xml + expire_in: 1 week + when: always +""" + + +def get_all_tests_text(func: Callable[[str, str], str]) -> str: + text = "" + for model in MODELS: + for lang in LANGS: + content = func(lang, model) + text += content + "\n" + return text + + +def fill_device_tests() -> None: + replacement = Replacement( + start=r"##START_DEVICE_TESTS", + end=r"##END_DEVICE_TESTS", + replacement=get_all_tests_text(get_device_test), + ) + replace_content_between_markers(TEST_FILE, [replacement]) + + +def fill_click_tests() -> None: + replacement = Replacement( + start=r"##START_CLICK_TESTS", + end=r"##END_CLICK_TESTS", + replacement=get_all_tests_text(get_click_test), + ) + replace_content_between_markers(TEST_FILE, [replacement]) + + +if __name__ == "__main__": + fill_device_tests() + fill_click_tests() diff --git a/ci/shell.nix b/ci/shell.nix index 5e438b381..434aad5ed 100644 --- a/ci/shell.nix +++ b/ci/shell.nix @@ -97,6 +97,7 @@ stdenvNoCC.mkDerivation ({ bash bloaty # for binsize check + crowdin-cli # for translations curl # for connect tests editorconfig-checker gcc-arm-embedded diff --git a/ci/test-nonenglish.yml b/ci/test-nonenglish.yml new file mode 100644 index 000000000..a9b076aaa --- /dev/null +++ b/ci/test-nonenglish.yml @@ -0,0 +1,587 @@ +# Tests for non-english languages, that run only nightly +# - apart from that, they run also for every branch containing "translations" in its name + +image: registry.gitlab.com/satoshilabs/trezor/trezor-firmware/trezor-firmware-env.nix + +# Caching +.gitlab_caching: &gitlab_caching + cache: + key: "$CI_COMMIT_REF_SLUG" + paths: + - .venv/ + +##START_DEVICE_TESTS +core device test czech: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "T" + MULTICORE: "4" # more could interfere with other jobs + TEST_LANG: "cs" # czech + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_ui_multicore | ts -s" + after_script: + - mv core/src/.coverage.* core # there will be more coverage files (one per core) + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/junit.xml + - tests/trezor.log + - core/.coverage.* + when: always + expire_in: 1 week + reports: + junit: tests/junit.xml + +core device test french: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "T" + MULTICORE: "4" # more could interfere with other jobs + TEST_LANG: "fr" # french + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_ui_multicore | ts -s" + after_script: + - mv core/src/.coverage.* core # there will be more coverage files (one per core) + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/junit.xml + - tests/trezor.log + - core/.coverage.* + when: always + expire_in: 1 week + reports: + junit: tests/junit.xml + +core device test german: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "T" + MULTICORE: "4" # more could interfere with other jobs + TEST_LANG: "de" # german + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_ui_multicore | ts -s" + after_script: + - mv core/src/.coverage.* core # there will be more coverage files (one per core) + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/junit.xml + - tests/trezor.log + - core/.coverage.* + when: always + expire_in: 1 week + reports: + junit: tests/junit.xml + +core device test spanish: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "T" + MULTICORE: "4" # more could interfere with other jobs + TEST_LANG: "es" # spanish + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_ui_multicore | ts -s" + after_script: + - mv core/src/.coverage.* core # there will be more coverage files (one per core) + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/junit.xml + - tests/trezor.log + - core/.coverage.* + when: always + expire_in: 1 week + reports: + junit: tests/junit.xml + +core device R test czech: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen R debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "R" + MULTICORE: "4" # more could interfere with other jobs + TEST_LANG: "cs" # czech + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_ui_multicore | ts -s" + after_script: + - mv core/src/.coverage.* core # there will be more coverage files (one per core) + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/junit.xml + - tests/trezor.log + - core/.coverage.* + when: always + expire_in: 1 week + reports: + junit: tests/junit.xml + +core device R test french: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen R debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "R" + MULTICORE: "4" # more could interfere with other jobs + TEST_LANG: "fr" # french + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_ui_multicore | ts -s" + after_script: + - mv core/src/.coverage.* core # there will be more coverage files (one per core) + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/junit.xml + - tests/trezor.log + - core/.coverage.* + when: always + expire_in: 1 week + reports: + junit: tests/junit.xml + +core device R test german: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen R debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "R" + MULTICORE: "4" # more could interfere with other jobs + TEST_LANG: "de" # german + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_ui_multicore | ts -s" + after_script: + - mv core/src/.coverage.* core # there will be more coverage files (one per core) + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/junit.xml + - tests/trezor.log + - core/.coverage.* + when: always + expire_in: 1 week + reports: + junit: tests/junit.xml + +core device R test spanish: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen R debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "R" + MULTICORE: "4" # more could interfere with other jobs + TEST_LANG: "es" # spanish + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_ui_multicore | ts -s" + after_script: + - mv core/src/.coverage.* core # there will be more coverage files (one per core) + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/junit.xml + - tests/trezor.log + - core/.coverage.* + when: always + expire_in: 1 week + reports: + junit: tests/junit.xml + + +##END_DEVICE_TESTS + +##START_CLICK_TESTS +core click test czech: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "T" + TEST_LANG: "cs" # czech + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_click_ui | ts -s" + after_script: + - mv core/src/.coverage core/.coverage.test_click + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/trezor.log + - tests/junit.xml + - core/.coverage.* + reports: + junit: tests/junit.xml + expire_in: 1 week + when: always + +core click test french: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "T" + TEST_LANG: "fr" # french + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_click_ui | ts -s" + after_script: + - mv core/src/.coverage core/.coverage.test_click + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/trezor.log + - tests/junit.xml + - core/.coverage.* + reports: + junit: tests/junit.xml + expire_in: 1 week + when: always + +core click test german: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "T" + TEST_LANG: "de" # german + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_click_ui | ts -s" + after_script: + - mv core/src/.coverage core/.coverage.test_click + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/trezor.log + - tests/junit.xml + - core/.coverage.* + reports: + junit: tests/junit.xml + expire_in: 1 week + when: always + +core click test spanish: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "T" + TEST_LANG: "es" # spanish + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_click_ui | ts -s" + after_script: + - mv core/src/.coverage core/.coverage.test_click + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/trezor.log + - tests/junit.xml + - core/.coverage.* + reports: + junit: tests/junit.xml + expire_in: 1 week + when: always + +core click R test czech: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen R debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "R" + TEST_LANG: "cs" # czech + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_click_ui | ts -s" + after_script: + - mv core/src/.coverage core/.coverage.test_click + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/trezor.log + - tests/junit.xml + - core/.coverage.* + reports: + junit: tests/junit.xml + expire_in: 1 week + when: always + +core click R test french: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen R debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "R" + TEST_LANG: "fr" # french + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_click_ui | ts -s" + after_script: + - mv core/src/.coverage core/.coverage.test_click + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/trezor.log + - tests/junit.xml + - core/.coverage.* + reports: + junit: tests/junit.xml + expire_in: 1 week + when: always + +core click R test german: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen R debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "R" + TEST_LANG: "de" # german + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_click_ui | ts -s" + after_script: + - mv core/src/.coverage core/.coverage.test_click + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/trezor.log + - tests/junit.xml + - core/.coverage.* + reports: + junit: tests/junit.xml + expire_in: 1 week + when: always + +core click R test spanish: + stage: test + <<: *gitlab_caching + needs: + - core unix frozen R debug build + variables: + TREZOR_PROFILING: "1" # so that we get coverage data + TREZOR_MODEL: "R" + TEST_LANG: "es" # spanish + only: + - schedules # nightly build + - /translations/ # translations branches + script: + - $NIX_SHELL --run "poetry run make -C core test_emu_click_ui | ts -s" + after_script: + - mv core/src/.coverage core/.coverage.test_click + - mv tests/ui_tests/reports/test/ test_ui_report + - $NIX_SHELL --run "poetry run python ci/prepare_ui_artifacts.py | ts -s" + - diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json + artifacts: + name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA" + paths: + - ci/ui_test_records/ + - test_ui_report + - tests/ui_tests/screens/ + - tests/ui_tests/fixtures.suggestion.json + - tests/ui_tests/fixtures.results.json + - tests/trezor.log + - tests/junit.xml + - core/.coverage.* + reports: + junit: tests/junit.xml + expire_in: 1 week + when: always + + +##END_CLICK_TESTS diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto index 2394f2efc..b74d8739c 100644 --- a/common/protob/messages-management.proto +++ b/common/protob/messages-management.proto @@ -161,7 +161,7 @@ message EndSession { } /** - * Request: change language and/or label of the device + * Request: change some property of the device, e.g. label or homescreen * @start * @next Success * @next Failure @@ -180,6 +180,47 @@ message ApplySettings { optional bool hide_passphrase_from_host = 11; // do not show passphrase coming from host } +/** + * Request: change the device language via translation data. + * Does not send the translation data itself, as they are too large for one message. + * Device will request the translation data in chunks. + * @start + * @next TranslationDataRequest + * @next Failure + */ +message ChangeLanguage { + // byte length of the whole translation blob (set to 0 for default language - english) + required uint32 data_length = 1; + // Prompt the user on screen. + // In certain conditions (such as freshly installed device), the confirmation prompt + // is not mandatory. Setting show_display=false will skip the prompt if that's + // the case. If the device does not allow skipping the prompt, a request with + // show_display=false will return a failure. (This way the host can safely try + // to change the language without invoking a prompt.) + // Setting show_display to true will always show the prompt. + // Leaving the option unset will show the prompt only when necessary. + optional bool show_display = 2; +} + +/** + * Response: Device asks for more data from transaction payload. + * @end + * @next TranslationDataAck + */ + message TranslationDataRequest { + required uint32 data_length = 1; // Number of bytes being requested + required uint32 data_offset = 2; // Offset of the first byte being requested +} + +/** + * Request: Translation payload data. + * @next TranslationDataRequest + * @next Success + */ +message TranslationDataAck { + required bytes data_chunk = 1; // Bytes from translation payload +} + /** * Request: set flags of the device * @start @@ -487,11 +528,17 @@ message CancelAuthorization { * @next Success */ message RebootToBootloader { + // Action to be performed after rebooting to bootloader optional BootCommand boot_command = 1 [default=STOP_AND_WAIT]; + // Firmware header to be flashed after rebooting to bootloader optional bytes firmware_header = 2; + // Length of language blob to be installed before upgrading firmware + optional uint32 language_data_length = 3 [default=0]; enum BootCommand { + // Go to bootloader menu STOP_AND_WAIT = 0; + // Connect to host and wait for firmware update INSTALL_UPGRADE = 1; } } diff --git a/common/protob/messages.proto b/common/protob/messages.proto index e54e7ed6a..97203f8db 100644 --- a/common/protob/messages.proto +++ b/common/protob/messages.proto @@ -124,6 +124,9 @@ enum MessageType { MessageType_UnlockBootloader = 96 [(bitcoin_only) = true, (wire_in) = true]; MessageType_AuthenticateDevice = 97 [(bitcoin_only) = true, (wire_out) = true]; MessageType_AuthenticityProof = 98 [(bitcoin_only) = true, (wire_in) = true]; + MessageType_ChangeLanguage = 990 [(bitcoin_only) = true, (wire_in) = true]; + MessageType_TranslationDataRequest = 991 [(bitcoin_only) = true, (wire_out) = true]; + MessageType_TranslationDataAck = 992 [(bitcoin_only) = true, (wire_in) = true]; MessageType_SetU2FCounter = 63 [(wire_in) = true]; MessageType_GetNextU2FCounter = 80 [(wire_in) = true]; diff --git a/common/tools/cointool.py b/common/tools/cointool.py index cfef782c9..b184a57cb 100755 --- a/common/tools/cointool.py +++ b/common/tools/cointool.py @@ -116,6 +116,10 @@ def ascii_filter(s: str) -> str: return re.sub("[^ -\x7e]", "_", s) +def utf8_str_filter(s: str) -> str: + return '"' + repr(s)[1:-1] + '"' + + def make_support_filter( support_info: SupportInfo, ) -> Callable[[str, Coins], Iterator[Coin]]: @@ -126,6 +130,7 @@ def make_support_filter( MAKO_FILTERS = { + "utf8_str": utf8_str_filter, "c_str": c_str_filter, "ascii": ascii_filter, "black_repr": black_repr_filter, diff --git a/core/Makefile b/core/Makefile index ff8136358..168e2d0a2 100644 --- a/core/Makefile +++ b/core/Makefile @@ -34,7 +34,8 @@ TREZOR_MODEL ?= T TREZOR_MEMPERF ?= 0 ADDRESS_SANITIZER ?= 0 CMAKELISTS ?= 0 -PYTEST_TIMEOUT ?= 400 +PYTEST_TIMEOUT ?= 500 +TEST_LANG ?= "en" # OpenOCD interface default. Alternative: ftdi/olimex-arm-usb-tiny-h OPENOCD_INTERFACE ?= stlink @@ -101,11 +102,12 @@ test_rust: ## run rs unit tests -- --test-threads=1 --nocapture test_emu: ## run selected device tests from python-trezor - $(EMU_TEST) $(PYTEST) $(TESTPATH)/device_tests $(TESTOPTS) + $(EMU_TEST) $(PYTEST) $(TESTPATH)/device_tests $(TESTOPTS) --lang=$(TEST_LANG) test_emu_multicore: ## run device tests using multiple cores $(PYTEST) -n $(MULTICORE) $(TESTPATH)/device_tests $(TESTOPTS) --timeout $(PYTEST_TIMEOUT) \ - --control-emulators --model=core --random-order-seed=$(shell echo $$RANDOM) + --control-emulators --model=core --random-order-seed=$(shell echo $$RANDOM) \ + --lang=$(TEST_LANG) test_emu_monero: ## run selected monero device tests from monero-agent cd tests ; $(EMU_TEST) ./run_tests_device_emu_monero.sh $(TESTOPTS) @@ -119,31 +121,33 @@ test_emu_fido2: ## run fido2 device tests $(EMU_TEST) --slip0014 $(PYTEST) --maxfail=5 --sim tests/standard/ --vendor trezor $(TESTOPTS) test_emu_click: ## run click tests - $(EMU_TEST) $(PYTEST) $(TESTPATH)/click_tests $(TESTOPTS) + $(EMU_TEST) $(PYTEST) $(TESTPATH)/click_tests $(TESTOPTS) --lang=$(TEST_LANG) test_emu_click_ui: ## run click tests with UI testing $(EMU_TEST) $(PYTEST) $(TESTPATH)/click_tests $(TESTOPTS) \ - --ui=test --ui-check-missing --do-master-diff + --ui=test --ui-check-missing --do-master-diff --lang=$(TEST_LANG) test_emu_persistence: ## run persistence tests - $(PYTEST) $(TESTPATH)/persistence_tests $(TESTOPTS) + $(PYTEST) $(TESTPATH)/persistence_tests $(TESTOPTS) --lang=$(TEST_LANG) test_emu_persistence_ui: ## run persistence tests with UI testing $(PYTEST) $(TESTPATH)/persistence_tests $(TESTOPTS) \ - --ui=test --ui-check-missing --do-master-diff + --ui=test --ui-check-missing --do-master-diff --lang=$(TEST_LANG) test_emu_ui: ## run ui integration tests $(EMU_TEST) $(PYTEST) $(TESTPATH)/device_tests $(TESTOPTS) \ - --ui=test --ui-check-missing --record-text-layout --do-master-diff + --ui=test --ui-check-missing --record-text-layout --do-master-diff \ + --lang=$(TEST_LANG) test_emu_ui_multicore: ## run ui integration tests using multiple cores $(PYTEST) -n $(MULTICORE) $(TESTPATH)/device_tests $(TESTOPTS) --timeout $(PYTEST_TIMEOUT) \ --ui=test --ui-check-missing --record-text-layout --do-master-diff \ - --control-emulators --model=core --random-order-seed=$(shell echo $$RANDOM) + --control-emulators --model=core --random-order-seed=$(shell echo $$RANDOM) \ + --lang=$(TEST_LANG) test_emu_ui_record: ## record and hash screens for ui integration tests $(EMU_TEST) $(PYTEST) $(TESTPATH)/device_tests $(TESTOPTS) \ - --ui=record --ui-check-missing --do-master-diff + --ui=record --ui-check-missing --do-master-diff --lang=$(TEST_LANG) test_emu_ui_record_multicore: ## quickly record all screens make test_emu_ui_multicore || echo "All errors are recorded in fixtures.json" diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 23d4959e7..e832d3052 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -204,6 +204,7 @@ SOURCE_MOD += [ CPPDEFINES_MOD += [ 'TREZOR_UI2', + 'TRANSLATIONS', ] if TREZOR_MODEL not in ('1', ): @@ -717,6 +718,7 @@ def cargo_build(): if BITCOIN_ONLY == '1': features.append('bitcoin_only') features.append('ui') + features.append('translations') if PYOPT == '0': features.append('ui_debug') diff --git a/core/SConscript.unix b/core/SConscript.unix index 1f50c9733..0b431e115 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -219,6 +219,7 @@ elif TREZOR_MODEL in ('R', ): CPPDEFINES_MOD += [ 'TREZOR_UI2', + 'TRANSLATIONS', ] if TREZOR_MODEL not in ('1', ): CPPDEFINES_MOD += [ @@ -372,6 +373,7 @@ SOURCE_MICROPYTHON = [ ] SOURCE_UNIX = [ + 'embed/trezorhal/unix/translations.c', 'embed/trezorhal/unix/common.c', 'embed/trezorhal/unix/display-unix.c', 'embed/trezorhal/unix/flash.c', @@ -795,6 +797,7 @@ def cargo_build(): if BITCOIN_ONLY == '1': features.append('bitcoin_only') features.append('ui') + features.append('translations') if PYOPT == '0': features.append('debug') if DMA2D: diff --git a/core/embed/extmod/modtrezorutils/modtrezorutils.c b/core/embed/extmod/modtrezorutils/modtrezorutils.c index 33f181381..00110718e 100644 --- a/core/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/core/embed/extmod/modtrezorutils/modtrezorutils.c @@ -295,17 +295,18 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN( mod_trezorutils_reboot_to_bootloader_obj, 0, 2, mod_trezorutils_reboot_to_bootloader); -/// def check_firmware_header( -/// header : bytes -/// ) -> dict: -/// """ -/// Checks firmware image and vendor header and returns -/// { "version": (major, minor, patch), -/// "vendor": string, -/// "fingerprint": bytes, -/// "hash": bytes -/// } -/// """ +/// VersionTuple = Tuple[int, int, int, int] +/// +/// class FirmwareHeaderInfo(NamedTuple): +/// version: VersionTuple +/// vendor: str +/// fingerprint: bytes +/// hash: bytes +/// +/// mock:global +/// +/// def check_firmware_header(header : bytes) -> FirmwareHeaderInfo: +/// """Parses incoming firmware header and returns information about it.""" STATIC mp_obj_t mod_trezorutils_check_firmware_header(mp_obj_t header) { mp_buffer_info_t header_buf = {0}; mp_get_buffer_raise(header, &header_buf, MP_BUFFER_READ); @@ -313,23 +314,18 @@ STATIC mp_obj_t mod_trezorutils_check_firmware_header(mp_obj_t header) { firmware_header_info_t info; if (sectrue == check_firmware_header(header_buf.buf, header_buf.len, &info)) { - mp_obj_t version[3] = {mp_obj_new_int(info.ver_major), - mp_obj_new_int(info.ver_minor), - mp_obj_new_int(info.ver_patch)}; - - mp_obj_t result = mp_obj_new_dict(4); - mp_obj_dict_store(result, MP_ROM_QSTR(MP_QSTR_version), - mp_obj_new_tuple(MP_ARRAY_SIZE(version), version)); - mp_obj_dict_store( - result, MP_ROM_QSTR(MP_QSTR_vendor), - mp_obj_new_str_copy(&mp_type_str, info.vstr, info.vstr_len)); - mp_obj_dict_store( - result, MP_ROM_QSTR(MP_QSTR_fingerprint), - mp_obj_new_bytes(info.fingerprint, sizeof(info.fingerprint))); - mp_obj_dict_store(result, MP_ROM_QSTR(MP_QSTR_hash), - mp_obj_new_bytes(info.hash, sizeof(info.hash))); - - return result; + mp_obj_t version[4] = { + mp_obj_new_int(info.ver_major), mp_obj_new_int(info.ver_minor), + mp_obj_new_int(info.ver_patch), mp_obj_new_int(info.ver_build)}; + + static const qstr fields[4] = {MP_QSTR_version, MP_QSTR_vendor, + MP_QSTR_fingerprint, MP_QSTR_hash}; + const mp_obj_t values[4] = { + mp_obj_new_tuple(MP_ARRAY_SIZE(version), version), + mp_obj_new_str_copy(&mp_type_str, info.vstr, info.vstr_len), + mp_obj_new_bytes(info.fingerprint, sizeof(info.fingerprint)), + mp_obj_new_bytes(info.hash, sizeof(info.hash))}; + return mp_obj_new_attrtuple(fields, MP_ARRAY_SIZE(fields), values); } mp_raise_ValueError("Invalid value."); @@ -370,14 +366,16 @@ STATIC mp_obj_str_t mod_trezorutils_full_name_obj = { sizeof(MODEL_FULL_NAME) - 1, (const byte *)MODEL_FULL_NAME}; +STATIC mp_obj_tuple_t mod_trezorutils_version_obj = { + {&mp_type_tuple}, + 4, + {MP_OBJ_NEW_SMALL_INT(VERSION_MAJOR), MP_OBJ_NEW_SMALL_INT(VERSION_MINOR), + MP_OBJ_NEW_SMALL_INT(VERSION_PATCH), MP_OBJ_NEW_SMALL_INT(VERSION_BUILD)}}; + /// SCM_REVISION: bytes /// """Git commit hash of the firmware.""" -/// VERSION_MAJOR: int -/// """Major version.""" -/// VERSION_MINOR: int -/// """Minor version.""" -/// VERSION_PATCH: int -/// """Patch version.""" +/// VERSION: VersionTuple +/// """Firmware version as a tuple (major, minor, patch, build).""" /// USE_SD_CARD: bool /// """Whether the hardware supports SD card.""" /// USE_BACKLIGHT: bool @@ -419,9 +417,7 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { // various built-in constants {MP_ROM_QSTR(MP_QSTR_SCM_REVISION), MP_ROM_PTR(&mod_trezorutils_revision_obj)}, - {MP_ROM_QSTR(MP_QSTR_VERSION_MAJOR), MP_ROM_INT(VERSION_MAJOR)}, - {MP_ROM_QSTR(MP_QSTR_VERSION_MINOR), MP_ROM_INT(VERSION_MINOR)}, - {MP_ROM_QSTR(MP_QSTR_VERSION_PATCH), MP_ROM_INT(VERSION_PATCH)}, + {MP_ROM_QSTR(MP_QSTR_VERSION), MP_ROM_PTR(&mod_trezorutils_version_obj)}, #ifdef USE_SD_CARD {MP_ROM_QSTR(MP_QSTR_USE_SD_CARD), mp_const_true}, #else diff --git a/core/embed/extmod/rustmods.c b/core/embed/extmod/rustmods.c index 438c383f1..2673bceb5 100644 --- a/core/embed/extmod/rustmods.c +++ b/core/embed/extmod/rustmods.c @@ -18,6 +18,7 @@ */ #include "librust.h" +#include "librust_fonts.h" #include "py/runtime.h" #if MICROPY_PY_TREZORUI2 @@ -27,3 +28,7 @@ MP_REGISTER_MODULE(MP_QSTR_trezorui2, mp_module_trezorui2); #if MICROPY_PY_TREZORPROTO MP_REGISTER_MODULE(MP_QSTR_trezorproto, mp_module_trezorproto); #endif + +#if MICROPY_PY_TREZORTRANSLATE +MP_REGISTER_MODULE(MP_QSTR_trezortranslate, mp_module_trezortranslate); +#endif diff --git a/core/embed/firmware/mpconfigport.h b/core/embed/firmware/mpconfigport.h index 56a1c056b..b80f257c6 100644 --- a/core/embed/firmware/mpconfigport.h +++ b/core/embed/firmware/mpconfigport.h @@ -163,6 +163,7 @@ #define MICROPY_PY_TREZORUI (1) #define MICROPY_PY_TREZORUTILS (1) #define MICROPY_PY_TREZORPROTO (1) +#define MICROPY_PY_TREZORTRANSLATE (1) #define MICROPY_PY_TREZORUI2 (1) #ifdef SYSTEM_VIEW diff --git a/core/embed/lib/display.c b/core/embed/lib/display.c index 95c48b0f6..5c99bfaff 100644 --- a/core/embed/lib/display.c +++ b/core/embed/lib/display.c @@ -99,9 +99,9 @@ void display_text_render_buffer(const char *text, int textlen, int font, int baseline = font_baseline(font); // render glyphs - for (int c_idx = 0; c_idx < textlen; c_idx++) { - const uint8_t *g = font_get_glyph(font, (uint8_t)text[c_idx]); - if (!g) continue; + font_glyph_iter_t iter = font_glyph_iter_init(font, (uint8_t *)text, textlen); + const uint8_t *g = NULL; + while (font_next_glyph(&iter, &g)) { const uint8_t w = g[0]; // width const uint8_t h = g[1]; // height const uint8_t adv = g[2]; // advance @@ -171,9 +171,9 @@ static void display_text_render(int x, int y, const char *text, int textlen, set_color_table(colortable, fgcolor, bgcolor); // render glyphs - for (int c_idx = 0; c_idx < textlen; c_idx++) { - const uint8_t *g = font_get_glyph(font, (uint8_t)text[c_idx]); - if (!g) continue; + font_glyph_iter_t iter = font_glyph_iter_init(font, (uint8_t *)text, textlen); + const uint8_t *g = NULL; + while (font_next_glyph(&iter, &g)) { const uint8_t w = g[0]; // width const uint8_t h = g[1]; // height const uint8_t adv = g[2]; // advance @@ -234,9 +234,9 @@ static void display_text_render(int x, int y, const char *text, int textlen, set_color_table(colortable, fgcolor, bgcolor); // render glyphs - for (int i = 0; i < textlen; i++) { - const uint8_t *g = font_get_glyph(font, (uint8_t)text[i]); - if (!g) continue; + font_glyph_iter_t iter = font_glyph_iter_init(font, (uint8_t *)text, textlen); + const uint8_t *g = NULL; + while (font_next_glyph(&iter, &g)) { const uint8_t w = g[0]; // width const uint8_t h = g[1]; // height const uint8_t adv = g[2]; // advance diff --git a/core/embed/lib/fonts/font_pixeloperator_bold_8.c b/core/embed/lib/fonts/font_pixeloperator_bold_8.c index 57590fc0e..5bdd5e403 100644 --- a/core/embed/lib/fonts/font_pixeloperator_bold_8.c +++ b/core/embed/lib/fonts/font_pixeloperator_bold_8.c @@ -102,7 +102,7 @@ /* } */ static const uint8_t Font_PixelOperator_Bold_8_glyph_125[] = { 5, 7, 6, 0, 7, 225, 140, 51, 27, 128 }; /* ~ */ static const uint8_t Font_PixelOperator_Bold_8_glyph_126[] = { 7, 2, 8, 0, 7, 119, 184 }; -const uint8_t Font_PixelOperator_Bold_8_glyph_nonprintable[] = { 6, 7, 7, 0, 7, 132, 207, 57, 207, 252, 255 }; +/* ? */ const uint8_t Font_PixelOperator_Bold_8_glyph_nonprintable[] = { 6, 7, 7, 0, 7, 132, 207, 57, 207, 252, 255 }; const uint8_t * const Font_PixelOperator_Bold_8[126 + 1 - 32] = { Font_PixelOperator_Bold_8_glyph_32, diff --git a/core/embed/lib/fonts/font_pixeloperator_regular_8.c b/core/embed/lib/fonts/font_pixeloperator_regular_8.c index 955928f18..ba7a412dd 100644 --- a/core/embed/lib/fonts/font_pixeloperator_regular_8.c +++ b/core/embed/lib/fonts/font_pixeloperator_regular_8.c @@ -102,7 +102,7 @@ /* } */ static const uint8_t Font_PixelOperator_Regular_8_glyph_125[] = { 4, 7, 6, 0, 7, 194, 33, 34, 192 }; /* ~ */ static const uint8_t Font_PixelOperator_Regular_8_glyph_126[] = { 6, 2, 7, 0, 7, 102, 96 }; -const uint8_t Font_PixelOperator_Regular_8_glyph_nonprintable[] = { 5, 7, 6, 0, 7, 139, 189, 221, 255, 127 }; +/* ? */ const uint8_t Font_PixelOperator_Regular_8_glyph_nonprintable[] = { 5, 7, 6, 0, 7, 139, 189, 221, 255, 127 }; const uint8_t * const Font_PixelOperator_Regular_8[126 + 1 - 32] = { Font_PixelOperator_Regular_8_glyph_32, diff --git a/core/embed/lib/fonts/font_pixeloperatormono_regular_8.c b/core/embed/lib/fonts/font_pixeloperatormono_regular_8.c index 41459a8fc..ab12ebffd 100644 --- a/core/embed/lib/fonts/font_pixeloperatormono_regular_8.c +++ b/core/embed/lib/fonts/font_pixeloperatormono_regular_8.c @@ -105,7 +105,7 @@ /* } */ static const uint8_t Font_PixelOperatorMono_Regular_8_glyph_125[] = { 4, 7, 7, 0, 7, 194, 33, 34, 192 }; /* ~ */ static const uint8_t Font_PixelOperatorMono_Regular_8_glyph_126[] = { 6, 2, 7, 0, 7, 102, 96 }; -const uint8_t Font_PixelOperatorMono_Regular_8_glyph_nonprintable[] = { 5, 7, 7, 0, 7, 139, 189, 221, 255, 127 }; +/* ? */ const uint8_t Font_PixelOperatorMono_Regular_8_glyph_nonprintable[] = { 5, 7, 7, 0, 7, 139, 189, 221, 255, 127 }; const uint8_t * const Font_PixelOperatorMono_Regular_8[126 + 1 - 32] = { Font_PixelOperatorMono_Regular_8_glyph_32, diff --git a/core/embed/lib/fonts/font_roboto_bold_20.c b/core/embed/lib/fonts/font_roboto_bold_20.c index a543c80d9..225385bca 100644 --- a/core/embed/lib/fonts/font_roboto_bold_20.c +++ b/core/embed/lib/fonts/font_roboto_bold_20.c @@ -102,7 +102,7 @@ /* } */ static const uint8_t Font_Roboto_Bold_20_glyph_125[] = { 7, 20, 7, 0, 16, 180, 3, 0, 0, 248, 79, 0, 0, 176, 239, 0, 0, 64, 255, 3, 0, 32, 255, 5, 0, 32, 255, 6, 0, 32, 255, 6, 0, 16, 255, 7, 0, 0, 252, 45, 0, 0, 210, 255, 2, 0, 210, 255, 2, 0, 252, 45, 0, 16, 255, 7, 0, 32, 255, 6, 0, 32, 255, 6, 0, 32, 255, 5, 0, 64, 255, 3, 0, 176, 239, 0, 0, 248, 79, 0, 0, 180, 3, 0, 0 }; /* ~ */ static const uint8_t Font_Roboto_Bold_20_glyph_126[] = { 11, 5, 13, 1, 8, 96, 254, 60, 0, 162, 9, 245, 255, 255, 6, 249, 12, 252, 108, 252, 255, 255, 6, 237, 3, 128, 255, 175, 0, 0, 0, 0, 65, 2, 0 }; -const uint8_t Font_Roboto_Bold_20_glyph_nonprintable[] = { 10, 14, 10, 0, 14, 255, 40, 16, 163, 255, 79, 0, 0, 0, 247, 11, 16, 137, 0, 240, 8, 160, 255, 5, 192, 255, 255, 255, 4, 208, 255, 255, 175, 0, 243, 255, 255, 10, 16, 253, 255, 239, 0, 209, 255, 255, 143, 0, 251, 255, 255, 111, 16, 255, 255, 255, 255, 255, 255, 255, 255, 159, 65, 255, 255, 255, 47, 0, 252, 255, 255, 143, 64, 255, 255 }; +/* ? */ const uint8_t Font_Roboto_Bold_20_glyph_nonprintable[] = { 10, 14, 10, 0, 14, 255, 40, 16, 163, 255, 79, 0, 0, 0, 247, 11, 16, 137, 0, 240, 8, 160, 255, 5, 192, 255, 255, 255, 4, 208, 255, 255, 175, 0, 243, 255, 255, 10, 16, 253, 255, 239, 0, 209, 255, 255, 143, 0, 251, 255, 255, 111, 16, 255, 255, 255, 255, 255, 255, 255, 255, 159, 65, 255, 255, 255, 47, 0, 252, 255, 255, 143, 64, 255, 255 }; const uint8_t * const Font_Roboto_Bold_20[126 + 1 - 32] = { Font_Roboto_Bold_20_glyph_32, diff --git a/core/embed/lib/fonts/font_roboto_regular_20.c b/core/embed/lib/fonts/font_roboto_regular_20.c index 161b9bde1..64f3d6870 100644 --- a/core/embed/lib/fonts/font_roboto_regular_20.c +++ b/core/embed/lib/fonts/font_roboto_regular_20.c @@ -102,7 +102,7 @@ /* } */ static const uint8_t Font_Roboto_Regular_20_glyph_125[] = { 7, 20, 7, 0, 16, 152, 1, 0, 0, 228, 29, 0, 0, 48, 159, 0, 0, 0, 238, 0, 0, 0, 252, 0, 0, 0, 252, 0, 0, 0, 252, 0, 0, 0, 250, 2, 0, 0, 244, 27, 0, 0, 112, 255, 1, 0, 209, 143, 0, 0, 248, 5, 0, 0, 251, 1, 0, 0, 252, 0, 0, 0, 252, 0, 0, 0, 252, 0, 0, 0, 222, 0, 0, 80, 143, 0, 0, 229, 29, 0, 0, 152, 1, 0, 0 }; /* ~ */ static const uint8_t Font_Roboto_Regular_20_glyph_126[] = { 12, 4, 14, 1, 8, 64, 253, 109, 0, 32, 59, 243, 173, 254, 43, 161, 31, 249, 1, 144, 255, 255, 7, 50, 0, 0, 115, 56, 0 }; -const uint8_t Font_Roboto_Regular_20_glyph_nonprintable[] = { 9, 14, 9, 0, 14, 255, 57, 16, 213, 255, 111, 16, 69, 16, 254, 14, 242, 255, 8, 247, 125, 250, 255, 12, 245, 255, 255, 255, 10, 248, 255, 255, 239, 1, 254, 255, 255, 46, 160, 255, 255, 255, 3, 250, 255, 255, 191, 96, 255, 255, 255, 143, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 160, 255, 255, 255, 159, 160, 255, 255 }; +/* ? */ const uint8_t Font_Roboto_Regular_20_glyph_nonprintable[] = { 9, 14, 9, 0, 14, 255, 57, 16, 213, 255, 111, 16, 69, 16, 254, 14, 242, 255, 8, 247, 125, 250, 255, 12, 245, 255, 255, 255, 10, 248, 255, 255, 239, 1, 254, 255, 255, 46, 160, 255, 255, 255, 3, 250, 255, 255, 191, 96, 255, 255, 255, 143, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 160, 255, 255, 255, 159, 160, 255, 255 }; const uint8_t * const Font_Roboto_Regular_20[126 + 1 - 32] = { Font_Roboto_Regular_20_glyph_32, diff --git a/core/embed/lib/fonts/font_robotomono_medium_20.c b/core/embed/lib/fonts/font_robotomono_medium_20.c index 011b49df9..72884c1b2 100644 --- a/core/embed/lib/fonts/font_robotomono_medium_20.c +++ b/core/embed/lib/fonts/font_robotomono_medium_20.c @@ -102,7 +102,7 @@ /* } */ static const uint8_t Font_RobotoMono_Medium_20_glyph_125[] = { 7, 20, 12, 3, 16, 117, 1, 0, 0, 249, 30, 0, 0, 112, 175, 0, 0, 16, 255, 0, 0, 0, 255, 2, 0, 0, 255, 3, 0, 0, 255, 3, 0, 0, 254, 4, 0, 0, 248, 28, 0, 0, 144, 255, 11, 0, 144, 255, 10, 0, 248, 28, 0, 0, 254, 4, 0, 0, 255, 3, 0, 0, 255, 3, 0, 0, 255, 2, 0, 32, 255, 0, 0, 144, 159, 0, 0, 250, 29, 0, 0, 100, 0, 0, 0 }; /* ~ */ static const uint8_t Font_RobotoMono_Medium_20_glyph_126[] = { 12, 5, 12, 0, 8, 64, 237, 76, 0, 32, 22, 242, 255, 255, 8, 144, 63, 248, 6, 229, 239, 253, 14, 149, 0, 32, 251, 239, 3, 0, 0, 0, 16, 2, 0 }; -const uint8_t Font_RobotoMono_Medium_20_glyph_nonprintable[] = { 10, 16, 12, 1, 15, 255, 207, 153, 251, 255, 239, 3, 0, 16, 250, 47, 0, 102, 2, 208, 12, 176, 255, 14, 128, 174, 250, 255, 47, 112, 255, 255, 255, 13, 160, 255, 255, 255, 3, 242, 255, 255, 79, 16, 253, 255, 255, 5, 209, 255, 255, 255, 0, 251, 255, 255, 255, 34, 254, 255, 255, 255, 255, 255, 255, 255, 255, 153, 255, 255, 255, 175, 0, 250, 255, 255, 207, 0, 253, 255, 255, 255, 255, 255, 255 }; +/* ? */ const uint8_t Font_RobotoMono_Medium_20_glyph_nonprintable[] = { 10, 16, 12, 1, 15, 255, 207, 153, 251, 255, 239, 3, 0, 16, 250, 47, 0, 102, 2, 208, 12, 176, 255, 14, 128, 174, 250, 255, 47, 112, 255, 255, 255, 13, 160, 255, 255, 255, 3, 242, 255, 255, 79, 16, 253, 255, 255, 5, 209, 255, 255, 255, 0, 251, 255, 255, 255, 34, 254, 255, 255, 255, 255, 255, 255, 255, 255, 153, 255, 255, 255, 175, 0, 250, 255, 255, 207, 0, 253, 255, 255, 255, 255, 255, 255 }; const uint8_t * const Font_RobotoMono_Medium_20[126 + 1 - 32] = { Font_RobotoMono_Medium_20_glyph_32, diff --git a/core/embed/lib/fonts/font_tthoves_bold_17.c b/core/embed/lib/fonts/font_tthoves_bold_17.c index 314a42fbc..992febaa2 100644 --- a/core/embed/lib/fonts/font_tthoves_bold_17.c +++ b/core/embed/lib/fonts/font_tthoves_bold_17.c @@ -102,7 +102,7 @@ /* } */ static const uint8_t Font_TTHoves_Bold_17_glyph_125[] = { 7, 17, 7, 0, 13, 65, 3, 0, 0, 246, 223, 1, 0, 246, 255, 10, 0, 16, 254, 13, 0, 0, 251, 13, 0, 0, 251, 13, 0, 0, 251, 14, 0, 0, 248, 207, 0, 0, 128, 255, 0, 0, 210, 255, 0, 0, 249, 127, 0, 0, 251, 14, 0, 0, 251, 13, 0, 0, 251, 13, 0, 81, 255, 12, 0, 246, 255, 8, 0, 246, 158, 0, 0 }; /* ~ */ static const uint8_t Font_TTHoves_Bold_17_glyph_126[] = { 10, 4, 10, 0, 7, 0, 98, 2, 0, 0, 128, 255, 159, 246, 143, 242, 255, 255, 255, 79, 245, 63, 180, 239, 7 }; -const uint8_t Font_TTHoves_Bold_17_glyph_nonprintable[] = { 9, 12, 9, 0, 12, 255, 40, 32, 230, 255, 63, 0, 0, 16, 254, 10, 32, 39, 0, 248, 90, 213, 207, 0, 246, 255, 255, 95, 0, 249, 255, 223, 2, 96, 255, 255, 95, 0, 250, 255, 255, 47, 64, 255, 255, 255, 239, 238, 255, 255, 255, 63, 99, 255, 255, 255, 15, 48, 255, 255, 255, 15, 48, 255, 255 }; +/* ? */ const uint8_t Font_TTHoves_Bold_17_glyph_nonprintable[] = { 9, 12, 9, 0, 12, 255, 40, 32, 230, 255, 63, 0, 0, 16, 254, 10, 32, 39, 0, 248, 90, 213, 207, 0, 246, 255, 255, 95, 0, 249, 255, 223, 2, 96, 255, 255, 95, 0, 250, 255, 255, 47, 64, 255, 255, 255, 239, 238, 255, 255, 255, 63, 99, 255, 255, 255, 15, 48, 255, 255, 255, 15, 48, 255, 255 }; const uint8_t * const Font_TTHoves_Bold_17[126 + 1 - 32] = { Font_TTHoves_Bold_17_glyph_32, diff --git a/core/embed/lib/fonts/font_tthoves_demibold_21.c b/core/embed/lib/fonts/font_tthoves_demibold_21.c index 9070998b3..4014a6fb5 100644 --- a/core/embed/lib/fonts/font_tthoves_demibold_21.c +++ b/core/embed/lib/fonts/font_tthoves_demibold_21.c @@ -102,7 +102,7 @@ /* } */ static const uint8_t Font_TTHoves_DemiBold_21_glyph_125[] = { 7, 20, 8, 0, 16, 97, 37, 0, 0, 244, 255, 8, 0, 244, 255, 47, 0, 0, 248, 79, 0, 0, 244, 95, 0, 0, 244, 95, 0, 0, 244, 95, 0, 0, 244, 95, 0, 0, 242, 175, 1, 0, 160, 255, 12, 0, 0, 249, 12, 0, 208, 255, 10, 0, 243, 143, 0, 0, 244, 95, 0, 0, 244, 95, 0, 0, 244, 95, 0, 0, 245, 95, 0, 97, 252, 79, 0, 244, 255, 14, 0, 244, 207, 3, 0 }; /* ~ */ static const uint8_t Font_TTHoves_DemiBold_21_glyph_126[] = { 12, 5, 12, 0, 8, 0, 215, 158, 1, 144, 73, 112, 255, 255, 61, 245, 111, 224, 255, 254, 255, 255, 47, 241, 143, 64, 254, 255, 9, 64, 37, 0, 113, 72, 0 }; -const uint8_t Font_TTHoves_DemiBold_21_glyph_nonprintable[] = { 11, 15, 11, 0, 15, 255, 93, 2, 98, 254, 255, 175, 0, 0, 0, 192, 255, 30, 0, 100, 2, 16, 255, 11, 80, 255, 63, 0, 252, 157, 217, 255, 127, 0, 250, 255, 255, 255, 30, 0, 253, 255, 255, 159, 0, 80, 255, 255, 255, 9, 0, 248, 255, 255, 255, 2, 176, 255, 255, 255, 255, 0, 244, 255, 255, 255, 255, 85, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 17, 245, 255, 255, 255, 239, 0, 244, 255, 255, 255, 239, 0, 244, 255, 255 }; +/* ? */ const uint8_t Font_TTHoves_DemiBold_21_glyph_nonprintable[] = { 11, 15, 11, 0, 15, 255, 93, 2, 98, 254, 255, 175, 0, 0, 0, 192, 255, 30, 0, 100, 2, 16, 255, 11, 80, 255, 63, 0, 252, 157, 217, 255, 127, 0, 250, 255, 255, 255, 30, 0, 253, 255, 255, 159, 0, 80, 255, 255, 255, 9, 0, 248, 255, 255, 255, 2, 176, 255, 255, 255, 255, 0, 244, 255, 255, 255, 255, 85, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 17, 245, 255, 255, 255, 239, 0, 244, 255, 255, 255, 239, 0, 244, 255, 255 }; const uint8_t * const Font_TTHoves_DemiBold_21[126 + 1 - 32] = { Font_TTHoves_DemiBold_21_glyph_32, diff --git a/core/embed/lib/fonts/font_tthoves_regular_21.c b/core/embed/lib/fonts/font_tthoves_regular_21.c index f5f8f23b9..aceee1787 100644 --- a/core/embed/lib/fonts/font_tthoves_regular_21.c +++ b/core/embed/lib/fonts/font_tthoves_regular_21.c @@ -102,7 +102,7 @@ /* } */ static const uint8_t Font_TTHoves_Regular_21_glyph_125[] = { 6, 20, 7, 0, 16, 81, 3, 0, 244, 143, 0, 0, 250, 0, 0, 247, 1, 0, 247, 1, 0, 247, 1, 0, 247, 1, 0, 247, 1, 0, 246, 3, 0, 209, 77, 0, 48, 126, 0, 243, 25, 0, 247, 1, 0, 247, 1, 0, 247, 1, 0, 247, 1, 0, 247, 1, 0, 247, 1, 97, 237, 0, 244, 77, 0 }; /* ~ */ static const uint8_t Font_TTHoves_Regular_21_glyph_126[] = { 11, 4, 12, 0, 8, 0, 97, 21, 0, 48, 5, 64, 255, 239, 3, 208, 12, 192, 61, 211, 159, 251, 7, 224, 8, 0, 233, 142, 0 }; -const uint8_t Font_TTHoves_Regular_21_glyph_nonprintable[] = { 10, 15, 11, 0, 15, 255, 76, 17, 163, 255, 159, 0, 84, 1, 246, 14, 226, 255, 79, 176, 10, 250, 255, 239, 96, 239, 255, 255, 255, 64, 255, 255, 255, 207, 96, 255, 255, 255, 46, 192, 255, 255, 175, 1, 251, 255, 255, 10, 211, 255, 255, 255, 4, 254, 255, 255, 255, 19, 255, 255, 255, 255, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 255, 255, 255, 255, 1, 255, 255 }; +/* ? */ const uint8_t Font_TTHoves_Regular_21_glyph_nonprintable[] = { 10, 15, 11, 0, 15, 255, 76, 17, 163, 255, 159, 0, 84, 1, 246, 14, 226, 255, 79, 176, 10, 250, 255, 239, 96, 239, 255, 255, 255, 64, 255, 255, 255, 207, 96, 255, 255, 255, 46, 192, 255, 255, 175, 1, 251, 255, 255, 10, 211, 255, 255, 255, 4, 254, 255, 255, 255, 19, 255, 255, 255, 255, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 35, 255, 255, 255, 255, 1, 255, 255 }; const uint8_t * const Font_TTHoves_Regular_21[126 + 1 - 32] = { Font_TTHoves_Regular_21_glyph_32, diff --git a/core/embed/lib/fonts/font_unifont_bold_16.c b/core/embed/lib/fonts/font_unifont_bold_16.c index ad4097cae..975620b90 100644 --- a/core/embed/lib/fonts/font_unifont_bold_16.c +++ b/core/embed/lib/fonts/font_unifont_bold_16.c @@ -102,7 +102,7 @@ /* } */ static const uint8_t Font_Unifont_Bold_16_glyph_125[] = { 5, 13, 7, 0, 11, 225, 140, 198, 24, 102, 99, 12, 110, 0 }; /* ~ */ static const uint8_t Font_Unifont_Bold_16_glyph_126[] = { 7, 3, 8, 0, 11, 99, 118, 48 }; -const uint8_t Font_Unifont_Bold_16_glyph_nonprintable[] = { 7, 10, 8, 0, 10, 130, 112, 231, 207, 60, 249, 255, 231, 207 }; +/* ? */ const uint8_t Font_Unifont_Bold_16_glyph_nonprintable[] = { 6, 10, 7, 0, 10, 5, 199, 60, 231, 60, 255, 207, 63 }; const uint8_t * const Font_Unifont_Bold_16[126 + 1 - 32] = { Font_Unifont_Bold_16_glyph_32, diff --git a/core/embed/lib/fonts/font_unifont_regular_16.c b/core/embed/lib/fonts/font_unifont_regular_16.c index 93eaadc25..8ef83037c 100644 --- a/core/embed/lib/fonts/font_unifont_regular_16.c +++ b/core/embed/lib/fonts/font_unifont_regular_16.c @@ -106,7 +106,7 @@ /* } */ static const uint8_t Font_Unifont_Regular_16_glyph_125[] = { 4, 13, 7, 1, 11, 194, 36, 66, 18, 68, 34, 192 }; /* ~ */ static const uint8_t Font_Unifont_Regular_16_glyph_126[] = { 7, 3, 8, 0, 11, 99, 38, 48 }; // < --- advanced changed from 7 to 8 -const uint8_t Font_Unifont_Regular_16_glyph_nonprintable[] = { 6, 10, 7, 0, 10, 133, 231, 190, 247, 190, 255, 239, 191 }; +/* ? */ const uint8_t Font_Unifont_Regular_16_glyph_nonprintable[] = { 6, 10, 7, 0, 10, 133, 231, 190, 247, 190, 255, 239, 191 }; const uint8_t * const Font_Unifont_Regular_16[126 + 1 - 32] = { Font_Unifont_Regular_16_glyph_32, diff --git a/core/embed/lib/fonts/fonts.c b/core/embed/lib/fonts/fonts.c index 862634620..76b528ed9 100644 --- a/core/embed/lib/fonts/fonts.c +++ b/core/embed/lib/fonts/fonts.c @@ -18,39 +18,15 @@ */ #include "fonts.h" +#include +#include +#include #include +#ifdef TRANSLATIONS +#include "librust_fonts.h" +#endif -static uint8_t convert_char(const uint8_t c) { - static char last_was_utf8 = 0; - - // non-printable ASCII character - if (c < ' ') { - last_was_utf8 = 0; - return 0x7F; - } - - // regular ASCII character - if (c < 0x80) { - last_was_utf8 = 0; - return c; - } - - // UTF-8 handling: https://en.wikipedia.org/wiki/UTF-8#Encoding - - // bytes 11xxxxxx are first bytes of UTF-8 characters - if (c >= 0xC0) { - last_was_utf8 = 1; - return 0x7F; - } - - if (last_was_utf8) { - // bytes 10xxxxxx can be successive UTF-8 characters ... - return 0; // skip glyph - } else { - // ... or they are just non-printable ASCII characters - return 0x7F; - } -} +#define UNICODE_BADCHAR 0xFFFD int font_height(int font) { switch (font) { @@ -130,9 +106,117 @@ int font_baseline(int font) { return 0; } -const uint8_t *font_get_glyph(int font, uint8_t c) { - c = convert_char(c); - if (!c) return 0; +font_glyph_iter_t font_glyph_iter_init(const int font, const uint8_t *text, + const int len) { + return (font_glyph_iter_t){ + .font = font, + .text = text, + .remaining = len, + }; +} + +#define IS_UTF8_CONTINUE(c) (((c)&0b11000000) == 0b10000000) + +static uint16_t next_utf8_codepoint(font_glyph_iter_t *iter) { + uint16_t out; + assert(iter->remaining > 0); + // 1-byte UTF-8 character + if (iter->text[0] < 0x7f) { + out = iter->text[0]; + ++iter->text; + --iter->remaining; + return out; + } + // 2-byte UTF-8 character + if (iter->remaining >= 2 && ((iter->text[0] & 0b11100000) == 0b11000000) && + IS_UTF8_CONTINUE(iter->text[1])) { + out = (((uint16_t)iter->text[0] & 0b00011111) << 6) | + (iter->text[1] & 0b00111111); + iter->text += 2; + iter->remaining -= 2; + return out; + } + // 3-byte UTF-8 character + if (iter->remaining >= 3 && ((iter->text[0] & 0b11110000) == 0b11100000) && + IS_UTF8_CONTINUE(iter->text[1]) && IS_UTF8_CONTINUE(iter->text[2])) { + out = (((uint16_t)iter->text[0] & 0b00001111) << 12) | + (((uint16_t)iter->text[1] & 0b00111111) << 6) | + (iter->text[2] & 0b00111111); + iter->text += 3; + iter->remaining -= 3; + return out; + } + // 4-byte UTF-8 character + if (iter->remaining >= 4 && ((iter->text[0] & 0b11111000) == 0b11110000) && + IS_UTF8_CONTINUE(iter->text[1]) && IS_UTF8_CONTINUE(iter->text[2]) && + IS_UTF8_CONTINUE(iter->text[3])) { + // we use 16-bit codepoints, so we can't represent 4-byte UTF-8 characters + iter->text += 4; + iter->remaining -= 4; + return UNICODE_BADCHAR; + } + + ++iter->text; + --iter->remaining; + return UNICODE_BADCHAR; +} + +bool font_next_glyph(font_glyph_iter_t *iter, const uint8_t **out) { + if (iter->remaining <= 0) { + return false; + } + uint16_t c = next_utf8_codepoint(iter); + *out = font_get_glyph(iter->font, c); + if (*out == NULL) { + // should not happen but ¯\_(ツ)_/¯ + return font_next_glyph(iter, out); + } else { + return true; + } +} + +const uint8_t *font_nonprintable_glyph(int font) { +#define PASTER(s) s##_glyph_nonprintable +#define NONPRINTABLE_GLYPH(s) PASTER(s) + + switch (font) { +#ifdef TREZOR_FONT_NORMAL_ENABLE + case FONT_NORMAL: + return NONPRINTABLE_GLYPH(FONT_NORMAL_DATA); +#endif +#ifdef TREZOR_FONT_DEMIBOLD_ENABLE + case FONT_DEMIBOLD: + return NONPRINTABLE_GLYPH(FONT_DEMIBOLD_DATA); +#endif +#ifdef TREZOR_FONT_BOLD_ENABLE + case FONT_BOLD: + return NONPRINTABLE_GLYPH(FONT_BOLD_DATA); +#endif +#ifdef TREZOR_FONT_MONO_ENABLE + case FONT_MONO: + return NONPRINTABLE_GLYPH(FONT_MONO_DATA); +#endif +#ifdef TREZOR_FONT_BIG_ENABLE + case FONT_BIG: + return NONPRINTABLE_GLYPH(FONT_BIG_DATA); +#endif + default: + return NULL; + } +} + +const uint8_t *font_get_glyph(int font, uint16_t c) { +#ifdef TRANSLATIONS + // found UTF8 character + // it is not hardcoded in firmware fonts, it must be extracted from the + // embedded blob + if (c >= 0x7F) { + const uint8_t *g = get_utf8_glyph(c, font); + if (g != NULL) { + return g; + } + } +#endif // printable ASCII character if (c >= ' ' && c < 0x7F) { @@ -161,29 +245,7 @@ const uint8_t *font_get_glyph(int font, uint8_t c) { return 0; } -// non-printable character -#define PASTER(s) s##_glyph_nonprintable -#define NONPRINTABLE_GLYPH(s) PASTER(s) - - switch (font) { -#ifdef TREZOR_FONT_NORMAL_ENABLE - case FONT_NORMAL: - return NONPRINTABLE_GLYPH(FONT_NORMAL_DATA); -#endif -#ifdef TREZOR_FONT_DEMIBOLD_ENABLE - case FONT_DEMIBOLD: - return NONPRINTABLE_GLYPH(FONT_DEMIBOLD_DATA); -#endif -#ifdef TREZOR_FONT_BOLD_ENABLE - case FONT_BOLD: - return NONPRINTABLE_GLYPH(FONT_BOLD_DATA); -#endif -#ifdef TREZOR_FONT_MONO_ENABLE - case FONT_MONO: - return NONPRINTABLE_GLYPH(FONT_MONO_DATA); -#endif - } - return 0; + return font_nonprintable_glyph(font); } // compute the width of the text (in pixels) @@ -193,50 +255,11 @@ int font_text_width(int font, const char *text, int textlen) { if (textlen < 0) { textlen = strlen(text); } - for (int i = 0; i < textlen; i++) { - const uint8_t *g = font_get_glyph(font, (uint8_t)text[i]); - if (!g) continue; + font_glyph_iter_t iter = font_glyph_iter_init(font, (uint8_t *)text, textlen); + const uint8_t *g = NULL; + while (font_next_glyph(&iter, &g)) { const uint8_t adv = g[2]; // advance width += adv; - /* - if (i != textlen - 1) { - const uint8_t adv = g[2]; // advance - width += adv; - } else { // last character - const uint8_t w = g[0]; // width - const uint8_t bearX = g[3]; // bearingX - width += (bearX + w); - } - */ } return width; } - -// Returns how many characters of the string can be used before exceeding -// the requested width. Tries to avoid breaking words if possible. -int font_text_split(int font, const char *text, int textlen, - int requested_width) { - int width = 0; - int lastspace = 0; - // determine text length if not provided - if (textlen < 0) { - textlen = strlen(text); - } - for (int i = 0; i < textlen; i++) { - if (text[i] == ' ') { - lastspace = i; - } - const uint8_t *g = font_get_glyph(font, (uint8_t)text[i]); - if (!g) continue; - const uint8_t adv = g[2]; // advance - width += adv; - if (width > requested_width) { - if (lastspace > 0) { - return lastspace; - } else { - return i; - } - } - } - return textlen; -} diff --git a/core/embed/lib/fonts/fonts.h b/core/embed/lib/fonts/fonts.h index 483936436..108dd9199 100644 --- a/core/embed/lib/fonts/fonts.h +++ b/core/embed/lib/fonts/fonts.h @@ -20,6 +20,8 @@ #ifndef _FONTS_H #define _FONTS_H +#include + #include "fonts/font_bitmap.h" #include TREZOR_BOARD @@ -117,9 +119,18 @@ int font_height(int font); int font_max_height(int font); int font_baseline(int font); -const uint8_t *font_get_glyph(int font, uint8_t c); +const uint8_t *font_get_glyph(int font, uint16_t c); +const uint8_t *font_nonprintable_glyph(int font); + +typedef struct { + const int font; + const uint8_t *text; + int remaining; +} font_glyph_iter_t; + +font_glyph_iter_t font_glyph_iter_init(const int font, const uint8_t *text, + const int len); +bool font_next_glyph(font_glyph_iter_t *iter, const uint8_t **out); int font_text_width(int font, const char *text, int textlen); -int font_text_split(int font, const char *text, int textlen, - int requested_width); #endif //_FONTS_H diff --git a/core/embed/lib/image.c b/core/embed/lib/image.c index 3a2909fd7..3b15ef6db 100644 --- a/core/embed/lib/image.c +++ b/core/embed/lib/image.c @@ -334,6 +334,7 @@ secbool check_firmware_header(const uint8_t *header, size_t header_size, info->ver_major = ihdr->version & 0xFF; info->ver_minor = (ihdr->version >> 8) & 0xFF; info->ver_patch = (ihdr->version >> 16) & 0xFF; + info->ver_build = (ihdr->version >> 24) & 0xFF; // calculate and copy the image fingerprint get_image_fingerprint(ihdr, info->fingerprint); diff --git a/core/embed/lib/image.h b/core/embed/lib/image.h index 561c0b830..326b4bb52 100644 --- a/core/embed/lib/image.h +++ b/core/embed/lib/image.h @@ -88,6 +88,7 @@ typedef struct { uint8_t ver_major; uint8_t ver_minor; uint8_t ver_patch; + uint8_t ver_build; // firmware fingerprint uint8_t fingerprint[BLAKE2S_DIGEST_LENGTH]; // hash of vendor and image header diff --git a/core/embed/models/layout_common.h b/core/embed/models/layout_common.h index 57f12ff34..898338eeb 100644 --- a/core/embed/models/layout_common.h +++ b/core/embed/models/layout_common.h @@ -15,6 +15,7 @@ extern const flash_area_t STORAGE_AREAS[STORAGE_AREAS_COUNT]; extern const flash_area_t BOARDLOADER_AREA; extern const flash_area_t SECRET_AREA; +extern const flash_area_t TRANSLATIONS_AREA; extern const flash_area_t BOOTLOADER_AREA; extern const flash_area_t FIRMWARE_AREA; extern const flash_area_t WIPE_AREA; diff --git a/core/embed/models/model_T2B1_layout.c b/core/embed/models/model_T2B1_layout.c index 478a89aa9..adaf2f3d7 100644 --- a/core/embed/models/model_T2B1_layout.c +++ b/core/embed/models/model_T2B1_layout.c @@ -38,6 +38,15 @@ const flash_area_t SECRET_AREA = { }, }; +const flash_area_t TRANSLATIONS_AREA = { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = 13, + .num_sectors = 2, + }, +}; + const flash_area_t BOOTLOADER_AREA = { .num_subareas = 1, .subarea[0] = @@ -62,7 +71,7 @@ const flash_area_t FIRMWARE_AREA = { }; const flash_area_t WIPE_AREA = { - .num_subareas = 4, + .num_subareas = 3, .subarea[0] = { .first_sector = 4, @@ -74,12 +83,6 @@ const flash_area_t WIPE_AREA = { .num_sectors = 6, }, .subarea[2] = - { - .first_sector = 13, - .num_sectors = 2, // sector 15 skipped due to bootloader MPU - // settings, sector 12 is secret - }, - .subarea[3] = { .first_sector = 16, .num_sectors = 8, diff --git a/core/embed/models/model_T2T1_layout.c b/core/embed/models/model_T2T1_layout.c index b845ffa56..7d26440cc 100644 --- a/core/embed/models/model_T2T1_layout.c +++ b/core/embed/models/model_T2T1_layout.c @@ -29,6 +29,15 @@ const flash_area_t BOARDLOADER_AREA = { }, }; +const flash_area_t TRANSLATIONS_AREA = { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = 12, + .num_sectors = 3, + }, +}; + const flash_area_t BOOTLOADER_AREA = { .num_subareas = 1, .subarea[0] = diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 4e7ca7bdc..d23cedbe2 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -32,6 +32,7 @@ rgb_led = [] backlight = [] usb = [] optiga = [] +translations = [] test = [ "button", "cc", @@ -43,7 +44,8 @@ test = [ "dma2d", "touch", "backlight", - "optiga" + "optiga", + "translations", ] [lib] diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index 3b0ac6d0f..ce44f1075 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -289,6 +289,10 @@ fn generate_trezorhal_bindings() { .allowlist_function("storage_delete") .allowlist_function("storage_set_counter") .allowlist_function("storage_next_counter") + .allowlist_function("translations_read") + .allowlist_function("translations_write") + .allowlist_function("translations_erase") + .allowlist_function("translations_area_bytesize") // display .allowlist_function("display_clear") .allowlist_function("display_offset") diff --git a/core/embed/rust/librust.h b/core/embed/rust/librust.h index 15b06589b..590840067 100644 --- a/core/embed/rust/librust.h +++ b/core/embed/rust/librust.h @@ -9,6 +9,7 @@ mp_obj_t protobuf_debug_msg_def_type(); extern mp_obj_module_t mp_module_trezorproto; extern mp_obj_module_t mp_module_trezorui2; +extern mp_obj_module_t mp_module_trezortranslate; #ifdef TREZOR_EMULATOR mp_obj_t ui_debug_layout_type(); diff --git a/core/embed/rust/librust_fonts.h b/core/embed/rust/librust_fonts.h new file mode 100644 index 000000000..17249c4b1 --- /dev/null +++ b/core/embed/rust/librust_fonts.h @@ -0,0 +1 @@ +const uint8_t *get_utf8_glyph(uint16_t char_code, int font); diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 50116a2f5..31cc785ae 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -5,6 +5,7 @@ #pragma GCC diagnostic ignored "-Wunused-function" static void _librust_qstrs(void) { + MP_QSTR_; MP_QSTR_CANCELLED; MP_QSTR_CONFIRMED; MP_QSTR_INFO; @@ -13,6 +14,8 @@ static void _librust_qstrs(void) { MP_QSTR_MESSAGE_WIRE_TYPE; MP_QSTR_Msg; MP_QSTR_MsgDef; + MP_QSTR_TR; + MP_QSTR_TranslationsHeader; MP_QSTR___dict__; MP_QSTR___name__; MP_QSTR_account; @@ -20,7 +23,20 @@ static void _librust_qstrs(void) { MP_QSTR_accounts; MP_QSTR_action; MP_QSTR_active; + MP_QSTR_addr_mismatch__contact_support_at; + MP_QSTR_addr_mismatch__key_mismatch; + MP_QSTR_addr_mismatch__mismatch; + MP_QSTR_addr_mismatch__support_url; + MP_QSTR_addr_mismatch__wrong_derivation_path; + MP_QSTR_addr_mismatch__xpub_mismatch; MP_QSTR_address; + MP_QSTR_address__public_key; + MP_QSTR_address__title_cosigner; + MP_QSTR_address__title_receive_address; + MP_QSTR_address__title_yours; + MP_QSTR_address_details__derivation_path; + MP_QSTR_address_details__title_receive_address; + MP_QSTR_address_details__title_receiving_to; MP_QSTR_address_label; MP_QSTR_address_title; MP_QSTR_allow_cancel; @@ -31,16 +47,224 @@ static void _librust_qstrs(void) { MP_QSTR_amount_title; MP_QSTR_amount_value; MP_QSTR_app_name; + MP_QSTR_area_bytesize; MP_QSTR_attach_timer_fn; + MP_QSTR_authenticate__confirm_template; + MP_QSTR_authenticate__header; + MP_QSTR_auto_lock__change_template; + MP_QSTR_auto_lock__title; + MP_QSTR_backup__can_back_up_anytime; + MP_QSTR_backup__it_should_be_backed_up; + MP_QSTR_backup__it_should_be_backed_up_now; + MP_QSTR_backup__new_wallet_created; + MP_QSTR_backup__new_wallet_successfully_created; + MP_QSTR_backup__recover_anytime; + MP_QSTR_backup__title_backup_wallet; + MP_QSTR_backup__title_skip; + MP_QSTR_backup__want_to_skip; + MP_QSTR_binance__buy; + MP_QSTR_binance__confirm_cancel; + MP_QSTR_binance__confirm_input; + MP_QSTR_binance__confirm_order; + MP_QSTR_binance__confirm_output; + MP_QSTR_binance__order_id; + MP_QSTR_binance__pair; + MP_QSTR_binance__price; + MP_QSTR_binance__quantity; + MP_QSTR_binance__sell; + MP_QSTR_binance__sender_address; + MP_QSTR_binance__side; + MP_QSTR_bitcoin__commitment_data; + MP_QSTR_bitcoin__confirm_locktime; + MP_QSTR_bitcoin__create_proof_of_ownership; + MP_QSTR_bitcoin__high_mining_fee_template; + MP_QSTR_bitcoin__locktime_no_effect; + MP_QSTR_bitcoin__locktime_set_to; + MP_QSTR_bitcoin__locktime_set_to_blockheight; + MP_QSTR_bitcoin__lot_of_change_outputs; + MP_QSTR_bitcoin__multiple_accounts; + MP_QSTR_bitcoin__new_fee_rate; + MP_QSTR_bitcoin__simple_send_of; + MP_QSTR_bitcoin__ticket_amount; + MP_QSTR_bitcoin__title_confirm_details; + MP_QSTR_bitcoin__title_finalize_transaction; + MP_QSTR_bitcoin__title_high_mining_fee; + MP_QSTR_bitcoin__title_meld_transaction; + MP_QSTR_bitcoin__title_modify_amount; + MP_QSTR_bitcoin__title_payjoin; + MP_QSTR_bitcoin__title_proof_of_ownership; + MP_QSTR_bitcoin__title_purchase_ticket; + MP_QSTR_bitcoin__title_update_transaction; + MP_QSTR_bitcoin__unknown_path; + MP_QSTR_bitcoin__unknown_transaction; + MP_QSTR_bitcoin__unusually_high_fee; + MP_QSTR_bitcoin__unverified_external_inputs; + MP_QSTR_bitcoin__valid_signature; + MP_QSTR_bitcoin__voting_rights; MP_QSTR_bootscreen; MP_QSTR_bounds; MP_QSTR_button; MP_QSTR_button_event; + MP_QSTR_buttons__abort; + MP_QSTR_buttons__access; + MP_QSTR_buttons__again; + MP_QSTR_buttons__allow; + MP_QSTR_buttons__back; + MP_QSTR_buttons__back_up; + MP_QSTR_buttons__cancel; + MP_QSTR_buttons__change; + MP_QSTR_buttons__check; + MP_QSTR_buttons__check_again; + MP_QSTR_buttons__close; + MP_QSTR_buttons__confirm; + MP_QSTR_buttons__continue; + MP_QSTR_buttons__details; + MP_QSTR_buttons__enable; + MP_QSTR_buttons__enter; + MP_QSTR_buttons__enter_share; + MP_QSTR_buttons__export; + MP_QSTR_buttons__format; + MP_QSTR_buttons__go_back; + MP_QSTR_buttons__hold_to_confirm; + MP_QSTR_buttons__info; + MP_QSTR_buttons__install; + MP_QSTR_buttons__more_info; + MP_QSTR_buttons__ok_i_understand; + MP_QSTR_buttons__purchase; + MP_QSTR_buttons__quit; + MP_QSTR_buttons__restart; + MP_QSTR_buttons__retry; + MP_QSTR_buttons__select; + MP_QSTR_buttons__set; + MP_QSTR_buttons__show_all; + MP_QSTR_buttons__show_details; + MP_QSTR_buttons__show_words; + MP_QSTR_buttons__skip; + MP_QSTR_buttons__try_again; + MP_QSTR_buttons__turn_off; + MP_QSTR_buttons__turn_on; MP_QSTR_cancel_arrow; MP_QSTR_cancel_cross; + MP_QSTR_cardano__addr_base; + MP_QSTR_cardano__addr_enterprise; + MP_QSTR_cardano__addr_legacy; + MP_QSTR_cardano__addr_pointer; + MP_QSTR_cardano__addr_reward; + MP_QSTR_cardano__address_no_staking; + MP_QSTR_cardano__amount_burned_decimals_unknown; + MP_QSTR_cardano__amount_minted_decimals_unknown; + MP_QSTR_cardano__amount_sent_decimals_unknown; + MP_QSTR_cardano__anonymous_pool; + MP_QSTR_cardano__asset_fingerprint; + MP_QSTR_cardano__auxiliary_data_hash; + MP_QSTR_cardano__block; + MP_QSTR_cardano__catalyst; + MP_QSTR_cardano__certificate; + MP_QSTR_cardano__change_output; + MP_QSTR_cardano__check_all_items; + MP_QSTR_cardano__choose_level_of_details; + MP_QSTR_cardano__collateral_input_id; + MP_QSTR_cardano__collateral_input_index; + MP_QSTR_cardano__collateral_output_contains_tokens; + MP_QSTR_cardano__collateral_return; + MP_QSTR_cardano__confirm; + MP_QSTR_cardano__confirm_signing_stake_pool; + MP_QSTR_cardano__confirm_transaction; + MP_QSTR_cardano__confirming_a_multisig_transaction; + MP_QSTR_cardano__confirming_a_plutus_transaction; + MP_QSTR_cardano__confirming_pool_registration; + MP_QSTR_cardano__confirming_transction; + MP_QSTR_cardano__cost; + MP_QSTR_cardano__credential_mismatch; + MP_QSTR_cardano__datum_hash; + MP_QSTR_cardano__delegating_to; + MP_QSTR_cardano__for_account_and_index_template; + MP_QSTR_cardano__for_account_template; + MP_QSTR_cardano__for_key_hash; + MP_QSTR_cardano__for_script; + MP_QSTR_cardano__inline_datum; + MP_QSTR_cardano__input_id; + MP_QSTR_cardano__input_index; + MP_QSTR_cardano__intro_text_change; + MP_QSTR_cardano__intro_text_owned_by_device; + MP_QSTR_cardano__intro_text_registration_payment; + MP_QSTR_cardano__key_hash; + MP_QSTR_cardano__margin; + MP_QSTR_cardano__multisig_path; + MP_QSTR_cardano__nested_scripts_template; + MP_QSTR_cardano__network; + MP_QSTR_cardano__no_output_tx; + MP_QSTR_cardano__nonce; + MP_QSTR_cardano__other; + MP_QSTR_cardano__path; + MP_QSTR_cardano__pledge; + MP_QSTR_cardano__pointer; + MP_QSTR_cardano__policy_id; + MP_QSTR_cardano__pool_metadata_hash; + MP_QSTR_cardano__pool_metadata_url; + MP_QSTR_cardano__pool_owner; + MP_QSTR_cardano__pool_reward_account; + MP_QSTR_cardano__reference_input_id; + MP_QSTR_cardano__reference_input_index; + MP_QSTR_cardano__reference_script; + MP_QSTR_cardano__required_signer; + MP_QSTR_cardano__reward; + MP_QSTR_cardano__reward_address; + MP_QSTR_cardano__reward_eligibility_warning; + MP_QSTR_cardano__rewards_go_to; + MP_QSTR_cardano__script; + MP_QSTR_cardano__script_all; + MP_QSTR_cardano__script_any; + MP_QSTR_cardano__script_data_hash; + MP_QSTR_cardano__script_hash; + MP_QSTR_cardano__script_invalid_before; + MP_QSTR_cardano__script_invalid_hereafter; + MP_QSTR_cardano__script_key; + MP_QSTR_cardano__script_n_of_k; + MP_QSTR_cardano__script_reward; + MP_QSTR_cardano__sending; + MP_QSTR_cardano__show_simple; + MP_QSTR_cardano__sign_tx_path_template; + MP_QSTR_cardano__stake_delegation; + MP_QSTR_cardano__stake_deregistration; + MP_QSTR_cardano__stake_pool_registration; + MP_QSTR_cardano__stake_pool_registration_pool_id; + MP_QSTR_cardano__stake_registration; + MP_QSTR_cardano__staking_key_for_account; + MP_QSTR_cardano__to_pool; + MP_QSTR_cardano__token_minting_path; + MP_QSTR_cardano__total_collateral; + MP_QSTR_cardano__transaction; + MP_QSTR_cardano__transaction_contains_minting_or_burning; + MP_QSTR_cardano__transaction_contains_script_address_no_datum; + MP_QSTR_cardano__transaction_fee; + MP_QSTR_cardano__transaction_id; + MP_QSTR_cardano__transaction_no_collateral_input; + MP_QSTR_cardano__transaction_no_script_data_hash; + MP_QSTR_cardano__transaction_output_contains_tokens; + MP_QSTR_cardano__ttl; + MP_QSTR_cardano__unknown_collateral_amount; + MP_QSTR_cardano__unusual_path; + MP_QSTR_cardano__valid_since; + MP_QSTR_cardano__verify_script; + MP_QSTR_cardano__vote_key_registration; + MP_QSTR_cardano__vote_public_key; + MP_QSTR_cardano__voting_purpose; + MP_QSTR_cardano__warning; + MP_QSTR_cardano__weight; + MP_QSTR_cardano__withdrawal_for_address_template; + MP_QSTR_cardano__x_of_y_signatures_template; MP_QSTR_case_sensitive; MP_QSTR_check_homescreen_format; MP_QSTR_chunkify; + MP_QSTR_coinjoin__access_account; + MP_QSTR_coinjoin__do_not_disconnect; + MP_QSTR_coinjoin__max_mining_fee; + MP_QSTR_coinjoin__max_rounds; + MP_QSTR_coinjoin__title; + MP_QSTR_coinjoin__title_do_not_disconnect; + MP_QSTR_coinjoin__title_progress; + MP_QSTR_coinjoin__waiting_for_others; MP_QSTR_coinjoin_authorized; MP_QSTR_confirm_action; MP_QSTR_confirm_address; @@ -61,60 +285,507 @@ static void _librust_qstrs(void) { MP_QSTR_confirm_recovery; MP_QSTR_confirm_reset_device; MP_QSTR_confirm_total; + MP_QSTR_confirm_total__fee_rate; + MP_QSTR_confirm_total__sending_from_account; + MP_QSTR_confirm_total__title_fee; + MP_QSTR_confirm_total__title_sending_from; MP_QSTR_confirm_value; MP_QSTR_confirm_with_info; MP_QSTR_count; MP_QSTR_data; + MP_QSTR_data_hash; + MP_QSTR_data_len; + MP_QSTR_debug__loading_seed; + MP_QSTR_debug__loading_seed_not_recommended; MP_QSTR_decode; + MP_QSTR_deinit; MP_QSTR_description; MP_QSTR_details_title; + MP_QSTR_device_name__change_template; + MP_QSTR_device_name__title; MP_QSTR_disable_animation; MP_QSTR_dry_run; MP_QSTR_encode; MP_QSTR_encoded_length; + MP_QSTR_entropy__send; + MP_QSTR_entropy__title; + MP_QSTR_entropy__title_confirm; + MP_QSTR_eos__about_to_sign_template; + MP_QSTR_eos__action_name; + MP_QSTR_eos__arbitrary_data; + MP_QSTR_eos__buy_ram; + MP_QSTR_eos__bytes; + MP_QSTR_eos__cancel_vote; + MP_QSTR_eos__checksum; + MP_QSTR_eos__code; + MP_QSTR_eos__contract; + MP_QSTR_eos__cpu; + MP_QSTR_eos__creator; + MP_QSTR_eos__delegate; + MP_QSTR_eos__delete_auth; + MP_QSTR_eos__from; + MP_QSTR_eos__link_auth; + MP_QSTR_eos__memo; + MP_QSTR_eos__name; + MP_QSTR_eos__net; + MP_QSTR_eos__new_account; + MP_QSTR_eos__owner; + MP_QSTR_eos__parent; + MP_QSTR_eos__payer; + MP_QSTR_eos__permission; + MP_QSTR_eos__proxy; + MP_QSTR_eos__receiver; + MP_QSTR_eos__refund; + MP_QSTR_eos__requirement; + MP_QSTR_eos__sell_ram; + MP_QSTR_eos__sender; + MP_QSTR_eos__sign_transaction; + MP_QSTR_eos__threshold; + MP_QSTR_eos__to; + MP_QSTR_eos__transfer; + MP_QSTR_eos__type; + MP_QSTR_eos__undelegate; + MP_QSTR_eos__unlink_auth; + MP_QSTR_eos__update_auth; + MP_QSTR_eos__vote_for_producers; + MP_QSTR_eos__vote_for_proxy; + MP_QSTR_eos__voter; + MP_QSTR_erase; + MP_QSTR_ethereum__amount_sent; + MP_QSTR_ethereum__contract; + MP_QSTR_ethereum__data_size_template; + MP_QSTR_ethereum__gas_limit; + MP_QSTR_ethereum__gas_price; + MP_QSTR_ethereum__max_gas_price; + MP_QSTR_ethereum__name_and_version; + MP_QSTR_ethereum__new_contract; + MP_QSTR_ethereum__no_message_field; + MP_QSTR_ethereum__priority_fee; + MP_QSTR_ethereum__show_full_array; + MP_QSTR_ethereum__show_full_domain; + MP_QSTR_ethereum__show_full_message; + MP_QSTR_ethereum__show_full_struct; + MP_QSTR_ethereum__sign_eip712; + MP_QSTR_ethereum__title_confirm_data; + MP_QSTR_ethereum__title_confirm_domain; + MP_QSTR_ethereum__title_confirm_message; + MP_QSTR_ethereum__title_confirm_struct; + MP_QSTR_ethereum__title_confirm_typed_data; + MP_QSTR_ethereum__title_signing_address; + MP_QSTR_ethereum__units_template; + MP_QSTR_ethereum__unknown_token; + MP_QSTR_ethereum__valid_signature; + MP_QSTR_experimental_mode__enable; + MP_QSTR_experimental_mode__only_for_dev; + MP_QSTR_experimental_mode__title; MP_QSTR_extra; MP_QSTR_fee_amount; MP_QSTR_fee_label; MP_QSTR_fee_rate_amount; MP_QSTR_fee_title; MP_QSTR_fee_value; + MP_QSTR_fido__already_registered; + MP_QSTR_fido__device_already_registered; + MP_QSTR_fido__device_already_registered_with_template; + MP_QSTR_fido__device_not_registered; + MP_QSTR_fido__does_not_belong; + MP_QSTR_fido__erase_credentials; + MP_QSTR_fido__export_credentials; + MP_QSTR_fido__not_registered; + MP_QSTR_fido__not_registered_with_template; + MP_QSTR_fido__please_enable_pin_protection; + MP_QSTR_fido__title_authenticate; + MP_QSTR_fido__title_import_credential; + MP_QSTR_fido__title_list_credentials; + MP_QSTR_fido__title_register; + MP_QSTR_fido__title_remove_credential; + MP_QSTR_fido__title_reset; + MP_QSTR_fido__title_u2f_auth; + MP_QSTR_fido__title_u2f_register; + MP_QSTR_fido__title_verify_user; + MP_QSTR_fido__unable_to_verify_user; + MP_QSTR_fido__wanna_erase_credentials; MP_QSTR_fingerprint; + MP_QSTR_firmware_update__title; + MP_QSTR_firmware_update__title_fingerprint; + MP_QSTR_get_language; MP_QSTR_hold; MP_QSTR_hold_danger; + MP_QSTR_homescreen__click_to_connect; + MP_QSTR_homescreen__click_to_unlock; + MP_QSTR_homescreen__title_backup_failed; + MP_QSTR_homescreen__title_backup_needed; + MP_QSTR_homescreen__title_coinjoin_authorized; + MP_QSTR_homescreen__title_experimental_mode; + MP_QSTR_homescreen__title_no_usb_connection; + MP_QSTR_homescreen__title_pin_not_set; + MP_QSTR_homescreen__title_seedless; + MP_QSTR_homescreen__title_set; MP_QSTR_horizontal; MP_QSTR_icon_name; MP_QSTR_image; MP_QSTR_indeterminate; MP_QSTR_info_button; + MP_QSTR_init; + MP_QSTR_inputs__back; + MP_QSTR_inputs__cancel; + MP_QSTR_inputs__delete; + MP_QSTR_inputs__enter; + MP_QSTR_inputs__return; + MP_QSTR_inputs__show; + MP_QSTR_inputs__space; MP_QSTR_is_type_of; MP_QSTR_items; + MP_QSTR_joint__title; + MP_QSTR_joint__to_the_total_amount; + MP_QSTR_joint__you_are_contributing; MP_QSTR_label; + MP_QSTR_language; + MP_QSTR_language__change_to; + MP_QSTR_language__changed; + MP_QSTR_language__progress; + MP_QSTR_language__title; MP_QSTR_lines; + MP_QSTR_load_from_flash; + MP_QSTR_lockscreen__tap_to_connect; + MP_QSTR_lockscreen__tap_to_unlock; + MP_QSTR_lockscreen__title_locked; + MP_QSTR_lockscreen__title_not_connected; MP_QSTR_max_count; MP_QSTR_max_feerate; MP_QSTR_max_len; MP_QSTR_max_rounds; MP_QSTR_min_count; + MP_QSTR_misc__decrypt_value; + MP_QSTR_misc__encrypt_value; + MP_QSTR_misc__title_suite_labeling; + MP_QSTR_modify_amount__decrease_amount; + MP_QSTR_modify_amount__increase_amount; + MP_QSTR_modify_amount__new_amount; + MP_QSTR_modify_amount__title; + MP_QSTR_modify_fee__decrease_fee; + MP_QSTR_modify_fee__fee_rate; + MP_QSTR_modify_fee__increase_fee; + MP_QSTR_modify_fee__new_transaction_fee; + MP_QSTR_modify_fee__no_change; + MP_QSTR_modify_fee__title; + MP_QSTR_modify_fee__transaction_fee; + MP_QSTR_monero__confirm_export; + MP_QSTR_monero__confirm_ki_sync; + MP_QSTR_monero__confirm_refresh; + MP_QSTR_monero__confirm_unlock_time; + MP_QSTR_monero__hashing_inputs; + MP_QSTR_monero__payment_id; + MP_QSTR_monero__postprocessing; + MP_QSTR_monero__processing; + MP_QSTR_monero__processing_inputs; + MP_QSTR_monero__processing_outputs; + MP_QSTR_monero__signing; + MP_QSTR_monero__signing_inputs; + MP_QSTR_monero__unlock_time_set_template; + MP_QSTR_monero__wanna_export_tx_der; + MP_QSTR_monero__wanna_export_tx_key; + MP_QSTR_monero__wanna_export_watchkey; + MP_QSTR_monero__wanna_start_refresh; + MP_QSTR_monero__wanna_sync_key_images; MP_QSTR_multiple_pages_texts; + MP_QSTR_nem__absolute; + MP_QSTR_nem__activate; + MP_QSTR_nem__add; + MP_QSTR_nem__confirm_action; + MP_QSTR_nem__confirm_address; + MP_QSTR_nem__confirm_creation_fee; + MP_QSTR_nem__confirm_mosaic; + MP_QSTR_nem__confirm_multisig_fee; + MP_QSTR_nem__confirm_namespace; + MP_QSTR_nem__confirm_payload; + MP_QSTR_nem__confirm_properties; + MP_QSTR_nem__confirm_rental_fee; + MP_QSTR_nem__confirm_transfer_of; + MP_QSTR_nem__convert_account_to_multisig; + MP_QSTR_nem__cosign_transaction_for; + MP_QSTR_nem__cosignatory; + MP_QSTR_nem__create_mosaic; + MP_QSTR_nem__create_namespace; + MP_QSTR_nem__deactivate; + MP_QSTR_nem__decrease; + MP_QSTR_nem__description; + MP_QSTR_nem__divisibility_and_levy_cannot_be_shown; + MP_QSTR_nem__encrypted; + MP_QSTR_nem__final_confirm; + MP_QSTR_nem__immutable; + MP_QSTR_nem__increase; + MP_QSTR_nem__initial_supply; + MP_QSTR_nem__initiate_transaction_for; + MP_QSTR_nem__levy_divisibility; + MP_QSTR_nem__levy_fee; + MP_QSTR_nem__levy_fee_of; + MP_QSTR_nem__levy_mosaic; + MP_QSTR_nem__levy_namespace; + MP_QSTR_nem__levy_recipient; + MP_QSTR_nem__levy_type; + MP_QSTR_nem__modify_supply_for; + MP_QSTR_nem__modify_the_number_of_cosignatories_by; + MP_QSTR_nem__mutable; + MP_QSTR_nem__of; + MP_QSTR_nem__percentile; + MP_QSTR_nem__raw_units_template; + MP_QSTR_nem__remote_harvesting; + MP_QSTR_nem__remove; + MP_QSTR_nem__set_minimum_cosignatories_to; + MP_QSTR_nem__sign_tx_fee_template; + MP_QSTR_nem__supply_change; + MP_QSTR_nem__supply_units_template; + MP_QSTR_nem__transferable; + MP_QSTR_nem__under_namespace; + MP_QSTR_nem__unencrypted; + MP_QSTR_nem__unknown_mosaic; MP_QSTR_notification; MP_QSTR_notification_level; MP_QSTR_page_count; MP_QSTR_pages; MP_QSTR_paint; + MP_QSTR_passphrase__access_hidden_wallet; + MP_QSTR_passphrase__always_on_device; + MP_QSTR_passphrase__from_host_not_shown; + MP_QSTR_passphrase__hidden_wallet; + MP_QSTR_passphrase__hide; + MP_QSTR_passphrase__next_screen_will_show_passphrase; + MP_QSTR_passphrase__please_enter; + MP_QSTR_passphrase__revoke_on_device; + MP_QSTR_passphrase__title_confirm; + MP_QSTR_passphrase__title_enter; + MP_QSTR_passphrase__title_hide; + MP_QSTR_passphrase__title_settings; + MP_QSTR_passphrase__title_source; + MP_QSTR_passphrase__turn_off; + MP_QSTR_passphrase__turn_on; MP_QSTR_path; + MP_QSTR_pin__change; + MP_QSTR_pin__changed; + MP_QSTR_pin__cursor_will_change; + MP_QSTR_pin__diff_from_wipe_code; + MP_QSTR_pin__disabled; + MP_QSTR_pin__enabled; + MP_QSTR_pin__enter; + MP_QSTR_pin__enter_new; + MP_QSTR_pin__entered_not_valid; + MP_QSTR_pin__info; + MP_QSTR_pin__invalid_pin; + MP_QSTR_pin__last_attempt; + MP_QSTR_pin__mismatch; + MP_QSTR_pin__pin_mismatch; + MP_QSTR_pin__please_check_again; + MP_QSTR_pin__reenter_new; + MP_QSTR_pin__reenter_to_confirm; + MP_QSTR_pin__should_be_long; + MP_QSTR_pin__title_check_pin; + MP_QSTR_pin__title_settings; + MP_QSTR_pin__title_wrong_pin; + MP_QSTR_pin__tries_left; + MP_QSTR_pin__turn_off; + MP_QSTR_pin__turn_on; + MP_QSTR_pin__wrong_pin; + MP_QSTR_plurals__contains_x_keys; + MP_QSTR_plurals__lock_after_x_hours; + MP_QSTR_plurals__lock_after_x_milliseconds; + MP_QSTR_plurals__lock_after_x_minutes; + MP_QSTR_plurals__lock_after_x_seconds; + MP_QSTR_plurals__sign_x_actions; + MP_QSTR_plurals__transaction_of_x_operations; + MP_QSTR_plurals__x_groups_needed; + MP_QSTR_plurals__x_shares_needed; + MP_QSTR_progress__authenticity_check; + MP_QSTR_progress__done; + MP_QSTR_progress__loading_transaction; + MP_QSTR_progress__locking_device; + MP_QSTR_progress__one_second_left; + MP_QSTR_progress__please_wait; + MP_QSTR_progress__processing; + MP_QSTR_progress__refreshing; + MP_QSTR_progress__signing_transaction; + MP_QSTR_progress__syncing; + MP_QSTR_progress__x_seconds_left_template; MP_QSTR_progress_event; MP_QSTR_prompt; MP_QSTR_qr_title; + MP_QSTR_reboot_to_bootloader__just_a_moment; + MP_QSTR_reboot_to_bootloader__restart; + MP_QSTR_reboot_to_bootloader__title; + MP_QSTR_reboot_to_bootloader__version_by_template; + MP_QSTR_recovery__cancel_dry_run; + MP_QSTR_recovery__check_dry_run; + MP_QSTR_recovery__cursor_will_change; + MP_QSTR_recovery__dry_run_bip39_valid_match; + MP_QSTR_recovery__dry_run_bip39_valid_mismatch; + MP_QSTR_recovery__dry_run_slip39_valid_match; + MP_QSTR_recovery__dry_run_slip39_valid_mismatch; + MP_QSTR_recovery__enter_any_share; + MP_QSTR_recovery__enter_backup; + MP_QSTR_recovery__enter_different_share; + MP_QSTR_recovery__enter_share_from_diff_group; + MP_QSTR_recovery__group_num_template; + MP_QSTR_recovery__group_threshold_reached; + MP_QSTR_recovery__invalid_seed_entered; + MP_QSTR_recovery__invalid_share_entered; + MP_QSTR_recovery__more_shares_needed; + MP_QSTR_recovery__num_of_words; + MP_QSTR_recovery__only_first_n_letters; + MP_QSTR_recovery__progress_will_be_lost; + MP_QSTR_recovery__select_num_of_words; + MP_QSTR_recovery__share_already_entered; + MP_QSTR_recovery__share_from_another_shamir; + MP_QSTR_recovery__share_num_template; + MP_QSTR_recovery__title; + MP_QSTR_recovery__title_cancel_dry_run; + MP_QSTR_recovery__title_cancel_recovery; + MP_QSTR_recovery__title_dry_run; + MP_QSTR_recovery__title_recover; + MP_QSTR_recovery__title_remaining_shares; + MP_QSTR_recovery__type_word_x_of_y_template; + MP_QSTR_recovery__wallet_recovered; + MP_QSTR_recovery__wanna_cancel_dry_run; + MP_QSTR_recovery__wanna_cancel_recovery; + MP_QSTR_recovery__word_count_template; + MP_QSTR_recovery__word_x_of_y_template; + MP_QSTR_recovery__x_more_items_starting_template_plural; + MP_QSTR_recovery__x_more_shares_needed_template_plural; + MP_QSTR_recovery__x_of_y_entered_template; + MP_QSTR_recovery__you_have_entered; MP_QSTR_request_bip39; MP_QSTR_request_complete_repaint; MP_QSTR_request_number; MP_QSTR_request_passphrase; MP_QSTR_request_pin; MP_QSTR_request_slip39; + MP_QSTR_reset__advanced_group_threshold_info; + MP_QSTR_reset__all_x_of_y_template; + MP_QSTR_reset__any_x_of_y_template; + MP_QSTR_reset__button_create; + MP_QSTR_reset__button_recover; + MP_QSTR_reset__by_continuing; + MP_QSTR_reset__check_backup_title; + MP_QSTR_reset__check_group_share_title_template; + MP_QSTR_reset__check_seed_title; + MP_QSTR_reset__check_share_title_template; + MP_QSTR_reset__continue_with_next_share; + MP_QSTR_reset__continue_with_share_template; + MP_QSTR_reset__finished_verifying_group_template; + MP_QSTR_reset__finished_verifying_seed; + MP_QSTR_reset__finished_verifying_shares; + MP_QSTR_reset__group_description; + MP_QSTR_reset__group_info; + MP_QSTR_reset__group_share_checked_successfully_template; + MP_QSTR_reset__group_share_title_template; + MP_QSTR_reset__more_info_at; + MP_QSTR_reset__need_all_share_template; + MP_QSTR_reset__need_any_share_template; + MP_QSTR_reset__needed_to_form_a_group; + MP_QSTR_reset__needed_to_recover_your_wallet; + MP_QSTR_reset__never_make_digital_copy; + MP_QSTR_reset__num_of_share_holders_template; + MP_QSTR_reset__num_of_shares_advanced_info_template; + MP_QSTR_reset__num_of_shares_basic_info; + MP_QSTR_reset__num_shares_for_group_template; + MP_QSTR_reset__number_of_shares_info; + MP_QSTR_reset__one_share; + MP_QSTR_reset__only_one_share_will_be_created; + MP_QSTR_reset__recovery_seed_title; + MP_QSTR_reset__recovery_share_title_template; + MP_QSTR_reset__required_number_of_groups; + MP_QSTR_reset__select_correct_word; + MP_QSTR_reset__select_word_template; + MP_QSTR_reset__select_word_x_of_y_template; + MP_QSTR_reset__set_it_to_count_template; + MP_QSTR_reset__share_checked_successfully_template; + MP_QSTR_reset__share_words_title; + MP_QSTR_reset__slip39_checklist_num_groups; + MP_QSTR_reset__slip39_checklist_num_shares; + MP_QSTR_reset__slip39_checklist_set_num_groups; + MP_QSTR_reset__slip39_checklist_set_num_shares; + MP_QSTR_reset__slip39_checklist_set_sizes; + MP_QSTR_reset__slip39_checklist_set_sizes_longer; + MP_QSTR_reset__slip39_checklist_set_threshold; + MP_QSTR_reset__slip39_checklist_title; + MP_QSTR_reset__slip39_checklist_write_down; + MP_QSTR_reset__slip39_checklist_write_down_recovery; + MP_QSTR_reset__the_threshold_sets_the_number_of_shares; + MP_QSTR_reset__threshold_info; + MP_QSTR_reset__title_backup_is_done; + MP_QSTR_reset__title_create_wallet; + MP_QSTR_reset__title_create_wallet_shamir; + MP_QSTR_reset__title_group_threshold; + MP_QSTR_reset__title_number_of_groups; + MP_QSTR_reset__title_number_of_shares; + MP_QSTR_reset__title_set_group_threshold; + MP_QSTR_reset__title_set_number_of_groups; + MP_QSTR_reset__title_set_number_of_shares; + MP_QSTR_reset__title_set_threshold; + MP_QSTR_reset__to_form_group_template; + MP_QSTR_reset__tos_link; + MP_QSTR_reset__total_number_of_shares_in_group_template; + MP_QSTR_reset__use_your_backup; + MP_QSTR_reset__write_down_words_template; + MP_QSTR_reset__wrong_word_selected; + MP_QSTR_reset__you_need_one_share; + MP_QSTR_reset__your_backup_is_done; MP_QSTR_reverse; + MP_QSTR_ripple__confirm_tag; + MP_QSTR_ripple__destination_tag_template; + MP_QSTR_rotation__change_template; + MP_QSTR_rotation__east; + MP_QSTR_rotation__north; + MP_QSTR_rotation__south; + MP_QSTR_rotation__title_change; + MP_QSTR_rotation__west; + MP_QSTR_safety_checks__approve_unsafe_always; + MP_QSTR_safety_checks__approve_unsafe_temporary; + MP_QSTR_safety_checks__enforce_strict; + MP_QSTR_safety_checks__title; + MP_QSTR_safety_checks__title_safety_override; + MP_QSTR_sd_card__all_data_will_be_lost; + MP_QSTR_sd_card__card_required; + MP_QSTR_sd_card__disable; + MP_QSTR_sd_card__disabled; + MP_QSTR_sd_card__enable; + MP_QSTR_sd_card__enabled; + MP_QSTR_sd_card__error; + MP_QSTR_sd_card__format_card; + MP_QSTR_sd_card__insert_correct_card; + MP_QSTR_sd_card__please_insert; + MP_QSTR_sd_card__please_unplug_and_insert; + MP_QSTR_sd_card__problem_accessing; + MP_QSTR_sd_card__refresh; + MP_QSTR_sd_card__refreshed; + MP_QSTR_sd_card__restart; + MP_QSTR_sd_card__title; + MP_QSTR_sd_card__title_problem; + MP_QSTR_sd_card__unknown_filesystem; + MP_QSTR_sd_card__unplug_and_insert_correct; + MP_QSTR_sd_card__use_different_card; + MP_QSTR_sd_card__wanna_format; + MP_QSTR_sd_card__wrong_sd_card; MP_QSTR_select_word; MP_QSTR_select_word_count; + MP_QSTR_send__address_path; + MP_QSTR_send__confirm_sending; + MP_QSTR_send__from_multiple_accounts; + MP_QSTR_send__including_fee; + MP_QSTR_send__maximum_fee; + MP_QSTR_send__receiving_to_multisig; + MP_QSTR_send__title_confirm_sending; + MP_QSTR_send__title_joint_transaction; + MP_QSTR_send__title_receiving_to; + MP_QSTR_send__title_sending; + MP_QSTR_send__title_sending_amount; + MP_QSTR_send__title_sending_to; + MP_QSTR_send__to_the_total_amount; + MP_QSTR_send__total_amount; + MP_QSTR_send__transaction_id; + MP_QSTR_send__you_are_contributing; MP_QSTR_share_words; + MP_QSTR_share_words__words_in_order; + MP_QSTR_share_words__wrote_down_all; MP_QSTR_show_address_details; MP_QSTR_show_checklist; MP_QSTR_show_error; @@ -131,32 +802,211 @@ static void _librust_qstrs(void) { MP_QSTR_show_share_words; MP_QSTR_show_simple; MP_QSTR_show_success; + MP_QSTR_show_wait_text; MP_QSTR_show_warning; MP_QSTR_sign; + MP_QSTR_sign_message__bytes_template; + MP_QSTR_sign_message__confirm_address; + MP_QSTR_sign_message__confirm_message; + MP_QSTR_sign_message__message_size; + MP_QSTR_sign_message__verify_address; MP_QSTR_skip_first_paint; + MP_QSTR_solana__account_index; + MP_QSTR_solana__associated_token_account; + MP_QSTR_solana__confirm_multisig; + MP_QSTR_solana__expected_fee; + MP_QSTR_solana__instruction_accounts_template; + MP_QSTR_solana__instruction_data; + MP_QSTR_solana__instruction_is_multisig; + MP_QSTR_solana__is_provided_via_lookup_table_template; + MP_QSTR_solana__lookup_table_address; + MP_QSTR_solana__multiple_signers; + MP_QSTR_solana__token_address; + MP_QSTR_solana__transaction_contains_unknown_instructions; + MP_QSTR_solana__transaction_requires_x_signers_template; MP_QSTR_spending_amount; + MP_QSTR_stellar__account_merge; + MP_QSTR_stellar__account_thresholds; + MP_QSTR_stellar__add_signer; + MP_QSTR_stellar__add_trust; + MP_QSTR_stellar__all_will_be_sent_to; + MP_QSTR_stellar__allow_trust; + MP_QSTR_stellar__asset; + MP_QSTR_stellar__balance_id; + MP_QSTR_stellar__bump_sequence; + MP_QSTR_stellar__buying; + MP_QSTR_stellar__claim_claimable_balance; + MP_QSTR_stellar__clear_data; + MP_QSTR_stellar__clear_flags; + MP_QSTR_stellar__confirm_issuer; + MP_QSTR_stellar__confirm_memo; + MP_QSTR_stellar__confirm_network; + MP_QSTR_stellar__confirm_operation; + MP_QSTR_stellar__confirm_stellar; + MP_QSTR_stellar__confirm_timebounds; + MP_QSTR_stellar__create_account; + MP_QSTR_stellar__debited_amount; + MP_QSTR_stellar__delete; + MP_QSTR_stellar__delete_passive_offer; + MP_QSTR_stellar__delete_trust; + MP_QSTR_stellar__destination; + MP_QSTR_stellar__exchanges_require_memo; + MP_QSTR_stellar__final_confirm; + MP_QSTR_stellar__hash; + MP_QSTR_stellar__high; + MP_QSTR_stellar__home_domain; + MP_QSTR_stellar__inflation; + MP_QSTR_stellar__initial_balance; + MP_QSTR_stellar__initialize_signing_with; + MP_QSTR_stellar__issuer_template; + MP_QSTR_stellar__key; + MP_QSTR_stellar__limit; + MP_QSTR_stellar__low; + MP_QSTR_stellar__master_weight; + MP_QSTR_stellar__medium; + MP_QSTR_stellar__new_offer; + MP_QSTR_stellar__new_passive_offer; + MP_QSTR_stellar__no_memo_set; + MP_QSTR_stellar__no_restriction; + MP_QSTR_stellar__on_network_template; + MP_QSTR_stellar__path_pay; + MP_QSTR_stellar__path_pay_at_least; + MP_QSTR_stellar__pay; + MP_QSTR_stellar__pay_at_most; + MP_QSTR_stellar__preauth_transaction; + MP_QSTR_stellar__price_per_template; + MP_QSTR_stellar__private_network; + MP_QSTR_stellar__remove_signer; + MP_QSTR_stellar__revoke_trust; + MP_QSTR_stellar__selling; + MP_QSTR_stellar__set_data; + MP_QSTR_stellar__set_flags; + MP_QSTR_stellar__set_sequence_to_template; + MP_QSTR_stellar__sign_tx_count_template; + MP_QSTR_stellar__sign_tx_fee_template; + MP_QSTR_stellar__source_account; + MP_QSTR_stellar__testnet_network; + MP_QSTR_stellar__trusted_account; + MP_QSTR_stellar__update; + MP_QSTR_stellar__valid_from; + MP_QSTR_stellar__valid_to; + MP_QSTR_stellar__value_sha256; + MP_QSTR_stellar__wanna_clean_value_key_template; + MP_QSTR_stellar__your_account; MP_QSTR_subprompt; MP_QSTR_subtitle; + MP_QSTR_tezos__baker_address; + MP_QSTR_tezos__balance; + MP_QSTR_tezos__ballot; + MP_QSTR_tezos__confirm_delegation; + MP_QSTR_tezos__confirm_origination; + MP_QSTR_tezos__delegator; + MP_QSTR_tezos__proposal; + MP_QSTR_tezos__register_delegate; + MP_QSTR_tezos__remove_delegation; + MP_QSTR_tezos__submit_ballot; + MP_QSTR_tezos__submit_proposal; + MP_QSTR_tezos__submit_proposals; MP_QSTR_time_ms; MP_QSTR_timer; MP_QSTR_title; MP_QSTR_total_amount; MP_QSTR_total_fee_new; MP_QSTR_total_label; + MP_QSTR_total_len; MP_QSTR_touch_event; MP_QSTR_trace; MP_QSTR_trezorproto; MP_QSTR_trezorui2; MP_QSTR_tutorial; + MP_QSTR_tutorial__middle_click; + MP_QSTR_tutorial__press_and_hold; + MP_QSTR_tutorial__ready_to_use; + MP_QSTR_tutorial__scroll_down; + MP_QSTR_tutorial__sure_you_want_skip; + MP_QSTR_tutorial__title_hello; + MP_QSTR_tutorial__title_screen_scroll; + MP_QSTR_tutorial__title_skip; + MP_QSTR_tutorial__title_tutorial_complete; + MP_QSTR_tutorial__use_trezor; + MP_QSTR_tutorial__welcome_press_right; MP_QSTR_type_for_name; MP_QSTR_type_for_wire; + MP_QSTR_u2f__get; + MP_QSTR_u2f__set_template; + MP_QSTR_u2f__title_get; + MP_QSTR_u2f__title_set; MP_QSTR_usb_event; MP_QSTR_user_fee_change; MP_QSTR_value; MP_QSTR_verb; MP_QSTR_verb_cancel; + MP_QSTR_verify; + MP_QSTR_version; MP_QSTR_warning; + MP_QSTR_wipe__info; + MP_QSTR_wipe__title; + MP_QSTR_wipe__want_to_wipe; + MP_QSTR_wipe_code__change; + MP_QSTR_wipe_code__changed; + MP_QSTR_wipe_code__diff_from_pin; + MP_QSTR_wipe_code__disabled; + MP_QSTR_wipe_code__enabled; + MP_QSTR_wipe_code__enter_new; + MP_QSTR_wipe_code__info; + MP_QSTR_wipe_code__invalid; + MP_QSTR_wipe_code__mismatch; + MP_QSTR_wipe_code__reenter; + MP_QSTR_wipe_code__reenter_to_confirm; + MP_QSTR_wipe_code__title_check; + MP_QSTR_wipe_code__title_invalid; + MP_QSTR_wipe_code__title_settings; + MP_QSTR_wipe_code__turn_off; + MP_QSTR_wipe_code__turn_on; + MP_QSTR_wipe_code__wipe_code_mismatch; + MP_QSTR_word_count__title; MP_QSTR_words; + MP_QSTR_words__account; + MP_QSTR_words__account_colon; + MP_QSTR_words__address; + MP_QSTR_words__amount; + MP_QSTR_words__are_you_sure; + MP_QSTR_words__array_of; + MP_QSTR_words__blockhash; + MP_QSTR_words__buying; + MP_QSTR_words__confirm; + MP_QSTR_words__confirm_fee; + MP_QSTR_words__contains; + MP_QSTR_words__continue_anyway; + MP_QSTR_words__continue_with; + MP_QSTR_words__error; + MP_QSTR_words__fee; + MP_QSTR_words__from; + MP_QSTR_words__keep_it_safe; + MP_QSTR_words__know_what_your_doing; + MP_QSTR_words__my_trezor; + MP_QSTR_words__no; + MP_QSTR_words__outputs; + MP_QSTR_words__please_check_again; + MP_QSTR_words__please_try_again; + MP_QSTR_words__really_wanna; + MP_QSTR_words__recipient; + MP_QSTR_words__sign; + MP_QSTR_words__signer; + MP_QSTR_words__title_check; + MP_QSTR_words__title_group; + MP_QSTR_words__title_information; + MP_QSTR_words__title_remember; + MP_QSTR_words__title_share; + MP_QSTR_words__title_shares; + MP_QSTR_words__title_success; + MP_QSTR_words__title_summary; + MP_QSTR_words__title_threshold; + MP_QSTR_words__unknown; + MP_QSTR_words__warning; + MP_QSTR_words__writable; + MP_QSTR_words__yes; + MP_QSTR_write; MP_QSTR_wrong_pin; MP_QSTR_xpubs; } diff --git a/core/embed/rust/src/lib.rs b/core/embed/rust/src/lib.rs index 7b5f1dda9..e0dee4280 100644 --- a/core/embed/rust/src/lib.rs +++ b/core/embed/rust/src/lib.rs @@ -27,6 +27,8 @@ mod storage; mod time; #[cfg(feature = "ui_debug")] mod trace; +#[cfg(feature = "translations")] +pub mod translations; #[cfg(feature = "ui")] #[macro_use] diff --git a/core/embed/rust/src/micropython/buffer.rs b/core/embed/rust/src/micropython/buffer.rs index 9cf330ad1..06ff8c6c0 100644 --- a/core/embed/rust/src/micropython/buffer.rs +++ b/core/embed/rust/src/micropython/buffer.rs @@ -24,7 +24,7 @@ use super::ffi; /// The `off` field represents offset from the `ptr` and allows us to do /// substring slices while keeping the head pointer as required by GC. #[repr(C)] -#[derive(Debug, Clone)] +#[derive(Debug, Copy, Clone)] pub struct StrBuffer { ptr: *const u8, len: u16, diff --git a/core/embed/rust/src/micropython/macros.rs b/core/embed/rust/src/micropython/macros.rs index 0ad558ee9..9dcdb0e95 100644 --- a/core/embed/rust/src/micropython/macros.rs +++ b/core/embed/rust/src/micropython/macros.rs @@ -137,8 +137,9 @@ macro_rules! obj_dict { macro_rules! obj_type { (name: $name:expr, $(locals: $locals:expr,)? - $(attr_fn: $attr_fn:ident,)? - $(call_fn: $call_fn:ident,)? + $(make_new_fn: $make_new_fn:path,)? + $(attr_fn: $attr_fn:path,)? + $(call_fn: $call_fn:path,)? ) => {{ #[allow(unused_unsafe)] unsafe { @@ -156,6 +157,11 @@ macro_rules! obj_type { let mut call: ffi::mp_call_fun_t = None; $(call = Some($call_fn);)? + #[allow(unused_mut)] + #[allow(unused_assignments)] + let mut make_new: ffi::mp_make_new_fun_t = None; + $(make_new = Some($make_new_fn);)? + // TODO: This is safe only if we pass in `Dict` with fixed `Map` (created by // `Map::fixed()`, usually through `obj_map!`), because only then will // MicroPython treat `locals_dict` as immutable, and make the mutable cast safe. @@ -171,7 +177,7 @@ macro_rules! obj_type { flags: 0, name, print: None, - make_new: None, + make_new, call, unary_op: None, binary_op: None, diff --git a/core/embed/rust/src/micropython/qstr.rs b/core/embed/rust/src/micropython/qstr.rs index 41cc741ad..e50a18bc3 100644 --- a/core/embed/rust/src/micropython/qstr.rs +++ b/core/embed/rust/src/micropython/qstr.rs @@ -15,7 +15,7 @@ impl Qstr { // micropython/py/obj.h #define MP_OBJ_NEW_QSTR(qst) // ((mp_obj_t)((((mp_uint_t)(qst)) << 3) | 2)) let bits = (self.0 << 3) | 2; - unsafe { Obj::from_bits(bits as usize) } + unsafe { Obj::from_bits(bits) } } pub const fn from_obj_bits(bits: cty::uintptr_t) -> Self { diff --git a/core/embed/rust/src/micropython/typ.rs b/core/embed/rust/src/micropython/typ.rs index 0647ab371..007c03e8a 100644 --- a/core/embed/rust/src/micropython/typ.rs +++ b/core/embed/rust/src/micropython/typ.rs @@ -17,6 +17,14 @@ impl Type { ObjBase { type_: self } } + pub const fn as_obj(&'static self) -> Obj { + // SAFETY: + // - We are an object struct with a base and a type. + // - 'static lifetime holds us in place. + // - MicroPython is smart enough not to mutate `mp_obj_type_t` objects. + unsafe { Obj::from_ptr(self as *const _ as *mut _) } + } + #[cfg(feature = "debug")] pub fn name(&self) -> &'static str { use super::qstr::Qstr; diff --git a/core/embed/rust/src/storage/mod.rs b/core/embed/rust/src/storage/mod.rs index 0bb147b0e..96eab3df7 100644 --- a/core/embed/rust/src/storage/mod.rs +++ b/core/embed/rust/src/storage/mod.rs @@ -35,6 +35,7 @@ const SD_SALT_AUTH_KEY: u16 = FLAG_PUBLIC | APP_DEVICE | 0x0012; const INITIALIZED: u16 = FLAG_PUBLIC | APP_DEVICE | 0x0013; const SAFETY_CHECK_LEVEL: u16 = APP_DEVICE | 0x0014; const EXPERIMENTAL_FEATURES: u16 = APP_DEVICE | 0x0015; +const HIDE_PASSPHRASE_FROM_HOST: u16 = APP_DEVICE | 0x0016; pub fn get_avatar_len() -> StorageResult { get_length(HOMESCREEN) diff --git a/core/embed/rust/src/strutil.rs b/core/embed/rust/src/strutil.rs index 6b2c43f37..576115b40 100644 --- a/core/embed/rust/src/strutil.rs +++ b/core/embed/rust/src/strutil.rs @@ -1,5 +1,14 @@ use heapless::String; +#[cfg(feature = "micropython")] +use crate::error::Error; + +#[cfg(feature = "micropython")] +use crate::micropython::{buffer::StrBuffer, obj::Obj}; + +#[cfg(feature = "translations")] +use crate::translations::TR; + /// Trait for slicing off string prefix by a specified number of bytes. /// See `StringType` for deeper explanation. pub trait SkipPrefix { @@ -23,9 +32,15 @@ impl SkipPrefix for &str { /// - create a new string by skipping some number of bytes (SkipPrefix) - used /// when rendering continuations of long strings /// - create a new string from a string literal (From<&'static str>) -pub trait StringType: AsRef + From<&'static str> + SkipPrefix {} +pub trait StringType: + AsRef + From<&'static str> + Into> + SkipPrefix +{ +} -impl StringType for T where T: AsRef + From<&'static str> + SkipPrefix {} +impl StringType for T where + T: AsRef + From<&'static str> + Into> + SkipPrefix +{ +} /// Unified-length String type, long enough for most simple use-cases. pub type ShortString = String<50>; @@ -72,3 +87,92 @@ pub fn format_i64(num: i64, buffer: &mut [u8]) -> Option<&str> { } } } + +#[derive(Copy, Clone)] +pub enum TString<'a> { + #[cfg(feature = "micropython")] + Allocated(StrBuffer), + #[cfg(feature = "translations")] + Translation(TR), + Str(&'a str), +} + +impl TString<'_> { + pub fn is_empty(&self) -> bool { + self.map(|s| s.is_empty()) + } + + pub fn map(&self, fun: F) -> T + where + F: for<'a> FnOnce(&'a str) -> T, + T: 'static, + { + match self { + #[cfg(feature = "micropython")] + Self::Allocated(buf) => fun(buf.as_ref()), + #[cfg(feature = "translations")] + Self::Translation(tr) => tr.map_translated(fun), + Self::Str(s) => fun(s), + } + } +} + +impl TString<'static> { + #[cfg(feature = "translations")] + pub const fn from_translation(tr: TR) -> Self { + Self::Translation(tr) + } + + #[cfg(feature = "micropython")] + pub const fn from_strbuffer(buf: StrBuffer) -> Self { + Self::Allocated(buf) + } + + pub const fn empty() -> Self { + Self::Str("") + } +} + +impl<'a> TString<'a> { + pub const fn from_str(s: &'a str) -> Self { + Self::Str(s) + } +} + +impl<'a> From<&'a str> for TString<'a> { + fn from(s: &'a str) -> Self { + Self::Str(s) + } +} + +#[cfg(feature = "translations")] +impl From for TString<'static> { + fn from(tr: TR) -> Self { + Self::from_translation(tr) + } +} + +#[cfg(feature = "micropython")] +impl From for TString<'static> { + fn from(buf: StrBuffer) -> Self { + Self::from_strbuffer(buf) + } +} + +#[cfg(feature = "micropython")] +impl TryFrom for TString<'static> { + type Error = Error; + + fn try_from(obj: Obj) -> Result { + Ok(StrBuffer::try_from(obj)?.into()) + } +} + +#[cfg(feature = "micropython")] +impl<'a> TryFrom> for Obj { + type Error = Error; + + fn try_from(s: TString<'a>) -> Result { + s.map(|t| t.try_into()) + } +} diff --git a/core/embed/rust/src/trace.rs b/core/embed/rust/src/trace.rs index 23bfd5c60..b4a528205 100644 --- a/core/embed/rust/src/trace.rs +++ b/core/embed/rust/src/trace.rs @@ -1,9 +1,9 @@ -use crate::strutil::format_i64; +use crate::strutil::{format_i64, TString}; pub trait Tracer { fn child(&mut self, key: &str, value: &dyn Trace); fn int(&mut self, key: &str, i: i64); - fn string(&mut self, key: &str, s: &str); + fn string(&mut self, key: &str, s: TString<'_>); fn bool(&mut self, key: &str, b: bool); fn null(&mut self, key: &str); @@ -11,14 +11,14 @@ pub trait Tracer { fn in_list(&mut self, key: &str, block: &dyn Fn(&mut dyn ListTracer)); fn component(&mut self, name: &str) { - self.string("component", name); + self.string("component", name.into()); } } pub trait ListTracer { fn child(&mut self, value: &dyn Trace); fn int(&mut self, i: i64); - fn string(&mut self, s: &str); + fn string(&mut self, s: &TString<'_>); fn bool(&mut self, b: bool); fn in_child(&mut self, block: &dyn Fn(&mut dyn Tracer)); @@ -121,9 +121,9 @@ impl ListTracer for JsonTracer { self.write_int(i); } - fn string(&mut self, s: &str) { + fn string(&mut self, s: &TString<'_>) { self.maybe_comma(); - self.write_str_quoted(s); + s.map(|s| self.write_str_quoted(s)); } fn bool(&mut self, b: bool) { @@ -160,9 +160,9 @@ impl Tracer for JsonTracer { self.write_int(i); } - fn string(&mut self, key: &str, s: &str) { + fn string(&mut self, key: &str, s: TString<'_>) { self.key(key); - self.write_str_quoted(s); + s.map(|s| self.write_str_quoted(s)); } fn bool(&mut self, key: &str, b: bool) { diff --git a/core/embed/rust/src/translations/blob.rs b/core/embed/rust/src/translations/blob.rs new file mode 100644 index 000000000..2bf6f52a4 --- /dev/null +++ b/core/embed/rust/src/translations/blob.rs @@ -0,0 +1,386 @@ +use core::{mem, str}; + +use crate::{ + crypto::{cosi, ed25519, merkle::merkle_root, sha256}, + error::Error, + io::InputStream, +}; + +use super::public_keys; + +pub const MAX_HEADER_LEN: u16 = 1024; +pub const EMPTY_BYTE: u8 = 0xFF; +const SENTINEL_ID: u16 = 0xFFFF; + +const SIGNATURE_THRESHOLD: u8 = 2; + +// Maximum padding at the end of an offsets table (typically for alignment +// purposes). We allow at most 3 for alignment 4. In practice right now this +// should be max 1. +const MAX_TABLE_PADDING: usize = 3; + +const INVALID_TRANSLATIONS_BLOB: Error = value_error!("Invalid translations blob"); + +#[repr(packed)] +struct OffsetEntry { + pub id: u16, + pub offset: u16, +} + +pub struct Table<'a> { + offsets: &'a [OffsetEntry], + data: &'a [u8], +} + +fn validate_offset_table( + data_len: usize, + mut iter: impl Iterator, +) -> Result<(), Error> { + // every offset table must have at least the sentinel + let mut prev = iter.next().ok_or(INVALID_TRANSLATIONS_BLOB)?; + if prev != 0 { + // first offset must always be 0 (even as a sentinel, indicating no data) + return Err(INVALID_TRANSLATIONS_BLOB); + } + for next in iter { + // offsets must be in ascending order + if prev > next { + return Err(INVALID_TRANSLATIONS_BLOB); + } + prev = next; + } + // sentinel needs to be at least data_len - MAX_TABLE_PADDING, and at most + // data_len + let sentinel = prev as usize; + if sentinel < data_len - MAX_TABLE_PADDING || sentinel > data_len { + return Err(INVALID_TRANSLATIONS_BLOB); + } + Ok(()) +} + +impl<'a> Table<'a> { + pub fn new(mut reader: InputStream<'a>) -> Result { + let count = reader.read_u16_le()?; + // The offsets table is (count + 1) entries long, the last entry is a sentinel. + let offsets_data = reader.read((count + 1) as usize * mem::size_of::())?; + // SAFETY: OffsetEntry is repr(packed) of two u16 values, so any four bytes are + // a valid OffsetEntry value. + let (_prefix, offsets, _suffix) = unsafe { offsets_data.align_to::() }; + if !_prefix.is_empty() || !_suffix.is_empty() { + return Err(INVALID_TRANSLATIONS_BLOB); + } + + Ok(Self { + offsets, + data: reader.rest(), + }) + } + + pub fn validate(&self) -> Result<(), Error> { + validate_offset_table(self.data.len(), self.offsets.iter().map(|it| it.offset))?; + if !matches!( + self.offsets.iter().last().map(|it| it.id), + Some(SENTINEL_ID) + ) { + return Err(INVALID_TRANSLATIONS_BLOB); + } + // check that the ids are sorted + let Some(first_entry) = self.offsets.first() else { + // empty table is sorted + return Ok(()); + }; + let mut prev_id = first_entry.id; + for entry in self.offsets.iter().skip(1) { + if entry.id <= prev_id { + return Err(INVALID_TRANSLATIONS_BLOB); + } + prev_id = entry.id; + } + Ok(()) + } + + pub fn get(&self, id: u16) -> Option<&'a [u8]> { + self.offsets + .binary_search_by_key(&id, |it| it.id) + .ok() + .and_then(|idx| { + let start = self.offsets[idx].offset as usize; + let end = self.offsets[idx + 1].offset as usize; + self.data.get(start..end) + }) + } + + pub fn iter(&self) -> impl Iterator + '_ { + let mut prev_offset = 0usize; + self.offsets.iter().skip(1).map(move |entry| { + let start = prev_offset; + let end = entry.offset as usize; + prev_offset = end; + (entry.id, &self.data[start..end]) + }) + } +} + +pub struct Translations<'a> { + pub header: TranslationsHeader<'a>, + translations: &'a [u8], + translations_offsets: &'a [u16], + fonts: Table<'a>, +} + +fn read_u16_prefixed_block<'a>(reader: &mut InputStream<'a>) -> Result, Error> { + let len = reader.read_u16_le()? as usize; + reader.read_stream(len) +} + +impl<'a> Translations<'a> { + const MAGIC: &'static [u8] = b"TRTR00"; + + pub fn new(blob: &'a [u8]) -> Result { + let mut blob_reader = InputStream::new(blob); + + let (header, payload_reader) = TranslationsHeader::parse_from(&mut blob_reader)?; + + // validate that the trailing bytes, if any, are empty + let remaining = blob_reader.rest(); + if !remaining.iter().all(|&b| b == EMPTY_BYTE) { + // TODO optimize to quadwords? + return Err(value_error!("Trailing data in translations blob")); + } + + let payload_bytes = payload_reader.rest(); + + let payload_digest = sha256::digest(payload_bytes); + if payload_digest != header.data_hash { + return Err(INVALID_TRANSLATIONS_BLOB); + } + + let mut payload_reader = InputStream::new(payload_bytes); + + let mut translations_reader = read_u16_prefixed_block(&mut payload_reader)?; + let fonts_reader = read_u16_prefixed_block(&mut payload_reader)?; + + if payload_reader.remaining() > 0 { + return Err(INVALID_TRANSLATIONS_BLOB); + } + + // construct translations data + let translations_count = translations_reader.read_u16_le()? as usize; + let translations_offsets_bytes = + translations_reader.read((translations_count + 1) * mem::size_of::())?; + // SAFETY: any bytes are valid u16 values, so casting any data to + // a sequence of u16 values is safe. + let (_prefix, translations_offsets, _suffix) = + unsafe { translations_offsets_bytes.align_to::() }; + if !_prefix.is_empty() || !_suffix.is_empty() { + return Err(INVALID_TRANSLATIONS_BLOB); + } + let translations = translations_reader.rest(); + validate_offset_table(translations.len(), translations_offsets.iter().copied())?; + + // construct and validate font table + let fonts = Table::new(fonts_reader)?; + fonts.validate()?; + for (_, font_data) in fonts.iter() { + let reader = InputStream::new(font_data); + let font_table = Table::new(reader)?; + font_table.validate()?; + } + + Ok(Self { + header, + translations, + translations_offsets, + fonts, + }) + } + + /// Returns the translation at the given index. + pub fn translation(&self, index: usize) -> Option<&str> { + if index + 1 >= self.translations_offsets.len() { + // The index is out of bounds. + // (The last entry is a sentinel, so the last valid index is len - 2) + // May happen when new firmware is using older translations and the string + // is not defined yet. + // Fallback to english. + return None; + } + + let start_offset = self.translations_offsets[index] as usize; + let end_offset = self.translations_offsets[index + 1] as usize; + + // Construct the relevant slice + let string = &self.translations[start_offset..end_offset]; + + if string.is_empty() { + // The string is not defined in the blob. + // May happen when old firmware is using newer translations and the string + // was deleted in the newer version. + // Fallback to english. + return None; + } + + str::from_utf8(string).ok() + } + + pub fn font(&'a self, index: u16) -> Option> { + self.fonts + .get(index) + .and_then(|data| Table::new(InputStream::new(data)).ok()) + } +} + +pub struct TranslationsHeader<'a> { + /// Raw content of the header, for signature verification + pub header_bytes: &'a [u8], + /// BCP 47 language tag (cs-CZ, en-US, ...) + pub language: &'a str, + /// 4 bytes of version (major, minor, patch, build) + pub version: [u8; 4], + /// Length of the raw data, i.e. translations section + fonts section + pub data_len: usize, + /// Hash of the data blob (excluding the header) + pub data_hash: sha256::Digest, + /// Merkle proof items + pub merkle_proof: &'a [sha256::Digest], + /// CoSi signature + pub signature: cosi::Signature, + /// Expected total length of the blob + pub total_len: usize, +} + +fn read_fixedsize_str<'a>(reader: &mut InputStream<'a>, len: usize) -> Result<&'a str, Error> { + let bytes = reader.read(len)?; + let find_zero = bytes.iter().position(|&b| b == 0).unwrap_or(len); + let bytes_trimmed = &bytes[..find_zero]; + core::str::from_utf8(bytes_trimmed).map_err(|_| INVALID_TRANSLATIONS_BLOB) +} + +impl<'a> TranslationsHeader<'a> { + const BLOB_MAGIC: &'static [u8] = b"TRTR00"; + const HEADER_MAGIC: &'static [u8] = b"TR"; + const LANGUAGE_TAG_LEN: usize = 8; + + /// Parse a translations header out of a stream. + /// + /// The returned tuple consists of: + /// (a) the parsed header and + /// (b) reader of the payload section of the translations blob. + /// The caller can use the returned reader to parse the payload. + /// + /// The input stream is positioned at the end of the translations blob (or + /// at the end of stream, whichever comes sooner). The caller can use this + /// to verify that there is no unexpected trailing data in the input + /// stream. (Also, you cannot make a mistake and read the payload out of + /// the input stream). + pub fn parse_from(reader: &mut InputStream<'a>) -> Result<(Self, InputStream<'a>), Error> { + // + // 1. parse outer container + // + let magic = reader.read(Self::BLOB_MAGIC.len())?; + if magic != Self::BLOB_MAGIC { + return Err(INVALID_TRANSLATIONS_BLOB); + } + + // read length of contained data + let container_length = reader.read_u16_le()? as usize; + // continue working on the contained data (i.e., read beyond the bounds of + // container_length will result in EOF). + let mut reader = reader.read_stream(container_length.min(reader.remaining()))?; + + // + // 2. parse the header section + // + let header_bytes = read_u16_prefixed_block(&mut reader)?.rest(); + + let mut header_reader = InputStream::new(header_bytes); + + let magic = header_reader.read(Self::HEADER_MAGIC.len())?; + if magic != Self::HEADER_MAGIC { + return Err(INVALID_TRANSLATIONS_BLOB); + } + + let language = read_fixedsize_str(&mut header_reader, Self::LANGUAGE_TAG_LEN)?; + if language.is_empty() { + return Err(INVALID_TRANSLATIONS_BLOB); + } + + let model = read_fixedsize_str(&mut header_reader, 4)?; + if model != crate::trezorhal::model::INTERNAL_NAME { + return Err(value_error!("Wrong Trezor model")); + } + + let version_bytes = header_reader.read(4)?; + let version = unwrap!(version_bytes.try_into()); + + let data_len = header_reader.read_u16_le()? as usize; + let data_hash: sha256::Digest = + unwrap!(header_reader.read(sha256::DIGEST_SIZE)?.try_into()); + + // ignore the rest of the header reader - this allows older firmware to + // understand newer header if there are only added items + _ = header_reader.rest(); + + // + // 3. parse the proof section + // + let mut proof_reader = read_u16_prefixed_block(&mut reader)?; + let proof_count = proof_reader.read_byte()? as usize; + let proof_length = proof_count * sha256::DIGEST_SIZE; + let proof_bytes = proof_reader.read(proof_length)?; + + // create a list of the proof items + // SAFETY: sha256::Digest is a plain array of u8, so any bytes are valid + let (_prefix, merkle_proof, _suffix) = unsafe { proof_bytes.align_to::() }; + if !_prefix.is_empty() || !_suffix.is_empty() { + return Err(INVALID_TRANSLATIONS_BLOB); + } + let signature = cosi::Signature::new( + proof_reader.read_byte()?, + unwrap!(proof_reader.read(ed25519::SIGNATURE_SIZE)?.try_into()), + ); + + // check that there is no trailing data in the proof section + if proof_reader.remaining() > 0 { + return Err(INVALID_TRANSLATIONS_BLOB); + } + + // check that the declared data section length matches the container size + if container_length - reader.tell() != data_len { + return Err(INVALID_TRANSLATIONS_BLOB); + } + + let new = Self { + header_bytes, + language, + version, + data_len, + data_hash, + merkle_proof, + signature, + total_len: container_length + Self::BLOB_MAGIC.len() + mem::size_of::(), + }; + new.verify()?; + Ok((new, reader)) + } + + fn verify_with_keys(&self, public_keys: &[ed25519::PublicKey]) -> Result<(), Error> { + let merkle_root = merkle_root(self.header_bytes, self.merkle_proof); + Ok(cosi::verify( + SIGNATURE_THRESHOLD, + &merkle_root, + public_keys, + &self.signature, + )?) + } + + pub fn verify(&self) -> Result<(), Error> { + let mut result = self.verify_with_keys(&public_keys::PUBLIC_KEYS); + #[cfg(feature = "debug")] + if result.is_err() { + // allow development keys + result = self.verify_with_keys(&public_keys::PUBLIC_KEYS_DEVEL); + } + result + } +} diff --git a/core/embed/rust/src/translations/flash.rs b/core/embed/rust/src/translations/flash.rs new file mode 100644 index 000000000..245b51d44 --- /dev/null +++ b/core/embed/rust/src/translations/flash.rs @@ -0,0 +1,80 @@ +use crate::{error::Error, trezorhal::translations}; + +use super::blob::Translations; + +static mut TRANSLATIONS_ON_FLASH: Option = None; + +pub fn erase() -> Result<(), Error> { + // SAFETY: Looking is safe (in a single threaded environment). + if unsafe { TRANSLATIONS_ON_FLASH.is_some() } { + return Err(value_error!("Translations blob already set")); + } + + // SAFETY: The blob is not set, so there are no references to it. + unsafe { translations::erase() }; + Ok(()) +} + +pub fn write(data: &[u8], offset: usize) -> Result<(), Error> { + // SAFETY: Looking is safe (in a single threaded environment). + if unsafe { TRANSLATIONS_ON_FLASH.is_some() } { + return Err(value_error!("Translations blob already set")); + } + + // SAFETY: The blob is not set, so there are no references to it. + let result = unsafe { translations::write(data, offset) }; + if result { + Ok(()) + } else { + Err(value_error!("Failed to write translations blob")) + } +} + +/// Load translations from flash, validate, and cache references to lookup +/// tables. +unsafe fn try_init<'a>() -> Result>, Error> { + // load from flash + let flash_data = unsafe { translations::get_blob() }; + // check if flash is empty + // TODO perhaps we should check the full area? + if flash_data[0..16] == [super::blob::EMPTY_BYTE; 16] { + return Ok(None); + } + // try to parse the data + Translations::new(flash_data).map(Some) +} + +pub fn init() { + // unsafe block because every individual operation here is unsafe + unsafe { + // SAFETY: it is OK to look + if TRANSLATIONS_ON_FLASH.is_some() { + return; + } + // SAFETY: try_init unconditionally loads the translations from flash. + // No other reference exists (TRANSLATIONS_ON_FLASH is None) so this is safe. + match try_init() { + // SAFETY: We are in a single-threaded environment so setting is OK. + // (note that from this point on a reference to flash data is held) + Ok(Some(t)) => TRANSLATIONS_ON_FLASH = Some(t), + Ok(None) => {} + // SAFETY: No reference to flash data exists so it is OK to erase it. + Err(_) => translations::erase(), + } + } +} + +// SAFETY: Invalidates all references coming from the flash-based blob. +// In other words, none should exist when this function is called. +pub unsafe fn deinit() { + // SAFETY: Given the above, we can safely clear the cached object. + unsafe { TRANSLATIONS_ON_FLASH = None }; +} + +// SAFETY: Gives out a reference to a TranslationsBlob which can be invalidated +// by calling `erase()`. The caller must not store this reference, nor any that +// come from it, beyond the lifetime of the current function. +pub unsafe fn get<'a>() -> Option<&'a Translations<'a>> { + // SAFETY: We are in a single-threaded environment. + unsafe { TRANSLATIONS_ON_FLASH.as_ref() } +} diff --git a/core/embed/rust/src/translations/generated/mod.rs b/core/embed/rust/src/translations/generated/mod.rs new file mode 100644 index 000000000..6a08560b1 --- /dev/null +++ b/core/embed/rust/src/translations/generated/mod.rs @@ -0,0 +1 @@ +pub mod translated_string; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs new file mode 100644 index 000000000..ce7584a11 --- /dev/null +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -0,0 +1,2526 @@ +//! generated from translated_string.rs.mako +//! (by running `make templates` in `core`) +//! do not edit manually! + +#![cfg_attr(rustfmt, rustfmt_skip)] +#[cfg(feature = "micropython")] +use crate::micropython::qstr::Qstr; + +#[derive(Debug, Copy, Clone, FromPrimitive)] +#[repr(u16)] +#[allow(non_camel_case_types)] +pub enum TranslatedString { + addr_mismatch__contact_support_at = 0, + addr_mismatch__key_mismatch = 1, + addr_mismatch__mismatch = 2, + addr_mismatch__support_url = 3, + addr_mismatch__wrong_derivation_path = 4, + addr_mismatch__xpub_mismatch = 5, + address__public_key = 6, + address__title_cosigner = 7, + address__title_receive_address = 8, + address__title_yours = 9, + address_details__derivation_path = 10, + address_details__title_receive_address = 11, + address_details__title_receiving_to = 12, + authenticate__confirm_template = 13, + authenticate__header = 14, + auto_lock__change_template = 15, + auto_lock__title = 16, + backup__can_back_up_anytime = 17, + backup__it_should_be_backed_up = 18, + backup__it_should_be_backed_up_now = 19, + backup__new_wallet_created = 20, + backup__new_wallet_successfully_created = 21, + backup__recover_anytime = 22, + backup__title_backup_wallet = 23, + backup__title_skip = 24, + backup__want_to_skip = 25, + binance__buy = 26, + binance__confirm_cancel = 27, + binance__confirm_input = 28, + binance__confirm_order = 29, + binance__confirm_output = 30, + binance__order_id = 31, + binance__pair = 32, + binance__price = 33, + binance__quantity = 34, + binance__sell = 35, + binance__sender_address = 36, + binance__side = 37, + bitcoin__commitment_data = 38, + bitcoin__confirm_locktime = 39, + bitcoin__create_proof_of_ownership = 40, + bitcoin__high_mining_fee_template = 41, + bitcoin__locktime_no_effect = 42, + bitcoin__locktime_set_to = 43, + bitcoin__locktime_set_to_blockheight = 44, + bitcoin__lot_of_change_outputs = 45, + bitcoin__multiple_accounts = 46, + bitcoin__new_fee_rate = 47, + bitcoin__simple_send_of = 48, + bitcoin__ticket_amount = 49, + bitcoin__title_confirm_details = 50, + bitcoin__title_finalize_transaction = 51, + bitcoin__title_high_mining_fee = 52, + bitcoin__title_meld_transaction = 53, + bitcoin__title_modify_amount = 54, + bitcoin__title_payjoin = 55, + bitcoin__title_proof_of_ownership = 56, + bitcoin__title_purchase_ticket = 57, + bitcoin__title_update_transaction = 58, + bitcoin__unknown_path = 59, + bitcoin__unknown_transaction = 60, + bitcoin__unusually_high_fee = 61, + bitcoin__unverified_external_inputs = 62, + bitcoin__valid_signature = 63, + bitcoin__voting_rights = 64, + buttons__abort = 65, + buttons__access = 66, + buttons__again = 67, + buttons__allow = 68, + buttons__back = 69, + buttons__back_up = 70, + buttons__cancel = 71, + buttons__change = 72, + buttons__check = 73, + buttons__check_again = 74, + buttons__close = 75, + buttons__confirm = 76, + buttons__continue = 77, + buttons__details = 78, + buttons__enable = 79, + buttons__enter = 80, + buttons__enter_share = 81, + buttons__export = 82, + buttons__format = 83, + buttons__go_back = 84, + buttons__hold_to_confirm = 85, + buttons__info = 86, + buttons__install = 87, + buttons__more_info = 88, + buttons__ok_i_understand = 89, + buttons__purchase = 90, + buttons__quit = 91, + buttons__restart = 92, + buttons__retry = 93, + buttons__select = 94, + buttons__set = 95, + buttons__show_all = 96, + buttons__show_details = 97, + buttons__show_words = 98, + buttons__skip = 99, + buttons__try_again = 100, + buttons__turn_off = 101, + buttons__turn_on = 102, + cardano__addr_base = 103, + cardano__addr_enterprise = 104, + cardano__addr_legacy = 105, + cardano__addr_pointer = 106, + cardano__addr_reward = 107, + cardano__address_no_staking = 108, + cardano__amount_burned_decimals_unknown = 109, + cardano__amount_minted_decimals_unknown = 110, + cardano__amount_sent_decimals_unknown = 111, + cardano__anonymous_pool = 112, + cardano__asset_fingerprint = 113, + cardano__auxiliary_data_hash = 114, + cardano__block = 115, + cardano__catalyst = 116, + cardano__certificate = 117, + cardano__change_output = 118, + cardano__check_all_items = 119, + cardano__choose_level_of_details = 120, + cardano__collateral_input_id = 121, + cardano__collateral_input_index = 122, + cardano__collateral_output_contains_tokens = 123, + cardano__collateral_return = 124, + cardano__confirm = 125, + cardano__confirm_signing_stake_pool = 126, + cardano__confirm_transaction = 127, + cardano__confirming_a_multisig_transaction = 128, + cardano__confirming_a_plutus_transaction = 129, + cardano__confirming_pool_registration = 130, + cardano__confirming_transction = 131, + cardano__cost = 132, + cardano__credential_mismatch = 133, + cardano__datum_hash = 134, + cardano__delegating_to = 135, + cardano__for_account_and_index_template = 136, + cardano__for_account_template = 137, + cardano__for_key_hash = 138, + cardano__for_script = 139, + cardano__inline_datum = 140, + cardano__input_id = 141, + cardano__input_index = 142, + cardano__intro_text_change = 143, + cardano__intro_text_owned_by_device = 144, + cardano__intro_text_registration_payment = 145, + cardano__key_hash = 146, + cardano__margin = 147, + cardano__multisig_path = 148, + cardano__nested_scripts_template = 149, + cardano__network = 150, + cardano__no_output_tx = 151, + cardano__nonce = 152, + cardano__other = 153, + cardano__path = 154, + cardano__pledge = 155, + cardano__pointer = 156, + cardano__policy_id = 157, + cardano__pool_metadata_hash = 158, + cardano__pool_metadata_url = 159, + cardano__pool_owner = 160, + cardano__pool_reward_account = 161, + cardano__reference_input_id = 162, + cardano__reference_input_index = 163, + cardano__reference_script = 164, + cardano__required_signer = 165, + cardano__reward = 166, + cardano__reward_address = 167, + cardano__reward_eligibility_warning = 168, + cardano__rewards_go_to = 169, + cardano__script = 170, + cardano__script_all = 171, + cardano__script_any = 172, + cardano__script_data_hash = 173, + cardano__script_hash = 174, + cardano__script_invalid_before = 175, + cardano__script_invalid_hereafter = 176, + cardano__script_key = 177, + cardano__script_n_of_k = 178, + cardano__script_reward = 179, + cardano__sending = 180, + cardano__show_simple = 181, + cardano__sign_tx_path_template = 182, + cardano__stake_delegation = 183, + cardano__stake_deregistration = 184, + cardano__stake_pool_registration = 185, + cardano__stake_pool_registration_pool_id = 186, + cardano__stake_registration = 187, + cardano__staking_key_for_account = 188, + cardano__to_pool = 189, + cardano__token_minting_path = 190, + cardano__total_collateral = 191, + cardano__transaction = 192, + cardano__transaction_contains_minting_or_burning = 193, + cardano__transaction_contains_script_address_no_datum = 194, + cardano__transaction_fee = 195, + cardano__transaction_id = 196, + cardano__transaction_no_collateral_input = 197, + cardano__transaction_no_script_data_hash = 198, + cardano__transaction_output_contains_tokens = 199, + cardano__ttl = 200, + cardano__unknown_collateral_amount = 201, + cardano__unusual_path = 202, + cardano__valid_since = 203, + cardano__verify_script = 204, + cardano__vote_key_registration = 205, + cardano__vote_public_key = 206, + cardano__voting_purpose = 207, + cardano__warning = 208, + cardano__weight = 209, + cardano__withdrawal_for_address_template = 210, + cardano__x_of_y_signatures_template = 211, + coinjoin__access_account = 212, + coinjoin__do_not_disconnect = 213, + coinjoin__max_mining_fee = 214, + coinjoin__max_rounds = 215, + coinjoin__title = 216, + coinjoin__title_do_not_disconnect = 217, + coinjoin__title_progress = 218, + coinjoin__waiting_for_others = 219, + confirm_total__fee_rate = 220, + confirm_total__sending_from_account = 221, + confirm_total__title_fee = 222, + confirm_total__title_sending_from = 223, + debug__loading_seed = 224, + debug__loading_seed_not_recommended = 225, + device_name__change_template = 226, + device_name__title = 227, + entropy__send = 228, + entropy__title = 229, + entropy__title_confirm = 230, + eos__about_to_sign_template = 231, + eos__action_name = 232, + eos__arbitrary_data = 233, + eos__buy_ram = 234, + eos__bytes = 235, + eos__cancel_vote = 236, + eos__checksum = 237, + eos__code = 238, + eos__contract = 239, + eos__cpu = 240, + eos__creator = 241, + eos__delegate = 242, + eos__delete_auth = 243, + eos__from = 244, + eos__link_auth = 245, + eos__memo = 246, + eos__name = 247, + eos__net = 248, + eos__new_account = 249, + eos__owner = 250, + eos__parent = 251, + eos__payer = 252, + eos__permission = 253, + eos__proxy = 254, + eos__receiver = 255, + eos__refund = 256, + eos__requirement = 257, + eos__sell_ram = 258, + eos__sender = 259, + eos__sign_transaction = 260, + eos__threshold = 261, + eos__to = 262, + eos__transfer = 263, + eos__type = 264, + eos__undelegate = 265, + eos__unlink_auth = 266, + eos__update_auth = 267, + eos__vote_for_producers = 268, + eos__vote_for_proxy = 269, + eos__voter = 270, + ethereum__amount_sent = 271, + ethereum__contract = 272, + ethereum__data_size_template = 273, + ethereum__gas_limit = 274, + ethereum__gas_price = 275, + ethereum__max_gas_price = 276, + ethereum__name_and_version = 277, + ethereum__new_contract = 278, + ethereum__no_message_field = 279, + ethereum__priority_fee = 280, + ethereum__show_full_array = 281, + ethereum__show_full_domain = 282, + ethereum__show_full_message = 283, + ethereum__show_full_struct = 284, + ethereum__sign_eip712 = 285, + ethereum__title_confirm_data = 286, + ethereum__title_confirm_domain = 287, + ethereum__title_confirm_message = 288, + ethereum__title_confirm_struct = 289, + ethereum__title_confirm_typed_data = 290, + ethereum__title_signing_address = 291, + ethereum__units_template = 292, + ethereum__unknown_token = 293, + ethereum__valid_signature = 294, + experimental_mode__enable = 295, + experimental_mode__only_for_dev = 296, + experimental_mode__title = 297, + fido__already_registered = 298, + fido__device_already_registered = 299, + fido__device_already_registered_with_template = 300, + fido__device_not_registered = 301, + fido__does_not_belong = 302, + fido__erase_credentials = 303, + fido__export_credentials = 304, + fido__not_registered = 305, + fido__not_registered_with_template = 306, + fido__please_enable_pin_protection = 307, + fido__title_authenticate = 308, + fido__title_import_credential = 309, + fido__title_list_credentials = 310, + fido__title_register = 311, + fido__title_remove_credential = 312, + fido__title_reset = 313, + fido__title_u2f_auth = 314, + fido__title_u2f_register = 315, + fido__title_verify_user = 316, + fido__unable_to_verify_user = 317, + fido__wanna_erase_credentials = 318, + firmware_update__title = 319, + firmware_update__title_fingerprint = 320, + homescreen__click_to_connect = 321, + homescreen__click_to_unlock = 322, + homescreen__title_backup_failed = 323, + homescreen__title_backup_needed = 324, + homescreen__title_coinjoin_authorized = 325, + homescreen__title_experimental_mode = 326, + homescreen__title_no_usb_connection = 327, + homescreen__title_pin_not_set = 328, + homescreen__title_seedless = 329, + homescreen__title_set = 330, + inputs__back = 331, + inputs__cancel = 332, + inputs__delete = 333, + inputs__enter = 334, + inputs__return = 335, + inputs__show = 336, + inputs__space = 337, + joint__title = 338, + joint__to_the_total_amount = 339, + joint__you_are_contributing = 340, + language__change_to = 341, + language__changed = 342, + language__progress = 343, + language__title = 344, + lockscreen__tap_to_connect = 345, + lockscreen__tap_to_unlock = 346, + lockscreen__title_locked = 347, + lockscreen__title_not_connected = 348, + misc__decrypt_value = 349, + misc__encrypt_value = 350, + misc__title_suite_labeling = 351, + modify_amount__decrease_amount = 352, + modify_amount__increase_amount = 353, + modify_amount__new_amount = 354, + modify_amount__title = 355, + modify_fee__decrease_fee = 356, + modify_fee__fee_rate = 357, + modify_fee__increase_fee = 358, + modify_fee__new_transaction_fee = 359, + modify_fee__no_change = 360, + modify_fee__title = 361, + modify_fee__transaction_fee = 362, + monero__confirm_export = 363, + monero__confirm_ki_sync = 364, + monero__confirm_refresh = 365, + monero__confirm_unlock_time = 366, + monero__hashing_inputs = 367, + monero__payment_id = 368, + monero__postprocessing = 369, + monero__processing = 370, + monero__processing_inputs = 371, + monero__processing_outputs = 372, + monero__signing = 373, + monero__signing_inputs = 374, + monero__unlock_time_set_template = 375, + monero__wanna_export_tx_der = 376, + monero__wanna_export_tx_key = 377, + monero__wanna_export_watchkey = 378, + monero__wanna_start_refresh = 379, + monero__wanna_sync_key_images = 380, + nem__absolute = 381, + nem__activate = 382, + nem__add = 383, + nem__confirm_action = 384, + nem__confirm_address = 385, + nem__confirm_creation_fee = 386, + nem__confirm_mosaic = 387, + nem__confirm_multisig_fee = 388, + nem__confirm_namespace = 389, + nem__confirm_payload = 390, + nem__confirm_properties = 391, + nem__confirm_rental_fee = 392, + nem__confirm_transfer_of = 393, + nem__convert_account_to_multisig = 394, + nem__cosign_transaction_for = 395, + nem__cosignatory = 396, + nem__create_mosaic = 397, + nem__create_namespace = 398, + nem__deactivate = 399, + nem__decrease = 400, + nem__description = 401, + nem__divisibility_and_levy_cannot_be_shown = 402, + nem__encrypted = 403, + nem__final_confirm = 404, + nem__immutable = 405, + nem__increase = 406, + nem__initial_supply = 407, + nem__initiate_transaction_for = 408, + nem__levy_divisibility = 409, + nem__levy_fee = 410, + nem__levy_fee_of = 411, + nem__levy_mosaic = 412, + nem__levy_namespace = 413, + nem__levy_recipient = 414, + nem__levy_type = 415, + nem__modify_supply_for = 416, + nem__modify_the_number_of_cosignatories_by = 417, + nem__mutable = 418, + nem__of = 419, + nem__percentile = 420, + nem__raw_units_template = 421, + nem__remote_harvesting = 422, + nem__remove = 423, + nem__set_minimum_cosignatories_to = 424, + nem__sign_tx_fee_template = 425, + nem__supply_change = 426, + nem__supply_units_template = 427, + nem__transferable = 428, + nem__under_namespace = 429, + nem__unencrypted = 430, + nem__unknown_mosaic = 431, + passphrase__access_hidden_wallet = 432, + passphrase__always_on_device = 433, + passphrase__from_host_not_shown = 434, + passphrase__hidden_wallet = 435, + passphrase__hide = 436, + passphrase__next_screen_will_show_passphrase = 437, + passphrase__please_enter = 438, + passphrase__revoke_on_device = 439, + passphrase__title_confirm = 440, + passphrase__title_enter = 441, + passphrase__title_hide = 442, + passphrase__title_settings = 443, + passphrase__title_source = 444, + passphrase__turn_off = 445, + passphrase__turn_on = 446, + pin__change = 447, + pin__changed = 448, + pin__cursor_will_change = 449, + pin__diff_from_wipe_code = 450, + pin__disabled = 451, + pin__enabled = 452, + pin__enter = 453, + pin__enter_new = 454, + pin__entered_not_valid = 455, + pin__info = 456, + pin__invalid_pin = 457, + pin__last_attempt = 458, + pin__mismatch = 459, + pin__pin_mismatch = 460, + pin__please_check_again = 461, + pin__reenter_new = 462, + pin__reenter_to_confirm = 463, + pin__should_be_long = 464, + pin__title_check_pin = 465, + pin__title_settings = 466, + pin__title_wrong_pin = 467, + pin__tries_left = 468, + pin__turn_off = 469, + pin__turn_on = 470, + pin__wrong_pin = 471, + plurals__contains_x_keys = 472, + plurals__lock_after_x_hours = 473, + plurals__lock_after_x_milliseconds = 474, + plurals__lock_after_x_minutes = 475, + plurals__lock_after_x_seconds = 476, + plurals__sign_x_actions = 477, + plurals__transaction_of_x_operations = 478, + plurals__x_groups_needed = 479, + plurals__x_shares_needed = 480, + progress__authenticity_check = 481, + progress__done = 482, + progress__loading_transaction = 483, + progress__locking_device = 484, + progress__one_second_left = 485, + progress__please_wait = 486, + progress__processing = 487, + progress__refreshing = 488, + progress__signing_transaction = 489, + progress__syncing = 490, + progress__x_seconds_left_template = 491, + reboot_to_bootloader__restart = 492, + reboot_to_bootloader__title = 493, + reboot_to_bootloader__version_by_template = 494, + recovery__cancel_dry_run = 495, + recovery__check_dry_run = 496, + recovery__cursor_will_change = 497, + recovery__dry_run_bip39_valid_match = 498, + recovery__dry_run_bip39_valid_mismatch = 499, + recovery__dry_run_slip39_valid_match = 500, + recovery__dry_run_slip39_valid_mismatch = 501, + recovery__enter_any_share = 502, + recovery__enter_backup = 503, + recovery__enter_different_share = 504, + recovery__enter_share_from_diff_group = 505, + recovery__group_num_template = 506, + recovery__group_threshold_reached = 507, + recovery__invalid_seed_entered = 508, + recovery__invalid_share_entered = 509, + recovery__more_shares_needed = 510, + recovery__num_of_words = 511, + recovery__only_first_n_letters = 512, + recovery__progress_will_be_lost = 513, + recovery__select_num_of_words = 514, + recovery__share_already_entered = 515, + recovery__share_from_another_shamir = 516, + recovery__share_num_template = 517, + recovery__title = 518, + recovery__title_cancel_dry_run = 519, + recovery__title_cancel_recovery = 520, + recovery__title_dry_run = 521, + recovery__title_recover = 522, + recovery__title_remaining_shares = 523, + recovery__type_word_x_of_y_template = 524, + recovery__wallet_recovered = 525, + recovery__wanna_cancel_dry_run = 526, + recovery__wanna_cancel_recovery = 527, + recovery__word_count_template = 528, + recovery__word_x_of_y_template = 529, + recovery__x_more_items_starting_template_plural = 530, + recovery__x_more_shares_needed_template_plural = 531, + recovery__x_of_y_entered_template = 532, + recovery__you_have_entered = 533, + reset__advanced_group_threshold_info = 534, + reset__all_x_of_y_template = 535, + reset__any_x_of_y_template = 536, + reset__button_create = 537, + reset__button_recover = 538, + reset__by_continuing = 539, + reset__check_backup_title = 540, + reset__check_group_share_title_template = 541, + reset__check_seed_title = 542, + reset__check_share_title_template = 543, + reset__continue_with_next_share = 544, + reset__continue_with_share_template = 545, + reset__finished_verifying_group_template = 546, + reset__finished_verifying_seed = 547, + reset__finished_verifying_shares = 548, + reset__group_description = 549, + reset__group_info = 550, + reset__group_share_checked_successfully_template = 551, + reset__group_share_title_template = 552, + reset__more_info_at = 553, + reset__need_all_share_template = 554, + reset__need_any_share_template = 555, + reset__needed_to_form_a_group = 556, + reset__needed_to_recover_your_wallet = 557, + reset__never_make_digital_copy = 558, + reset__num_of_share_holders_template = 559, + reset__num_of_shares_advanced_info_template = 560, + reset__num_of_shares_basic_info = 561, + reset__num_shares_for_group_template = 562, + reset__number_of_shares_info = 563, + reset__one_share = 564, + reset__only_one_share_will_be_created = 565, + reset__recovery_seed_title = 566, + reset__recovery_share_title_template = 567, + reset__required_number_of_groups = 568, + reset__select_correct_word = 569, + reset__select_word_template = 570, + reset__select_word_x_of_y_template = 571, + reset__set_it_to_count_template = 572, + reset__share_checked_successfully_template = 573, + reset__share_words_title = 574, + reset__slip39_checklist_num_groups = 575, + reset__slip39_checklist_num_shares = 576, + reset__slip39_checklist_set_num_groups = 577, + reset__slip39_checklist_set_num_shares = 578, + reset__slip39_checklist_set_sizes = 579, + reset__slip39_checklist_set_sizes_longer = 580, + reset__slip39_checklist_set_threshold = 581, + reset__slip39_checklist_title = 582, + reset__slip39_checklist_write_down = 583, + reset__slip39_checklist_write_down_recovery = 584, + reset__the_threshold_sets_the_number_of_shares = 585, + reset__threshold_info = 586, + reset__title_backup_is_done = 587, + reset__title_create_wallet = 588, + reset__title_create_wallet_shamir = 589, + reset__title_group_threshold = 590, + reset__title_number_of_groups = 591, + reset__title_number_of_shares = 592, + reset__title_set_group_threshold = 593, + reset__title_set_number_of_groups = 594, + reset__title_set_number_of_shares = 595, + reset__title_set_threshold = 596, + reset__to_form_group_template = 597, + reset__tos_link = 598, + reset__total_number_of_shares_in_group_template = 599, + reset__use_your_backup = 600, + reset__write_down_words_template = 601, + reset__wrong_word_selected = 602, + reset__you_need_one_share = 603, + reset__your_backup_is_done = 604, + ripple__confirm_tag = 605, + ripple__destination_tag_template = 606, + rotation__change_template = 607, + rotation__east = 608, + rotation__north = 609, + rotation__south = 610, + rotation__title_change = 611, + rotation__west = 612, + safety_checks__approve_unsafe_always = 613, + safety_checks__approve_unsafe_temporary = 614, + safety_checks__enforce_strict = 615, + safety_checks__title = 616, + safety_checks__title_safety_override = 617, + sd_card__all_data_will_be_lost = 618, + sd_card__card_required = 619, + sd_card__disable = 620, + sd_card__disabled = 621, + sd_card__enable = 622, + sd_card__enabled = 623, + sd_card__error = 624, + sd_card__format_card = 625, + sd_card__insert_correct_card = 626, + sd_card__please_insert = 627, + sd_card__please_unplug_and_insert = 628, + sd_card__problem_accessing = 629, + sd_card__refresh = 630, + sd_card__refreshed = 631, + sd_card__restart = 632, + sd_card__title = 633, + sd_card__title_problem = 634, + sd_card__unknown_filesystem = 635, + sd_card__unplug_and_insert_correct = 636, + sd_card__use_different_card = 637, + sd_card__wanna_format = 638, + sd_card__wrong_sd_card = 639, + send__address_path = 640, + send__confirm_sending = 641, + send__from_multiple_accounts = 642, + send__including_fee = 643, + send__maximum_fee = 644, + send__receiving_to_multisig = 645, + send__title_confirm_sending = 646, + send__title_joint_transaction = 647, + send__title_receiving_to = 648, + send__title_sending = 649, + send__title_sending_amount = 650, + send__title_sending_to = 651, + send__to_the_total_amount = 652, + send__total_amount = 653, + send__transaction_id = 654, + send__you_are_contributing = 655, + share_words__words_in_order = 656, + share_words__wrote_down_all = 657, + sign_message__bytes_template = 658, + sign_message__confirm_address = 659, + sign_message__confirm_message = 660, + sign_message__message_size = 661, + sign_message__verify_address = 662, + solana__account_index = 663, + solana__associated_token_account = 664, + solana__confirm_multisig = 665, + solana__expected_fee = 666, + solana__instruction_accounts_template = 667, + solana__instruction_data = 668, + solana__instruction_is_multisig = 669, + solana__is_provided_via_lookup_table_template = 670, + solana__lookup_table_address = 671, + solana__multiple_signers = 672, + solana__token_address = 673, + solana__transaction_contains_unknown_instructions = 674, + solana__transaction_requires_x_signers_template = 675, + stellar__account_merge = 676, + stellar__account_thresholds = 677, + stellar__add_signer = 678, + stellar__add_trust = 679, + stellar__all_will_be_sent_to = 680, + stellar__allow_trust = 681, + stellar__asset = 682, + stellar__balance_id = 683, + stellar__bump_sequence = 684, + stellar__buying = 685, + stellar__claim_claimable_balance = 686, + stellar__clear_data = 687, + stellar__clear_flags = 688, + stellar__confirm_issuer = 689, + stellar__confirm_memo = 690, + stellar__confirm_network = 691, + stellar__confirm_operation = 692, + stellar__confirm_stellar = 693, + stellar__confirm_timebounds = 694, + stellar__create_account = 695, + stellar__debited_amount = 696, + stellar__delete = 697, + stellar__delete_passive_offer = 698, + stellar__delete_trust = 699, + stellar__destination = 700, + stellar__exchanges_require_memo = 701, + stellar__final_confirm = 702, + stellar__hash = 703, + stellar__high = 704, + stellar__home_domain = 705, + stellar__inflation = 706, + stellar__initial_balance = 707, + stellar__initialize_signing_with = 708, + stellar__issuer_template = 709, + stellar__key = 710, + stellar__limit = 711, + stellar__low = 712, + stellar__master_weight = 713, + stellar__medium = 714, + stellar__new_offer = 715, + stellar__new_passive_offer = 716, + stellar__no_memo_set = 717, + stellar__no_restriction = 718, + stellar__on_network_template = 719, + stellar__path_pay = 720, + stellar__path_pay_at_least = 721, + stellar__pay = 722, + stellar__pay_at_most = 723, + stellar__preauth_transaction = 724, + stellar__price_per_template = 725, + stellar__private_network = 726, + stellar__remove_signer = 727, + stellar__revoke_trust = 728, + stellar__selling = 729, + stellar__set_data = 730, + stellar__set_flags = 731, + stellar__set_sequence_to_template = 732, + stellar__sign_tx_count_template = 733, + stellar__sign_tx_fee_template = 734, + stellar__source_account = 735, + stellar__testnet_network = 736, + stellar__trusted_account = 737, + stellar__update = 738, + stellar__valid_from = 739, + stellar__valid_to = 740, + stellar__value_sha256 = 741, + stellar__wanna_clean_value_key_template = 742, + stellar__your_account = 743, + tezos__baker_address = 744, + tezos__balance = 745, + tezos__ballot = 746, + tezos__confirm_delegation = 747, + tezos__confirm_origination = 748, + tezos__delegator = 749, + tezos__proposal = 750, + tezos__register_delegate = 751, + tezos__remove_delegation = 752, + tezos__submit_ballot = 753, + tezos__submit_proposal = 754, + tezos__submit_proposals = 755, + tutorial__middle_click = 756, + tutorial__press_and_hold = 757, + tutorial__ready_to_use = 758, + tutorial__scroll_down = 759, + tutorial__sure_you_want_skip = 760, + tutorial__title_hello = 761, + tutorial__title_screen_scroll = 762, + tutorial__title_skip = 763, + tutorial__title_tutorial_complete = 764, + tutorial__use_trezor = 765, + tutorial__welcome_press_right = 766, + u2f__get = 767, + u2f__set_template = 768, + u2f__title_get = 769, + u2f__title_set = 770, + wipe__info = 771, + wipe__title = 772, + wipe__want_to_wipe = 773, + wipe_code__change = 774, + wipe_code__changed = 775, + wipe_code__diff_from_pin = 776, + wipe_code__disabled = 777, + wipe_code__enabled = 778, + wipe_code__enter_new = 779, + wipe_code__info = 780, + wipe_code__invalid = 781, + wipe_code__mismatch = 782, + wipe_code__reenter = 783, + wipe_code__reenter_to_confirm = 784, + wipe_code__title_check = 785, + wipe_code__title_invalid = 786, + wipe_code__title_settings = 787, + wipe_code__turn_off = 788, + wipe_code__turn_on = 789, + wipe_code__wipe_code_mismatch = 790, + word_count__title = 791, + words__account = 792, + words__account_colon = 793, + words__address = 794, + words__amount = 795, + words__are_you_sure = 796, + words__array_of = 797, + words__blockhash = 798, + words__buying = 799, + words__confirm = 800, + words__confirm_fee = 801, + words__contains = 802, + words__continue_anyway = 803, + words__continue_with = 804, + words__error = 805, + words__fee = 806, + words__from = 807, + words__keep_it_safe = 808, + words__know_what_your_doing = 809, + words__my_trezor = 810, + words__no = 811, + words__outputs = 812, + words__please_check_again = 813, + words__please_try_again = 814, + words__really_wanna = 815, + words__recipient = 816, + words__sign = 817, + words__signer = 818, + words__title_check = 819, + words__title_group = 820, + words__title_information = 821, + words__title_remember = 822, + words__title_share = 823, + words__title_shares = 824, + words__title_success = 825, + words__title_summary = 826, + words__title_threshold = 827, + words__unknown = 828, + words__warning = 829, + words__writable = 830, + words__yes = 831, + reboot_to_bootloader__just_a_moment = 832, +} + +impl TranslatedString { + pub fn untranslated(self) -> &'static str { + match self { + Self::addr_mismatch__contact_support_at => "Please contact Trezor support at", + Self::addr_mismatch__key_mismatch => "Key mismatch?", + Self::addr_mismatch__mismatch => "Address mismatch?", + Self::addr_mismatch__support_url => "trezor.io/support", + Self::addr_mismatch__wrong_derivation_path => "Wrong derivation path for selected account.", + Self::addr_mismatch__xpub_mismatch => "XPUB mismatch?", + Self::address__public_key => "Public key", + Self::address__title_cosigner => "COSIGNER", + Self::address__title_receive_address => "RECEIVE ADDRESS", + Self::address__title_yours => "YOURS", + Self::address_details__derivation_path => "Derivation path:", + Self::address_details__title_receive_address => "RECEIVE ADDRESS", + Self::address_details__title_receiving_to => "RECEIVING TO", + Self::authenticate__confirm_template => "Allow connected computer to confirm your {} is genuine?", + Self::authenticate__header => "Authenticate device", + Self::auto_lock__change_template => "Auto-lock your Trezor after {} of inactivity?", + Self::auto_lock__title => "AUTO-LOCK DELAY", + Self::backup__can_back_up_anytime => "You can back up your Trezor once, at any time.", + Self::backup__it_should_be_backed_up => "You should back up your new wallet right now.", + Self::backup__it_should_be_backed_up_now => "It should be backed up now!", + Self::backup__new_wallet_created => "New wallet created.\n", + Self::backup__new_wallet_successfully_created => "New wallet created successfully.", + Self::backup__recover_anytime => "You can use your backup to recover your wallet at any time.", + Self::backup__title_backup_wallet => "BACK UP WALLET", + Self::backup__title_skip => "SKIP BACKUP", + Self::backup__want_to_skip => "Are you sure you want to skip the backup?", + Self::binance__buy => "Buy", + Self::binance__confirm_cancel => "Confirm cancel", + Self::binance__confirm_input => "Confirm input", + Self::binance__confirm_order => "Confirm order", + Self::binance__confirm_output => "Confirm output", + Self::binance__order_id => "Order ID:", + Self::binance__pair => "Pair:", + Self::binance__price => "Price:", + Self::binance__quantity => "Quantity:", + Self::binance__sell => "Sell", + Self::binance__sender_address => "Sender address:", + Self::binance__side => "Side:", + Self::bitcoin__commitment_data => "Commitment data:", + Self::bitcoin__confirm_locktime => "Confirm locktime", + Self::bitcoin__create_proof_of_ownership => "Do you want to create a proof of ownership?", + Self::bitcoin__high_mining_fee_template => "The mining fee of\n{}\nis unexpectedly high.", + Self::bitcoin__locktime_no_effect => "Locktime is set but will have no effect.", + Self::bitcoin__locktime_set_to => "Locktime set to:", + Self::bitcoin__locktime_set_to_blockheight => "Locktime set to blockheight:", + Self::bitcoin__lot_of_change_outputs => "A lot of change-outputs.", + Self::bitcoin__multiple_accounts => "Multiple accounts", + Self::bitcoin__new_fee_rate => "New fee rate:", + Self::bitcoin__simple_send_of => "Simple send of", + Self::bitcoin__ticket_amount => "Ticket amount:", + Self::bitcoin__title_confirm_details => "CONFIRM DETAILS", + Self::bitcoin__title_finalize_transaction => "FINALIZE TRANSACTION", + Self::bitcoin__title_high_mining_fee => "HIGH MINING FEE", + Self::bitcoin__title_meld_transaction => "MELD TRANSACTIONS", + Self::bitcoin__title_modify_amount => "MODIFY AMOUNT", + Self::bitcoin__title_payjoin => "PAYJOIN", + Self::bitcoin__title_proof_of_ownership => "PROOF OF OWNERSHIP", + Self::bitcoin__title_purchase_ticket => "PURCHASE TICKET", + Self::bitcoin__title_update_transaction => "UPDATE TRANSACTION", + Self::bitcoin__unknown_path => "Unknown path", + Self::bitcoin__unknown_transaction => "Unknown transaction", + Self::bitcoin__unusually_high_fee => "Unusually high fee.", + Self::bitcoin__unverified_external_inputs => "The transaction contains unverified external inputs.", + Self::bitcoin__valid_signature => "The signature is valid.", + Self::bitcoin__voting_rights => "Voting rights to:", + Self::buttons__abort => "ABORT", + Self::buttons__access => "ACCESS", + Self::buttons__again => "AGAIN", + Self::buttons__allow => "ALLOW", + Self::buttons__back => "BACK", + Self::buttons__back_up => "BACK UP", + Self::buttons__cancel => "CANCEL", + Self::buttons__change => "CHANGE", + Self::buttons__check => "CHECK", + Self::buttons__check_again => "CHECK AGAIN", + Self::buttons__close => "CLOSE", + Self::buttons__confirm => "CONFIRM", + Self::buttons__continue => "CONTINUE", + Self::buttons__details => "DETAILS", + Self::buttons__enable => "ENABLE", + Self::buttons__enter => "ENTER", + Self::buttons__enter_share => "ENTER SHARE", + Self::buttons__export => "EXPORT", + Self::buttons__format => "FORMAT", + Self::buttons__go_back => "GO BACK", + Self::buttons__hold_to_confirm => "HOLD TO CONFIRM", + Self::buttons__info => "INFO", + Self::buttons__install => "INSTALL", + Self::buttons__more_info => "MORE INFO", + Self::buttons__ok_i_understand => "OK, I UNDERSTAND", + Self::buttons__purchase => "PURCHASE", + Self::buttons__quit => "QUIT", + Self::buttons__restart => "RESTART", + Self::buttons__retry => "RETRY", + Self::buttons__select => "SELECT", + Self::buttons__set => "SET", + Self::buttons__show_all => "SHOW ALL", + Self::buttons__show_details => "SHOW DETAILS", + Self::buttons__show_words => "SHOW WORDS", + Self::buttons__skip => "SKIP", + Self::buttons__try_again => "TRY AGAIN", + Self::buttons__turn_off => "TURN OFF", + Self::buttons__turn_on => "TURN ON", + Self::cardano__addr_base => "Base", + Self::cardano__addr_enterprise => "Enterprise", + Self::cardano__addr_legacy => "Legacy", + Self::cardano__addr_pointer => "Pointer", + Self::cardano__addr_reward => "Reward", + Self::cardano__address_no_staking => "address - no staking rewards.", + Self::cardano__amount_burned_decimals_unknown => "Amount burned (decimals unknown):", + Self::cardano__amount_minted_decimals_unknown => "Amount minted (decimals unknown):", + Self::cardano__amount_sent_decimals_unknown => "Amount sent (decimals unknown):", + Self::cardano__anonymous_pool => "Pool has no metadata (anonymous pool)", + Self::cardano__asset_fingerprint => "Asset fingerprint:", + Self::cardano__auxiliary_data_hash => "Auxiliary data hash:", + Self::cardano__block => "Block", + Self::cardano__catalyst => "Catalyst", + Self::cardano__certificate => "Certificate", + Self::cardano__change_output => "Change output", + Self::cardano__check_all_items => "Check all items carefully.", + Self::cardano__choose_level_of_details => "Choose level of details:", + Self::cardano__collateral_input_id => "Collateral input ID:", + Self::cardano__collateral_input_index => "Collateral input index:", + Self::cardano__collateral_output_contains_tokens => "The collateral return output contains tokens.", + Self::cardano__collateral_return => "Collateral return", + Self::cardano__confirm => "Confirm:", + Self::cardano__confirm_signing_stake_pool => "Confirm signing the stake pool registration as an owner.", + Self::cardano__confirm_transaction => "Confirm transaction", + Self::cardano__confirming_a_multisig_transaction => "Confirming a multisig transaction.", + Self::cardano__confirming_a_plutus_transaction => "Confirming a Plutus transaction.", + Self::cardano__confirming_pool_registration => "Confirming pool registration as owner.", + Self::cardano__confirming_transction => "Confirming a transaction.", + Self::cardano__cost => "Cost", + Self::cardano__credential_mismatch => "Credential doesn't match payment credential.", + Self::cardano__datum_hash => "Datum hash:", + Self::cardano__delegating_to => "Delegating to:", + Self::cardano__for_account_and_index_template => "for account {} and index {}:", + Self::cardano__for_account_template => "for account {}:", + Self::cardano__for_key_hash => "for key hash:", + Self::cardano__for_script => "for script:", + Self::cardano__inline_datum => "Inline datum", + Self::cardano__input_id => "Input ID:", + Self::cardano__input_index => "Input index:", + Self::cardano__intro_text_change => "The following address is a change address. Its", + Self::cardano__intro_text_owned_by_device => "The following address is owned by this device. Its", + Self::cardano__intro_text_registration_payment => "The vote key registration payment address is owned by this device. Its", + Self::cardano__key_hash => "key hash", + Self::cardano__margin => "Margin", + Self::cardano__multisig_path => "multi-sig path", + Self::cardano__nested_scripts_template => "Contains {} nested scripts.", + Self::cardano__network => "Network:", + Self::cardano__no_output_tx => "Transaction has no outputs, network cannot be verified.", + Self::cardano__nonce => "Nonce:", + Self::cardano__other => "other", + Self::cardano__path => "path", + Self::cardano__pledge => "Pledge", + Self::cardano__pointer => "pointer", + Self::cardano__policy_id => "Policy ID:", + Self::cardano__pool_metadata_hash => "Pool metadata hash:", + Self::cardano__pool_metadata_url => "Pool metadata url:", + Self::cardano__pool_owner => "Pool owner:", + Self::cardano__pool_reward_account => "Pool reward account:", + Self::cardano__reference_input_id => "Reference input ID:", + Self::cardano__reference_input_index => "Reference input index:", + Self::cardano__reference_script => "Reference script", + Self::cardano__required_signer => "Required signer", + Self::cardano__reward => "reward", + Self::cardano__reward_address => "Address is a reward address.", + Self::cardano__reward_eligibility_warning => "Warning: The address is not a payment address, it is not eligible for rewards.", + Self::cardano__rewards_go_to => "Rewards go to:", + Self::cardano__script => "script", + Self::cardano__script_all => "All", + Self::cardano__script_any => "Any", + Self::cardano__script_data_hash => "Script data hash:", + Self::cardano__script_hash => "Script hash:", + Self::cardano__script_invalid_before => "Invalid before", + Self::cardano__script_invalid_hereafter => "Invalid hereafter", + Self::cardano__script_key => "Key", + Self::cardano__script_n_of_k => "N of K", + Self::cardano__script_reward => "script reward", + Self::cardano__sending => "Sending", + Self::cardano__show_simple => "Show Simple", + Self::cardano__sign_tx_path_template => "Sign transaction with {}:", + Self::cardano__stake_delegation => "Stake delegation", + Self::cardano__stake_deregistration => "Stake key deregistration", + Self::cardano__stake_pool_registration => "Stakepool registration", + Self::cardano__stake_pool_registration_pool_id => "Stake pool registration\nPool ID:", + Self::cardano__stake_registration => "Stake key registration", + Self::cardano__staking_key_for_account => "Staking key for account", + Self::cardano__to_pool => "to pool:", + Self::cardano__token_minting_path => "token minting path", + Self::cardano__total_collateral => "Total collateral:", + Self::cardano__transaction => "Transaction", + Self::cardano__transaction_contains_minting_or_burning => "The transaction contains minting or burning of tokens.", + Self::cardano__transaction_contains_script_address_no_datum => "The following transaction output contains a script address, but does not contain a datum.", + Self::cardano__transaction_fee => "Transaction fee:", + Self::cardano__transaction_id => "Transaction ID:", + Self::cardano__transaction_no_collateral_input => "The transaction contains no collateral inputs. Plutus script will not be able to run.", + Self::cardano__transaction_no_script_data_hash => "The transaction contains no script data hash. Plutus script will not be able to run.", + Self::cardano__transaction_output_contains_tokens => "The following transaction output contains tokens.", + Self::cardano__ttl => "TTL:", + Self::cardano__unknown_collateral_amount => "Unknown collateral amount.", + Self::cardano__unusual_path => "Path is unusual.", + Self::cardano__valid_since => "Valid since:", + Self::cardano__verify_script => "Verify script", + Self::cardano__vote_key_registration => "Vote key registration (CIP-36)", + Self::cardano__vote_public_key => "Vote public key:", + Self::cardano__voting_purpose => "Voting purpose:", + Self::cardano__warning => "Warning", + Self::cardano__weight => "Weight:", + Self::cardano__withdrawal_for_address_template => "Confirm withdrawal for {} address:", + Self::cardano__x_of_y_signatures_template => "Requires {} out of {} signatures.", + Self::coinjoin__access_account => "Access your coinjoin account?", + Self::coinjoin__do_not_disconnect => "Do not disconnect your Trezor!", + Self::coinjoin__max_mining_fee => "Max mining fee", + Self::coinjoin__max_rounds => "Max rounds", + Self::coinjoin__title => "AUTHORIZE COINJOIN", + Self::coinjoin__title_do_not_disconnect => "DO NOT DISCONNECT YOUR TREZOR!", + Self::coinjoin__title_progress => "COINJOIN IN PROGRESS", + Self::coinjoin__waiting_for_others => "Waiting for others", + Self::confirm_total__fee_rate => "Fee rate:", + Self::confirm_total__sending_from_account => "Sending from account:", + Self::confirm_total__title_fee => "FEE INFORMATION", + Self::confirm_total__title_sending_from => "SENDING FROM", + Self::debug__loading_seed => "Loading seed", + Self::debug__loading_seed_not_recommended => "Loading private seed is not recommended.", + Self::device_name__change_template => "Change device name to {}?", + Self::device_name__title => "DEVICE NAME", + Self::entropy__send => "Do you really want to send entropy?", + Self::entropy__title => "INTERNAL ENTROPY", + Self::entropy__title_confirm => "CONFIRM ENTROPY", + Self::eos__about_to_sign_template => "You are about to sign {}.", + Self::eos__action_name => "Action Name:", + Self::eos__arbitrary_data => "Arbitrary data", + Self::eos__buy_ram => "Buy RAM", + Self::eos__bytes => "Bytes:", + Self::eos__cancel_vote => "Cancel vote", + Self::eos__checksum => "Checksum:", + Self::eos__code => "Code:", + Self::eos__contract => "Contract:", + Self::eos__cpu => "CPU:", + Self::eos__creator => "Creator:", + Self::eos__delegate => "Delegate", + Self::eos__delete_auth => "Delete Auth", + Self::eos__from => "From:", + Self::eos__link_auth => "Link Auth", + Self::eos__memo => "Memo", + Self::eos__name => "Name:", + Self::eos__net => "NET:", + Self::eos__new_account => "New account", + Self::eos__owner => "Owner:", + Self::eos__parent => "Parent:", + Self::eos__payer => "Payer:", + Self::eos__permission => "Permission:", + Self::eos__proxy => "Proxy:", + Self::eos__receiver => "Receiver:", + Self::eos__refund => "Refund", + Self::eos__requirement => "Requirement:", + Self::eos__sell_ram => "Sell RAM", + Self::eos__sender => "Sender:", + Self::eos__sign_transaction => "Sign transaction", + Self::eos__threshold => "Threshold:", + Self::eos__to => "To:", + Self::eos__transfer => "Transfer:", + Self::eos__type => "Type:", + Self::eos__undelegate => "Undelegate", + Self::eos__unlink_auth => "Unlink Auth", + Self::eos__update_auth => "Update Auth", + Self::eos__vote_for_producers => "Vote for producers", + Self::eos__vote_for_proxy => "Vote for proxy", + Self::eos__voter => "Voter:", + Self::ethereum__amount_sent => "Amount sent:", + Self::ethereum__contract => "Contract:", + Self::ethereum__data_size_template => "Size: {} bytes", + Self::ethereum__gas_limit => "Gas limit:", + Self::ethereum__gas_price => "Gas price:", + Self::ethereum__max_gas_price => "Max gas price:", + Self::ethereum__name_and_version => "Name and version", + Self::ethereum__new_contract => "new contract?", + Self::ethereum__no_message_field => "No message field", + Self::ethereum__priority_fee => "Priority fee:", + Self::ethereum__show_full_array => "Show full array", + Self::ethereum__show_full_domain => "Show full domain", + Self::ethereum__show_full_message => "Show full message", + Self::ethereum__show_full_struct => "Show full struct", + Self::ethereum__sign_eip712 => "Really sign EIP-712 typed data?", + Self::ethereum__title_confirm_data => "CONFIRM DATA", + Self::ethereum__title_confirm_domain => "CONFIRM DOMAIN", + Self::ethereum__title_confirm_message => "CONFIRM MESSAGE", + Self::ethereum__title_confirm_struct => "CONFIRM STRUCT", + Self::ethereum__title_confirm_typed_data => "CONFIRM TYPED DATA", + Self::ethereum__title_signing_address => "SIGNING ADDRESS", + Self::ethereum__units_template => "{} units", + Self::ethereum__unknown_token => "Unknown token", + Self::ethereum__valid_signature => "The signature is valid.", + Self::experimental_mode__enable => "Enable experimental features?", + Self::experimental_mode__only_for_dev => "Only for development and beta testing!", + Self::experimental_mode__title => "EXPERIMENTAL MODE", + Self::fido__already_registered => "Already registered", + Self::fido__device_already_registered => "This device is already registered with this application.", + Self::fido__device_already_registered_with_template => "This device is already registered with {}.", + Self::fido__device_not_registered => "This device is not registered with this application.", + Self::fido__does_not_belong => "The credential you are trying to import does\nnot belong to this authenticator.", + Self::fido__erase_credentials => "erase all credentials?", + Self::fido__export_credentials => "Export information about the credentials stored on this device?", + Self::fido__not_registered => "Not registered", + Self::fido__not_registered_with_template => "This device is not registered with\n{}.", + Self::fido__please_enable_pin_protection => "Please enable PIN protection.", + Self::fido__title_authenticate => "FIDO2 AUTHENTICATE", + Self::fido__title_import_credential => "IMPORT CREDENTIAL", + Self::fido__title_list_credentials => "LIST CREDENTIALS", + Self::fido__title_register => "FIDO2 REGISTER", + Self::fido__title_remove_credential => "REMOVE CREDENTIAL", + Self::fido__title_reset => "FIDO2 RESET", + Self::fido__title_u2f_auth => "U2F AUTHENTICATE", + Self::fido__title_u2f_register => "U2F REGISTER", + Self::fido__title_verify_user => "FIDO2 VERIFY USER", + Self::fido__unable_to_verify_user => "Unable to verify user.", + Self::fido__wanna_erase_credentials => "Do you really want to erase all credentials?", + Self::firmware_update__title => "UPDATE FIRMWARE", + Self::firmware_update__title_fingerprint => "FW FINGERPRINT", + Self::homescreen__click_to_connect => "Click to Connect", + Self::homescreen__click_to_unlock => "Click to Unlock", + Self::homescreen__title_backup_failed => "BACKUP FAILED", + Self::homescreen__title_backup_needed => "BACKUP NEEDED", + Self::homescreen__title_coinjoin_authorized => "COINJOIN AUTHORIZED", + Self::homescreen__title_experimental_mode => "EXPERIMENTAL MODE", + Self::homescreen__title_no_usb_connection => "NO USB CONNECTION", + Self::homescreen__title_pin_not_set => "PIN NOT SET", + Self::homescreen__title_seedless => "SEEDLESS", + Self::homescreen__title_set => "CHANGE HOMESCREEN?", + Self::inputs__back => "BACK", + Self::inputs__cancel => "CANCEL", + Self::inputs__delete => "DELETE", + Self::inputs__enter => "ENTER", + Self::inputs__return => "RETURN", + Self::inputs__show => "SHOW", + Self::inputs__space => "SPACE", + Self::joint__title => "JOINT TRANSACTION", + Self::joint__to_the_total_amount => "To the total amount:", + Self::joint__you_are_contributing => "You are contributing:", + Self::language__change_to => "Change language to {}?", + Self::language__changed => "Language changed successfully", + Self::language__progress => "Changing language", + Self::language__title => "LANGUAGE SETTINGS", + Self::lockscreen__tap_to_connect => "Tap to connect", + Self::lockscreen__tap_to_unlock => "Tap to unlock", + Self::lockscreen__title_locked => "LOCKED", + Self::lockscreen__title_not_connected => "NOT CONNECTED", + Self::misc__decrypt_value => "Decrypt value", + Self::misc__encrypt_value => "Encrypt value", + Self::misc__title_suite_labeling => "SUITE LABELING", + Self::modify_amount__decrease_amount => "Decrease amount by:", + Self::modify_amount__increase_amount => "Increase amount by:", + Self::modify_amount__new_amount => "New amount:", + Self::modify_amount__title => "MODIFY AMOUNT", + Self::modify_fee__decrease_fee => "Decrease fee by:", + Self::modify_fee__fee_rate => "Fee rate:", + Self::modify_fee__increase_fee => "Increase fee by:", + Self::modify_fee__new_transaction_fee => "New transaction fee:", + Self::modify_fee__no_change => "Fee did not change.\n", + Self::modify_fee__title => "MODIFY FEE", + Self::modify_fee__transaction_fee => "Transaction fee:", + Self::monero__confirm_export => "Confirm export", + Self::monero__confirm_ki_sync => "Confirm ki sync", + Self::monero__confirm_refresh => "Confirm refresh", + Self::monero__confirm_unlock_time => "Confirm unlock time", + Self::monero__hashing_inputs => "Hashing inputs", + Self::monero__payment_id => "Payment ID", + Self::monero__postprocessing => "Postprocessing...", + Self::monero__processing => "Processing...", + Self::monero__processing_inputs => "Processing inputs", + Self::monero__processing_outputs => "Processing outputs", + Self::monero__signing => "Signing...", + Self::monero__signing_inputs => "Signing inputs", + Self::monero__unlock_time_set_template => "Unlock time for this transaction is set to {}", + Self::monero__wanna_export_tx_der => "Do you really want to export tx_der\nfor tx_proof?", + Self::monero__wanna_export_tx_key => "Do you really want to export tx_key?", + Self::monero__wanna_export_watchkey => "Do you really want to export watch-only credentials?", + Self::monero__wanna_start_refresh => "Do you really want to\nstart refresh?", + Self::monero__wanna_sync_key_images => "Do you really want to\nsync key images?", + Self::nem__absolute => "absolute", + Self::nem__activate => "Activate", + Self::nem__add => "Add", + Self::nem__confirm_action => "Confirm action", + Self::nem__confirm_address => "Confirm address", + Self::nem__confirm_creation_fee => "Confirm creation fee", + Self::nem__confirm_mosaic => "Confirm mosaic", + Self::nem__confirm_multisig_fee => "Confirm multisig fee", + Self::nem__confirm_namespace => "Confirm namespace", + Self::nem__confirm_payload => "Confirm payload", + Self::nem__confirm_properties => "Confirm properties", + Self::nem__confirm_rental_fee => "Confirm rental fee", + Self::nem__confirm_transfer_of => "Confirm transfer of", + Self::nem__convert_account_to_multisig => "Convert account to multisig account?", + Self::nem__cosign_transaction_for => "Cosign transaction for", + Self::nem__cosignatory => " cosignatory", + Self::nem__create_mosaic => "Create mosaic", + Self::nem__create_namespace => "Create namespace", + Self::nem__deactivate => "Deactivate", + Self::nem__decrease => "Decrease", + Self::nem__description => "Description:", + Self::nem__divisibility_and_levy_cannot_be_shown => "Divisibility and levy cannot be shown for unknown mosaics", + Self::nem__encrypted => "Encrypted:", + Self::nem__final_confirm => "Final confirm", + Self::nem__immutable => "immutable", + Self::nem__increase => "Increase", + Self::nem__initial_supply => "Initial supply:", + Self::nem__initiate_transaction_for => "Initiate transaction for", + Self::nem__levy_divisibility => "Levy divisibility:", + Self::nem__levy_fee => "Levy fee:", + Self::nem__levy_fee_of => "Confirm mosaic levy fee of", + Self::nem__levy_mosaic => "Levy mosaic:", + Self::nem__levy_namespace => "Levy namespace:", + Self::nem__levy_recipient => "Levy recipient:", + Self::nem__levy_type => "Levy type:", + Self::nem__modify_supply_for => "Modify supply for", + Self::nem__modify_the_number_of_cosignatories_by => "Modify the number of cosignatories by ", + Self::nem__mutable => "mutable", + Self::nem__of => "of", + Self::nem__percentile => "percentile", + Self::nem__raw_units_template => "{} raw units", + Self::nem__remote_harvesting => " remote harvesting?", + Self::nem__remove => "Remove", + Self::nem__set_minimum_cosignatories_to => "Set minimum cosignatories to ", + Self::nem__sign_tx_fee_template => "Sign this transaction\nand pay {}\nfor network fee?", + Self::nem__supply_change => "Supply change", + Self::nem__supply_units_template => "{} supply by {} whole units?", + Self::nem__transferable => "Transferable?", + Self::nem__under_namespace => "under namespace", + Self::nem__unencrypted => "Unencrypted:", + Self::nem__unknown_mosaic => "Unknown mosaic!", + Self::passphrase__access_hidden_wallet => "Access hidden wallet?", + Self::passphrase__always_on_device => "Do you really want to enter passphrase always on the device?", + Self::passphrase__from_host_not_shown => "Passphrase provided by host will be used but will not be displayed due to the device settings.", + Self::passphrase__hidden_wallet => "Hidden wallet", + Self::passphrase__hide => "Hide passphrase coming from host?", + Self::passphrase__next_screen_will_show_passphrase => "Next screen will show the passphrase.", + Self::passphrase__please_enter => "Please enter your passphrase.", + Self::passphrase__revoke_on_device => "Do you want to revoke the passphrase on device setting?", + Self::passphrase__title_confirm => "CONFIRM PASSPHRASE", + Self::passphrase__title_enter => "ENTER PASSPHRASE", + Self::passphrase__title_hide => "HIDE PASSPHRASE", + Self::passphrase__title_settings => "PASSPHRASE SETTINGS", + Self::passphrase__title_source => "PASSPHRASE SOURCE", + Self::passphrase__turn_off => "Turn off passphrase protection?", + Self::passphrase__turn_on => "Turn on passphrase protection?", + Self::pin__change => "Change PIN?", + Self::pin__changed => "PIN changed.", + Self::pin__cursor_will_change => "Position of the cursor will change between entries for enhanced security.", + Self::pin__diff_from_wipe_code => "The new PIN must be different from your wipe code.", + Self::pin__disabled => "PIN protection\nturned off.", + Self::pin__enabled => "PIN protection\nturned on.", + Self::pin__enter => "Enter PIN", + Self::pin__enter_new => "Enter new PIN", + Self::pin__entered_not_valid => "The PIN you have entered is not valid.", + Self::pin__info => "PIN will be required to access this device.", + Self::pin__invalid_pin => "Invalid PIN", + Self::pin__last_attempt => "Last attempt", + Self::pin__mismatch => "Entered PINs do not match!", + Self::pin__pin_mismatch => "PIN mismatch", + Self::pin__please_check_again => "Please check again.", + Self::pin__reenter_new => "Re-enter new PIN", + Self::pin__reenter_to_confirm => "Please re-enter PIN to confirm.", + Self::pin__should_be_long => "PIN should be 4-50 digits long.", + Self::pin__title_check_pin => "CHECK PIN", + Self::pin__title_settings => "PIN SETTINGS", + Self::pin__title_wrong_pin => "WRONG PIN", + Self::pin__tries_left => "tries left", + Self::pin__turn_off => "Are you sure you want to turn off PIN protection?", + Self::pin__turn_on => "Turn on PIN protection?", + Self::pin__wrong_pin => "Wrong PIN", + Self::plurals__contains_x_keys => "key|keys", + Self::plurals__lock_after_x_hours => "hour|hours", + Self::plurals__lock_after_x_milliseconds => "millisecond|milliseconds", + Self::plurals__lock_after_x_minutes => "minute|minutes", + Self::plurals__lock_after_x_seconds => "second|seconds", + Self::plurals__sign_x_actions => "action|actions", + Self::plurals__transaction_of_x_operations => "operation|operations", + Self::plurals__x_groups_needed => "group|groups", + Self::plurals__x_shares_needed => "share|shares", + Self::progress__authenticity_check => "Checking authenticity...", + Self::progress__done => "Done", + Self::progress__loading_transaction => "Loading transaction...", + Self::progress__locking_device => "Locking the device...", + Self::progress__one_second_left => "1 second left", + Self::progress__please_wait => "PLEASE WAIT", + Self::progress__processing => "PROCESSING", + Self::progress__refreshing => "Refreshing...", + Self::progress__signing_transaction => "Signing transaction...", + Self::progress__syncing => "Syncing...", + Self::progress__x_seconds_left_template => "{} seconds left", + Self::reboot_to_bootloader__restart => "Trezor will restart in bootloader mode.", + Self::reboot_to_bootloader__title => "GO TO BOOTLOADER", + Self::reboot_to_bootloader__version_by_template => "Firmware version {}\nby {}", + Self::recovery__cancel_dry_run => "Cancel backup check", + Self::recovery__check_dry_run => "Check your backup?", + Self::recovery__cursor_will_change => "Position of the cursor will change between entries for enhanced security.", + Self::recovery__dry_run_bip39_valid_match => "The entered recovery seed is valid and matches the one in the device.", + Self::recovery__dry_run_bip39_valid_mismatch => "The entered recovery seed is valid but does not match the one in the device.", + Self::recovery__dry_run_slip39_valid_match => "The entered recovery shares are valid and match what is currently in the device.", + Self::recovery__dry_run_slip39_valid_mismatch => "The entered recovery shares are valid but do not match what is currently in the device.", + Self::recovery__enter_any_share => "Enter any share", + Self::recovery__enter_backup => "Enter your backup.", + Self::recovery__enter_different_share => "Please enter a different share.", + Self::recovery__enter_share_from_diff_group => "Enter share from a different group.", + Self::recovery__group_num_template => "Group {}", + Self::recovery__group_threshold_reached => "Group threshold reached.", + Self::recovery__invalid_seed_entered => "Invalid recovery seed entered.", + Self::recovery__invalid_share_entered => "Invalid recovery share entered.", + Self::recovery__more_shares_needed => "More shares needed", + Self::recovery__num_of_words => "Select the number of words in your backup.", + Self::recovery__only_first_n_letters => "You'll only have to select the first 2-4 letters of each word.", + Self::recovery__progress_will_be_lost => "All progress will be lost.", + Self::recovery__select_num_of_words => "Select the number of words in your backup.", + Self::recovery__share_already_entered => "Share already entered", + Self::recovery__share_from_another_shamir => "You have entered a share from another Shamir Backup.", + Self::recovery__share_num_template => "Share {}", + Self::recovery__title => "RECOVER WALLET", + Self::recovery__title_cancel_dry_run => "CANCEL BACKUP CHECK", + Self::recovery__title_cancel_recovery => "CANCEL RECOVERY", + Self::recovery__title_dry_run => "BACKUP CHECK", + Self::recovery__title_recover => "RECOVER WALLET", + Self::recovery__title_remaining_shares => "REMAINING SHARES", + Self::recovery__type_word_x_of_y_template => "Type word {} of {}", + Self::recovery__wallet_recovered => "Wallet recovered successfully", + Self::recovery__wanna_cancel_dry_run => "Are you sure you want to cancel the backup check?", + Self::recovery__wanna_cancel_recovery => "Are you sure you want to cancel the recovery process?", + Self::recovery__word_count_template => "({} words)", + Self::recovery__word_x_of_y_template => "WORD {} OF {}", + Self::recovery__x_more_items_starting_template_plural => "{count} more {plural} starting", + Self::recovery__x_more_shares_needed_template_plural => "{count} more {plural} needed.", + Self::recovery__x_of_y_entered_template => "{} of {} shares entered successfully.", + Self::recovery__you_have_entered => "You have entered", + Self::reset__advanced_group_threshold_info => "The group threshold specifies the number of groups required to recover your wallet.", + Self::reset__all_x_of_y_template => "all {} of {} shares", + Self::reset__any_x_of_y_template => "any {} of {} shares", + Self::reset__button_create => "CREATE WALLET", + Self::reset__button_recover => "RECOVER WALLET", + Self::reset__by_continuing => "By continuing you agree to Trezor Company's terms and conditions.", + Self::reset__check_backup_title => "CHECK BACKUP", + Self::reset__check_group_share_title_template => "CHECK G{} - SHARE {}", + Self::reset__check_seed_title => "CHECK SEED", + Self::reset__check_share_title_template => "CHECK SHARE #{}", + Self::reset__continue_with_next_share => "Continue with the next share.", + Self::reset__continue_with_share_template => "Continue with share #{}.", + Self::reset__finished_verifying_group_template => "You have finished verifying your recovery shares for group {}.", + Self::reset__finished_verifying_seed => "You have finished verifying your recovery seed.", + Self::reset__finished_verifying_shares => "You have finished verifying your recovery shares.", + Self::reset__group_description => "A group is made up of recovery shares.", + Self::reset__group_info => "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds.", + Self::reset__group_share_checked_successfully_template => "Group {} - Share {} checked successfully.", + Self::reset__group_share_title_template => "GROUP {} - SHARE {}", + Self::reset__more_info_at => "More info at", + Self::reset__need_all_share_template => "For recovery you need all {} of the shares.", + Self::reset__need_any_share_template => "For recovery you need any {} of the shares.", + Self::reset__needed_to_form_a_group => "needed to form a group. ", + Self::reset__needed_to_recover_your_wallet => "needed to recover your wallet. ", + Self::reset__never_make_digital_copy => "Never make a digital copy of your backup or upload it online!", + Self::reset__num_of_share_holders_template => "{} people or locations will each hold one share.", + Self::reset__num_of_shares_advanced_info_template => "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {}.", + Self::reset__num_of_shares_basic_info => "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet.", + Self::reset__num_shares_for_group_template => "The required number of shares to form Group {}.", + Self::reset__number_of_shares_info => "= total number of unique word lists used for wallet backup.", + Self::reset__one_share => "1 share", + Self::reset__only_one_share_will_be_created => "Only one share will be created.", + Self::reset__recovery_seed_title => "RECOVERY SEED", + Self::reset__recovery_share_title_template => "RECOVERY SHARE #{}", + Self::reset__required_number_of_groups => "The required number of groups for recovery.", + Self::reset__select_correct_word => "Select the correct word for each position.", + Self::reset__select_word_template => "SELECT {} WORD", + Self::reset__select_word_x_of_y_template => "Select word {} of {}:", + Self::reset__set_it_to_count_template => "Set it to {} and you will need ", + Self::reset__share_checked_successfully_template => "Recovery share #{} checked successfully.", + Self::reset__share_words_title => "STANDARD BACKUP", + Self::reset__slip39_checklist_num_groups => "Number of groups", + Self::reset__slip39_checklist_num_shares => "Number of shares", + Self::reset__slip39_checklist_set_num_groups => "Set number of groups", + Self::reset__slip39_checklist_set_num_shares => "Set number of shares", + Self::reset__slip39_checklist_set_sizes => "Set sizes and thresholds", + Self::reset__slip39_checklist_set_sizes_longer => "Set size and threshold for each group", + Self::reset__slip39_checklist_set_threshold => "Set threshold", + Self::reset__slip39_checklist_title => "BACKUP CHECKLIST", + Self::reset__slip39_checklist_write_down => "Write down and check all shares", + Self::reset__slip39_checklist_write_down_recovery => "Write down and check all recovery shares", + Self::reset__the_threshold_sets_the_number_of_shares => "The threshold sets the number of shares ", + Self::reset__threshold_info => "= minimum number of unique word lists used for recovery.", + Self::reset__title_backup_is_done => "BACKUP IS DONE", + Self::reset__title_create_wallet => "CREATE WALLET", + Self::reset__title_create_wallet_shamir => "CREATE WALLET (SHAMIR)", + Self::reset__title_group_threshold => "GROUP THRESHOLD", + Self::reset__title_number_of_groups => "NUMBER OF GROUPS", + Self::reset__title_number_of_shares => "NUMBER OF SHARES", + Self::reset__title_set_group_threshold => "SET GROUP THRESHOLD", + Self::reset__title_set_number_of_groups => "SET NUMBER OF GROUPS", + Self::reset__title_set_number_of_shares => "SET NUMBER OF SHARES", + Self::reset__title_set_threshold => "SET THRESHOLD", + Self::reset__to_form_group_template => "to form Group {}.", + Self::reset__tos_link => "trezor.io/tos", + Self::reset__total_number_of_shares_in_group_template => "Set the total number of shares in Group {}.", + Self::reset__use_your_backup => "Use your backup when you need to recover your wallet.", + Self::reset__write_down_words_template => "Write down all {} words in order.", + Self::reset__wrong_word_selected => "Wrong word selected!", + Self::reset__you_need_one_share => "For recovery you need 1 share.", + Self::reset__your_backup_is_done => "Your backup is done.", + Self::ripple__confirm_tag => "Confirm tag", + Self::ripple__destination_tag_template => "Destination tag:\n{}", + Self::rotation__change_template => "Do you want to change device rotation to {}?", + Self::rotation__east => "east", + Self::rotation__north => "north", + Self::rotation__south => "south", + Self::rotation__title_change => "CHANGE ROTATION", + Self::rotation__west => "west", + Self::safety_checks__approve_unsafe_always => "Trezor will allow you to approve some actions which might be unsafe.", + Self::safety_checks__approve_unsafe_temporary => "Trezor will temporarily allow you to approve some actions which might be unsafe.", + Self::safety_checks__enforce_strict => "Do you really want to enforce strict safety checks (recommended)?", + Self::safety_checks__title => "SAFETY CHECKS", + Self::safety_checks__title_safety_override => "SAFETY OVERRIDE", + Self::sd_card__all_data_will_be_lost => "All data on the SD card will be lost.", + Self::sd_card__card_required => "SD card required.", + Self::sd_card__disable => "Do you really want to remove SD card protection from your device?", + Self::sd_card__disabled => "You have successfully disabled SD protection.", + Self::sd_card__enable => "Do you really want to secure your device with SD card protection?", + Self::sd_card__enabled => "You have successfully enabled SD protection.", + Self::sd_card__error => "SD card error", + Self::sd_card__format_card => "Format SD card", + Self::sd_card__insert_correct_card => "Please insert the correct SD card for this device.", + Self::sd_card__please_insert => "Please insert your SD card.", + Self::sd_card__please_unplug_and_insert => "Please unplug the device and insert your SD card.", + Self::sd_card__problem_accessing => "There was a problem accessing the SD card.", + Self::sd_card__refresh => "Do you really want to replace the current SD card secret with a newly generated one?", + Self::sd_card__refreshed => "You have successfully refreshed SD protection.", + Self::sd_card__restart => "Do you want to restart Trezor in bootloader mode?", + Self::sd_card__title => "SD CARD PROTECTION", + Self::sd_card__title_problem => "SD CARD PROBLEM", + Self::sd_card__unknown_filesystem => "Unknown filesystem.", + Self::sd_card__unplug_and_insert_correct => "Please unplug the device and insert the correct SD card.", + Self::sd_card__use_different_card => "Use a different card or format the SD card to the FAT32 filesystem.", + Self::sd_card__wanna_format => "Do you really want to format the SD card?", + Self::sd_card__wrong_sd_card => "Wrong SD card.", + Self::send__address_path => "address path", + Self::send__confirm_sending => "SENDING AMOUNT", + Self::send__from_multiple_accounts => "Sending from multiple accounts.", + Self::send__including_fee => "Including fee:", + Self::send__maximum_fee => "Maximum fee:", + Self::send__receiving_to_multisig => "Receiving to a multisig address.", + Self::send__title_confirm_sending => "CONFIRM SENDING", + Self::send__title_joint_transaction => "JOINT TRANSACTION", + Self::send__title_receiving_to => "RECEIVING TO", + Self::send__title_sending => "SENDING", + Self::send__title_sending_amount => "SENDING AMOUNT", + Self::send__title_sending_to => "SENDING TO", + Self::send__to_the_total_amount => "To the total amount:", + Self::send__total_amount => "Total amount:", + Self::send__transaction_id => "Transaction ID:", + Self::send__you_are_contributing => "You are contributing:", + Self::share_words__words_in_order => " words in order.", + Self::share_words__wrote_down_all => "I wrote down all ", + Self::sign_message__bytes_template => "{} Bytes", + Self::sign_message__confirm_address => "SIGNING ADDRESS", + Self::sign_message__confirm_message => "CONFIRM MESSAGE", + Self::sign_message__message_size => "Message size:", + Self::sign_message__verify_address => "VERIFY ADDRESS", + Self::solana__account_index => "Account index", + Self::solana__associated_token_account => "Associated token account", + Self::solana__confirm_multisig => "Confirm multisig", + Self::solana__expected_fee => "Expected fee", + Self::solana__instruction_accounts_template => "Instruction contains {} accounts and its data is {} bytes long.", + Self::solana__instruction_data => "Instruction data", + Self::solana__instruction_is_multisig => "The following instruction is a multisig instruction.", + Self::solana__is_provided_via_lookup_table_template => "{} is provided via a lookup table.", + Self::solana__lookup_table_address => "Lookup table address", + Self::solana__multiple_signers => "Multiple signers", + Self::solana__token_address => "Token address", + Self::solana__transaction_contains_unknown_instructions => "Transaction contains unknown instructions.", + Self::solana__transaction_requires_x_signers_template => "Transaction requires {} signers which increases the fee.", + Self::stellar__account_merge => "Account Merge", + Self::stellar__account_thresholds => "Account Thresholds", + Self::stellar__add_signer => "Add Signer", + Self::stellar__add_trust => "Add trust", + Self::stellar__all_will_be_sent_to => "All XLM will be sent to:", + Self::stellar__allow_trust => "Allow trust", + Self::stellar__asset => "Asset", + Self::stellar__balance_id => "Balance ID", + Self::stellar__bump_sequence => "Bump Sequence", + Self::stellar__buying => "Buying:", + Self::stellar__claim_claimable_balance => "Claim Claimable Balance", + Self::stellar__clear_data => "Clear data", + Self::stellar__clear_flags => "Clear flags", + Self::stellar__confirm_issuer => "Confirm Issuer", + Self::stellar__confirm_memo => "Confirm memo", + Self::stellar__confirm_network => "Confirm network", + Self::stellar__confirm_operation => "Confirm operation", + Self::stellar__confirm_stellar => "Confirm Stellar", + Self::stellar__confirm_timebounds => "Confirm timebounds", + Self::stellar__create_account => "Create Account", + Self::stellar__debited_amount => "Debited amount", + Self::stellar__delete => "Delete", + Self::stellar__delete_passive_offer => "Delete Passive Offer", + Self::stellar__delete_trust => "Delete trust", + Self::stellar__destination => "Destination:", + Self::stellar__exchanges_require_memo => "Important: Many exchanges require a memo when depositing", + Self::stellar__final_confirm => "Final confirm", + Self::stellar__hash => "Hash:", + Self::stellar__high => "High:", + Self::stellar__home_domain => "Home Domain", + Self::stellar__inflation => "Inflation", + Self::stellar__initial_balance => "Initial Balance", + Self::stellar__initialize_signing_with => "Initialize signing with", + Self::stellar__issuer_template => "{} issuer:", + Self::stellar__key => "Key:", + Self::stellar__limit => "Limit:", + Self::stellar__low => "Low:", + Self::stellar__master_weight => "Master Weight:", + Self::stellar__medium => "Medium:", + Self::stellar__new_offer => "New Offer", + Self::stellar__new_passive_offer => "New Passive Offer", + Self::stellar__no_memo_set => "No memo set!", + Self::stellar__no_restriction => "[no restriction]", + Self::stellar__on_network_template => "Transaction is on {}", + Self::stellar__path_pay => "Path Pay", + Self::stellar__path_pay_at_least => "Path Pay at least", + Self::stellar__pay => "Pay:", + Self::stellar__pay_at_most => "Pay at most:", + Self::stellar__preauth_transaction => "Pre-auth transaction:", + Self::stellar__price_per_template => "Price per {}:", + Self::stellar__private_network => "private network", + Self::stellar__remove_signer => "Remove Signer", + Self::stellar__revoke_trust => "Revoke trust", + Self::stellar__selling => "Selling:", + Self::stellar__set_data => "Set data", + Self::stellar__set_flags => "Set flags", + Self::stellar__set_sequence_to_template => "Set sequence to {}?", + Self::stellar__sign_tx_count_template => "Sign this transaction made up of {}", + Self::stellar__sign_tx_fee_template => "and pay {}\nfor fee?", + Self::stellar__source_account => "Source account:", + Self::stellar__testnet_network => "testnet network", + Self::stellar__trusted_account => "Trusted Account", + Self::stellar__update => "Update", + Self::stellar__valid_from => "Valid from (UTC)", + Self::stellar__valid_to => "Valid to (UTC)", + Self::stellar__value_sha256 => "Value (SHA-256):", + Self::stellar__wanna_clean_value_key_template => "Do you want to clear value key {}?", + Self::stellar__your_account => " your account", + Self::tezos__baker_address => "Baker address:", + Self::tezos__balance => "Balance:", + Self::tezos__ballot => "Ballot:", + Self::tezos__confirm_delegation => "Confirm delegation", + Self::tezos__confirm_origination => "Confirm origination", + Self::tezos__delegator => "Delegator:", + Self::tezos__proposal => "Proposal", + Self::tezos__register_delegate => "Register delegate", + Self::tezos__remove_delegation => "Remove delegation", + Self::tezos__submit_ballot => "Submit ballot", + Self::tezos__submit_proposal => "Submit proposal", + Self::tezos__submit_proposals => "Submit proposals", + Self::tutorial__middle_click => "Press both left and right at the same\ntime to confirm.", + Self::tutorial__press_and_hold => "Press and hold the right button to\napprove important operations.", + Self::tutorial__ready_to_use => "You're ready to\nuse Trezor.", + Self::tutorial__scroll_down => "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up.", + Self::tutorial__sure_you_want_skip => "Are you sure you\nwant to skip the tutorial?", + Self::tutorial__title_hello => "HELLO", + Self::tutorial__title_screen_scroll => "SCREEN SCROLL", + Self::tutorial__title_skip => "SKIP TUTORIAL", + Self::tutorial__title_tutorial_complete => "TUTORIAL COMPLETE", + Self::tutorial__use_trezor => "Use Trezor by\nclicking the left and right buttons.\n\rContinue right.", + Self::tutorial__welcome_press_right => "Welcome to Trezor. Press right to continue.", + Self::u2f__get => "Increase and retrieve the U2F counter?", + Self::u2f__set_template => "Set the U2F counter to {}?", + Self::u2f__title_get => "GET U2F COUNTER", + Self::u2f__title_set => "SET U2F COUNTER", + Self::wipe__info => "All data will be erased.", + Self::wipe__title => "WIPE DEVICE", + Self::wipe__want_to_wipe => "Do you really want to wipe the device?\n", + Self::wipe_code__change => "Change wipe code?", + Self::wipe_code__changed => "Wipe code changed.", + Self::wipe_code__diff_from_pin => "The wipe code must be different from your PIN.", + Self::wipe_code__disabled => "Wipe code disabled.", + Self::wipe_code__enabled => "Wipe code enabled.", + Self::wipe_code__enter_new => "Enter new wipe code", + Self::wipe_code__info => "Wipe code can be used to erase all data from this device.", + Self::wipe_code__invalid => "Invalid wipe code", + Self::wipe_code__mismatch => "The wipe codes you entered do not match.", + Self::wipe_code__reenter => "Re-enter wipe code", + Self::wipe_code__reenter_to_confirm => "Please re-enter wipe code to confirm.", + Self::wipe_code__title_check => "CHECK WIPE CODE", + Self::wipe_code__title_invalid => "INVALID WIPE CODE", + Self::wipe_code__title_settings => "WIPE CODE SETTINGS", + Self::wipe_code__turn_off => "Turn off wipe code protection?", + Self::wipe_code__turn_on => "Turn on wipe code protection?", + Self::wipe_code__wipe_code_mismatch => "Wipe code mismatch", + Self::word_count__title => "NUMBER OF WORDS", + Self::words__account => "Account", + Self::words__account_colon => "Account:", + Self::words__address => "Address", + Self::words__amount => "Amount", + Self::words__are_you_sure => "Are you sure?", + Self::words__array_of => "Array of", + Self::words__blockhash => "Blockhash", + Self::words__buying => "Buying", + Self::words__confirm => "Confirm", + Self::words__confirm_fee => "Confirm fee", + Self::words__contains => "Contains", + Self::words__continue_anyway => "Continue anyway?", + Self::words__continue_with => "Continue with", + Self::words__error => "Error", + Self::words__fee => "Fee", + Self::words__from => "from", + Self::words__keep_it_safe => "Keep it safe!", + Self::words__know_what_your_doing => "Continue only if you know what you are doing!", + Self::words__my_trezor => "My Trezor", + Self::words__no => "No", + Self::words__outputs => "outputs", + Self::words__please_check_again => "Please check again", + Self::words__please_try_again => "Please try again", + Self::words__really_wanna => "Do you really want to", + Self::words__recipient => "Recipient", + Self::words__sign => "Sign", + Self::words__signer => "Signer", + Self::words__title_check => "CHECK", + Self::words__title_group => "GROUP", + Self::words__title_information => "INFORMATION", + Self::words__title_remember => "REMEMBER", + Self::words__title_share => "SHARE", + Self::words__title_shares => "SHARES", + Self::words__title_success => "SUCCESS", + Self::words__title_summary => "SUMMARY", + Self::words__title_threshold => "THRESHOLD", + Self::words__unknown => "Unknown", + Self::words__warning => "Warning", + Self::words__writable => "Writable", + Self::words__yes => "Yes", + Self::reboot_to_bootloader__just_a_moment => "Just a moment...", + } + } + + #[cfg(feature = "micropython")] + pub fn from_qstr(qstr: Qstr) -> Option { + match qstr { + Qstr::MP_QSTR_addr_mismatch__contact_support_at => Some(Self::addr_mismatch__contact_support_at), + Qstr::MP_QSTR_addr_mismatch__key_mismatch => Some(Self::addr_mismatch__key_mismatch), + Qstr::MP_QSTR_addr_mismatch__mismatch => Some(Self::addr_mismatch__mismatch), + Qstr::MP_QSTR_addr_mismatch__support_url => Some(Self::addr_mismatch__support_url), + Qstr::MP_QSTR_addr_mismatch__wrong_derivation_path => Some(Self::addr_mismatch__wrong_derivation_path), + Qstr::MP_QSTR_addr_mismatch__xpub_mismatch => Some(Self::addr_mismatch__xpub_mismatch), + Qstr::MP_QSTR_address__public_key => Some(Self::address__public_key), + Qstr::MP_QSTR_address__title_cosigner => Some(Self::address__title_cosigner), + Qstr::MP_QSTR_address__title_receive_address => Some(Self::address__title_receive_address), + Qstr::MP_QSTR_address__title_yours => Some(Self::address__title_yours), + Qstr::MP_QSTR_address_details__derivation_path => Some(Self::address_details__derivation_path), + Qstr::MP_QSTR_address_details__title_receive_address => Some(Self::address_details__title_receive_address), + Qstr::MP_QSTR_address_details__title_receiving_to => Some(Self::address_details__title_receiving_to), + Qstr::MP_QSTR_authenticate__confirm_template => Some(Self::authenticate__confirm_template), + Qstr::MP_QSTR_authenticate__header => Some(Self::authenticate__header), + Qstr::MP_QSTR_auto_lock__change_template => Some(Self::auto_lock__change_template), + Qstr::MP_QSTR_auto_lock__title => Some(Self::auto_lock__title), + Qstr::MP_QSTR_backup__can_back_up_anytime => Some(Self::backup__can_back_up_anytime), + Qstr::MP_QSTR_backup__it_should_be_backed_up => Some(Self::backup__it_should_be_backed_up), + Qstr::MP_QSTR_backup__it_should_be_backed_up_now => Some(Self::backup__it_should_be_backed_up_now), + Qstr::MP_QSTR_backup__new_wallet_created => Some(Self::backup__new_wallet_created), + Qstr::MP_QSTR_backup__new_wallet_successfully_created => Some(Self::backup__new_wallet_successfully_created), + Qstr::MP_QSTR_backup__recover_anytime => Some(Self::backup__recover_anytime), + Qstr::MP_QSTR_backup__title_backup_wallet => Some(Self::backup__title_backup_wallet), + Qstr::MP_QSTR_backup__title_skip => Some(Self::backup__title_skip), + Qstr::MP_QSTR_backup__want_to_skip => Some(Self::backup__want_to_skip), + Qstr::MP_QSTR_binance__buy => Some(Self::binance__buy), + Qstr::MP_QSTR_binance__confirm_cancel => Some(Self::binance__confirm_cancel), + Qstr::MP_QSTR_binance__confirm_input => Some(Self::binance__confirm_input), + Qstr::MP_QSTR_binance__confirm_order => Some(Self::binance__confirm_order), + Qstr::MP_QSTR_binance__confirm_output => Some(Self::binance__confirm_output), + Qstr::MP_QSTR_binance__order_id => Some(Self::binance__order_id), + Qstr::MP_QSTR_binance__pair => Some(Self::binance__pair), + Qstr::MP_QSTR_binance__price => Some(Self::binance__price), + Qstr::MP_QSTR_binance__quantity => Some(Self::binance__quantity), + Qstr::MP_QSTR_binance__sell => Some(Self::binance__sell), + Qstr::MP_QSTR_binance__sender_address => Some(Self::binance__sender_address), + Qstr::MP_QSTR_binance__side => Some(Self::binance__side), + Qstr::MP_QSTR_bitcoin__commitment_data => Some(Self::bitcoin__commitment_data), + Qstr::MP_QSTR_bitcoin__confirm_locktime => Some(Self::bitcoin__confirm_locktime), + Qstr::MP_QSTR_bitcoin__create_proof_of_ownership => Some(Self::bitcoin__create_proof_of_ownership), + Qstr::MP_QSTR_bitcoin__high_mining_fee_template => Some(Self::bitcoin__high_mining_fee_template), + Qstr::MP_QSTR_bitcoin__locktime_no_effect => Some(Self::bitcoin__locktime_no_effect), + Qstr::MP_QSTR_bitcoin__locktime_set_to => Some(Self::bitcoin__locktime_set_to), + Qstr::MP_QSTR_bitcoin__locktime_set_to_blockheight => Some(Self::bitcoin__locktime_set_to_blockheight), + Qstr::MP_QSTR_bitcoin__lot_of_change_outputs => Some(Self::bitcoin__lot_of_change_outputs), + Qstr::MP_QSTR_bitcoin__multiple_accounts => Some(Self::bitcoin__multiple_accounts), + Qstr::MP_QSTR_bitcoin__new_fee_rate => Some(Self::bitcoin__new_fee_rate), + Qstr::MP_QSTR_bitcoin__simple_send_of => Some(Self::bitcoin__simple_send_of), + Qstr::MP_QSTR_bitcoin__ticket_amount => Some(Self::bitcoin__ticket_amount), + Qstr::MP_QSTR_bitcoin__title_confirm_details => Some(Self::bitcoin__title_confirm_details), + Qstr::MP_QSTR_bitcoin__title_finalize_transaction => Some(Self::bitcoin__title_finalize_transaction), + Qstr::MP_QSTR_bitcoin__title_high_mining_fee => Some(Self::bitcoin__title_high_mining_fee), + Qstr::MP_QSTR_bitcoin__title_meld_transaction => Some(Self::bitcoin__title_meld_transaction), + Qstr::MP_QSTR_bitcoin__title_modify_amount => Some(Self::bitcoin__title_modify_amount), + Qstr::MP_QSTR_bitcoin__title_payjoin => Some(Self::bitcoin__title_payjoin), + Qstr::MP_QSTR_bitcoin__title_proof_of_ownership => Some(Self::bitcoin__title_proof_of_ownership), + Qstr::MP_QSTR_bitcoin__title_purchase_ticket => Some(Self::bitcoin__title_purchase_ticket), + Qstr::MP_QSTR_bitcoin__title_update_transaction => Some(Self::bitcoin__title_update_transaction), + Qstr::MP_QSTR_bitcoin__unknown_path => Some(Self::bitcoin__unknown_path), + Qstr::MP_QSTR_bitcoin__unknown_transaction => Some(Self::bitcoin__unknown_transaction), + Qstr::MP_QSTR_bitcoin__unusually_high_fee => Some(Self::bitcoin__unusually_high_fee), + Qstr::MP_QSTR_bitcoin__unverified_external_inputs => Some(Self::bitcoin__unverified_external_inputs), + Qstr::MP_QSTR_bitcoin__valid_signature => Some(Self::bitcoin__valid_signature), + Qstr::MP_QSTR_bitcoin__voting_rights => Some(Self::bitcoin__voting_rights), + Qstr::MP_QSTR_buttons__abort => Some(Self::buttons__abort), + Qstr::MP_QSTR_buttons__access => Some(Self::buttons__access), + Qstr::MP_QSTR_buttons__again => Some(Self::buttons__again), + Qstr::MP_QSTR_buttons__allow => Some(Self::buttons__allow), + Qstr::MP_QSTR_buttons__back => Some(Self::buttons__back), + Qstr::MP_QSTR_buttons__back_up => Some(Self::buttons__back_up), + Qstr::MP_QSTR_buttons__cancel => Some(Self::buttons__cancel), + Qstr::MP_QSTR_buttons__change => Some(Self::buttons__change), + Qstr::MP_QSTR_buttons__check => Some(Self::buttons__check), + Qstr::MP_QSTR_buttons__check_again => Some(Self::buttons__check_again), + Qstr::MP_QSTR_buttons__close => Some(Self::buttons__close), + Qstr::MP_QSTR_buttons__confirm => Some(Self::buttons__confirm), + Qstr::MP_QSTR_buttons__continue => Some(Self::buttons__continue), + Qstr::MP_QSTR_buttons__details => Some(Self::buttons__details), + Qstr::MP_QSTR_buttons__enable => Some(Self::buttons__enable), + Qstr::MP_QSTR_buttons__enter => Some(Self::buttons__enter), + Qstr::MP_QSTR_buttons__enter_share => Some(Self::buttons__enter_share), + Qstr::MP_QSTR_buttons__export => Some(Self::buttons__export), + Qstr::MP_QSTR_buttons__format => Some(Self::buttons__format), + Qstr::MP_QSTR_buttons__go_back => Some(Self::buttons__go_back), + Qstr::MP_QSTR_buttons__hold_to_confirm => Some(Self::buttons__hold_to_confirm), + Qstr::MP_QSTR_buttons__info => Some(Self::buttons__info), + Qstr::MP_QSTR_buttons__install => Some(Self::buttons__install), + Qstr::MP_QSTR_buttons__more_info => Some(Self::buttons__more_info), + Qstr::MP_QSTR_buttons__ok_i_understand => Some(Self::buttons__ok_i_understand), + Qstr::MP_QSTR_buttons__purchase => Some(Self::buttons__purchase), + Qstr::MP_QSTR_buttons__quit => Some(Self::buttons__quit), + Qstr::MP_QSTR_buttons__restart => Some(Self::buttons__restart), + Qstr::MP_QSTR_buttons__retry => Some(Self::buttons__retry), + Qstr::MP_QSTR_buttons__select => Some(Self::buttons__select), + Qstr::MP_QSTR_buttons__set => Some(Self::buttons__set), + Qstr::MP_QSTR_buttons__show_all => Some(Self::buttons__show_all), + Qstr::MP_QSTR_buttons__show_details => Some(Self::buttons__show_details), + Qstr::MP_QSTR_buttons__show_words => Some(Self::buttons__show_words), + Qstr::MP_QSTR_buttons__skip => Some(Self::buttons__skip), + Qstr::MP_QSTR_buttons__try_again => Some(Self::buttons__try_again), + Qstr::MP_QSTR_buttons__turn_off => Some(Self::buttons__turn_off), + Qstr::MP_QSTR_buttons__turn_on => Some(Self::buttons__turn_on), + Qstr::MP_QSTR_cardano__addr_base => Some(Self::cardano__addr_base), + Qstr::MP_QSTR_cardano__addr_enterprise => Some(Self::cardano__addr_enterprise), + Qstr::MP_QSTR_cardano__addr_legacy => Some(Self::cardano__addr_legacy), + Qstr::MP_QSTR_cardano__addr_pointer => Some(Self::cardano__addr_pointer), + Qstr::MP_QSTR_cardano__addr_reward => Some(Self::cardano__addr_reward), + Qstr::MP_QSTR_cardano__address_no_staking => Some(Self::cardano__address_no_staking), + Qstr::MP_QSTR_cardano__amount_burned_decimals_unknown => Some(Self::cardano__amount_burned_decimals_unknown), + Qstr::MP_QSTR_cardano__amount_minted_decimals_unknown => Some(Self::cardano__amount_minted_decimals_unknown), + Qstr::MP_QSTR_cardano__amount_sent_decimals_unknown => Some(Self::cardano__amount_sent_decimals_unknown), + Qstr::MP_QSTR_cardano__anonymous_pool => Some(Self::cardano__anonymous_pool), + Qstr::MP_QSTR_cardano__asset_fingerprint => Some(Self::cardano__asset_fingerprint), + Qstr::MP_QSTR_cardano__auxiliary_data_hash => Some(Self::cardano__auxiliary_data_hash), + Qstr::MP_QSTR_cardano__block => Some(Self::cardano__block), + Qstr::MP_QSTR_cardano__catalyst => Some(Self::cardano__catalyst), + Qstr::MP_QSTR_cardano__certificate => Some(Self::cardano__certificate), + Qstr::MP_QSTR_cardano__change_output => Some(Self::cardano__change_output), + Qstr::MP_QSTR_cardano__check_all_items => Some(Self::cardano__check_all_items), + Qstr::MP_QSTR_cardano__choose_level_of_details => Some(Self::cardano__choose_level_of_details), + Qstr::MP_QSTR_cardano__collateral_input_id => Some(Self::cardano__collateral_input_id), + Qstr::MP_QSTR_cardano__collateral_input_index => Some(Self::cardano__collateral_input_index), + Qstr::MP_QSTR_cardano__collateral_output_contains_tokens => Some(Self::cardano__collateral_output_contains_tokens), + Qstr::MP_QSTR_cardano__collateral_return => Some(Self::cardano__collateral_return), + Qstr::MP_QSTR_cardano__confirm => Some(Self::cardano__confirm), + Qstr::MP_QSTR_cardano__confirm_signing_stake_pool => Some(Self::cardano__confirm_signing_stake_pool), + Qstr::MP_QSTR_cardano__confirm_transaction => Some(Self::cardano__confirm_transaction), + Qstr::MP_QSTR_cardano__confirming_a_multisig_transaction => Some(Self::cardano__confirming_a_multisig_transaction), + Qstr::MP_QSTR_cardano__confirming_a_plutus_transaction => Some(Self::cardano__confirming_a_plutus_transaction), + Qstr::MP_QSTR_cardano__confirming_pool_registration => Some(Self::cardano__confirming_pool_registration), + Qstr::MP_QSTR_cardano__confirming_transction => Some(Self::cardano__confirming_transction), + Qstr::MP_QSTR_cardano__cost => Some(Self::cardano__cost), + Qstr::MP_QSTR_cardano__credential_mismatch => Some(Self::cardano__credential_mismatch), + Qstr::MP_QSTR_cardano__datum_hash => Some(Self::cardano__datum_hash), + Qstr::MP_QSTR_cardano__delegating_to => Some(Self::cardano__delegating_to), + Qstr::MP_QSTR_cardano__for_account_and_index_template => Some(Self::cardano__for_account_and_index_template), + Qstr::MP_QSTR_cardano__for_account_template => Some(Self::cardano__for_account_template), + Qstr::MP_QSTR_cardano__for_key_hash => Some(Self::cardano__for_key_hash), + Qstr::MP_QSTR_cardano__for_script => Some(Self::cardano__for_script), + Qstr::MP_QSTR_cardano__inline_datum => Some(Self::cardano__inline_datum), + Qstr::MP_QSTR_cardano__input_id => Some(Self::cardano__input_id), + Qstr::MP_QSTR_cardano__input_index => Some(Self::cardano__input_index), + Qstr::MP_QSTR_cardano__intro_text_change => Some(Self::cardano__intro_text_change), + Qstr::MP_QSTR_cardano__intro_text_owned_by_device => Some(Self::cardano__intro_text_owned_by_device), + Qstr::MP_QSTR_cardano__intro_text_registration_payment => Some(Self::cardano__intro_text_registration_payment), + Qstr::MP_QSTR_cardano__key_hash => Some(Self::cardano__key_hash), + Qstr::MP_QSTR_cardano__margin => Some(Self::cardano__margin), + Qstr::MP_QSTR_cardano__multisig_path => Some(Self::cardano__multisig_path), + Qstr::MP_QSTR_cardano__nested_scripts_template => Some(Self::cardano__nested_scripts_template), + Qstr::MP_QSTR_cardano__network => Some(Self::cardano__network), + Qstr::MP_QSTR_cardano__no_output_tx => Some(Self::cardano__no_output_tx), + Qstr::MP_QSTR_cardano__nonce => Some(Self::cardano__nonce), + Qstr::MP_QSTR_cardano__other => Some(Self::cardano__other), + Qstr::MP_QSTR_cardano__path => Some(Self::cardano__path), + Qstr::MP_QSTR_cardano__pledge => Some(Self::cardano__pledge), + Qstr::MP_QSTR_cardano__pointer => Some(Self::cardano__pointer), + Qstr::MP_QSTR_cardano__policy_id => Some(Self::cardano__policy_id), + Qstr::MP_QSTR_cardano__pool_metadata_hash => Some(Self::cardano__pool_metadata_hash), + Qstr::MP_QSTR_cardano__pool_metadata_url => Some(Self::cardano__pool_metadata_url), + Qstr::MP_QSTR_cardano__pool_owner => Some(Self::cardano__pool_owner), + Qstr::MP_QSTR_cardano__pool_reward_account => Some(Self::cardano__pool_reward_account), + Qstr::MP_QSTR_cardano__reference_input_id => Some(Self::cardano__reference_input_id), + Qstr::MP_QSTR_cardano__reference_input_index => Some(Self::cardano__reference_input_index), + Qstr::MP_QSTR_cardano__reference_script => Some(Self::cardano__reference_script), + Qstr::MP_QSTR_cardano__required_signer => Some(Self::cardano__required_signer), + Qstr::MP_QSTR_cardano__reward => Some(Self::cardano__reward), + Qstr::MP_QSTR_cardano__reward_address => Some(Self::cardano__reward_address), + Qstr::MP_QSTR_cardano__reward_eligibility_warning => Some(Self::cardano__reward_eligibility_warning), + Qstr::MP_QSTR_cardano__rewards_go_to => Some(Self::cardano__rewards_go_to), + Qstr::MP_QSTR_cardano__script => Some(Self::cardano__script), + Qstr::MP_QSTR_cardano__script_all => Some(Self::cardano__script_all), + Qstr::MP_QSTR_cardano__script_any => Some(Self::cardano__script_any), + Qstr::MP_QSTR_cardano__script_data_hash => Some(Self::cardano__script_data_hash), + Qstr::MP_QSTR_cardano__script_hash => Some(Self::cardano__script_hash), + Qstr::MP_QSTR_cardano__script_invalid_before => Some(Self::cardano__script_invalid_before), + Qstr::MP_QSTR_cardano__script_invalid_hereafter => Some(Self::cardano__script_invalid_hereafter), + Qstr::MP_QSTR_cardano__script_key => Some(Self::cardano__script_key), + Qstr::MP_QSTR_cardano__script_n_of_k => Some(Self::cardano__script_n_of_k), + Qstr::MP_QSTR_cardano__script_reward => Some(Self::cardano__script_reward), + Qstr::MP_QSTR_cardano__sending => Some(Self::cardano__sending), + Qstr::MP_QSTR_cardano__show_simple => Some(Self::cardano__show_simple), + Qstr::MP_QSTR_cardano__sign_tx_path_template => Some(Self::cardano__sign_tx_path_template), + Qstr::MP_QSTR_cardano__stake_delegation => Some(Self::cardano__stake_delegation), + Qstr::MP_QSTR_cardano__stake_deregistration => Some(Self::cardano__stake_deregistration), + Qstr::MP_QSTR_cardano__stake_pool_registration => Some(Self::cardano__stake_pool_registration), + Qstr::MP_QSTR_cardano__stake_pool_registration_pool_id => Some(Self::cardano__stake_pool_registration_pool_id), + Qstr::MP_QSTR_cardano__stake_registration => Some(Self::cardano__stake_registration), + Qstr::MP_QSTR_cardano__staking_key_for_account => Some(Self::cardano__staking_key_for_account), + Qstr::MP_QSTR_cardano__to_pool => Some(Self::cardano__to_pool), + Qstr::MP_QSTR_cardano__token_minting_path => Some(Self::cardano__token_minting_path), + Qstr::MP_QSTR_cardano__total_collateral => Some(Self::cardano__total_collateral), + Qstr::MP_QSTR_cardano__transaction => Some(Self::cardano__transaction), + Qstr::MP_QSTR_cardano__transaction_contains_minting_or_burning => Some(Self::cardano__transaction_contains_minting_or_burning), + Qstr::MP_QSTR_cardano__transaction_contains_script_address_no_datum => Some(Self::cardano__transaction_contains_script_address_no_datum), + Qstr::MP_QSTR_cardano__transaction_fee => Some(Self::cardano__transaction_fee), + Qstr::MP_QSTR_cardano__transaction_id => Some(Self::cardano__transaction_id), + Qstr::MP_QSTR_cardano__transaction_no_collateral_input => Some(Self::cardano__transaction_no_collateral_input), + Qstr::MP_QSTR_cardano__transaction_no_script_data_hash => Some(Self::cardano__transaction_no_script_data_hash), + Qstr::MP_QSTR_cardano__transaction_output_contains_tokens => Some(Self::cardano__transaction_output_contains_tokens), + Qstr::MP_QSTR_cardano__ttl => Some(Self::cardano__ttl), + Qstr::MP_QSTR_cardano__unknown_collateral_amount => Some(Self::cardano__unknown_collateral_amount), + Qstr::MP_QSTR_cardano__unusual_path => Some(Self::cardano__unusual_path), + Qstr::MP_QSTR_cardano__valid_since => Some(Self::cardano__valid_since), + Qstr::MP_QSTR_cardano__verify_script => Some(Self::cardano__verify_script), + Qstr::MP_QSTR_cardano__vote_key_registration => Some(Self::cardano__vote_key_registration), + Qstr::MP_QSTR_cardano__vote_public_key => Some(Self::cardano__vote_public_key), + Qstr::MP_QSTR_cardano__voting_purpose => Some(Self::cardano__voting_purpose), + Qstr::MP_QSTR_cardano__warning => Some(Self::cardano__warning), + Qstr::MP_QSTR_cardano__weight => Some(Self::cardano__weight), + Qstr::MP_QSTR_cardano__withdrawal_for_address_template => Some(Self::cardano__withdrawal_for_address_template), + Qstr::MP_QSTR_cardano__x_of_y_signatures_template => Some(Self::cardano__x_of_y_signatures_template), + Qstr::MP_QSTR_coinjoin__access_account => Some(Self::coinjoin__access_account), + Qstr::MP_QSTR_coinjoin__do_not_disconnect => Some(Self::coinjoin__do_not_disconnect), + Qstr::MP_QSTR_coinjoin__max_mining_fee => Some(Self::coinjoin__max_mining_fee), + Qstr::MP_QSTR_coinjoin__max_rounds => Some(Self::coinjoin__max_rounds), + Qstr::MP_QSTR_coinjoin__title => Some(Self::coinjoin__title), + Qstr::MP_QSTR_coinjoin__title_do_not_disconnect => Some(Self::coinjoin__title_do_not_disconnect), + Qstr::MP_QSTR_coinjoin__title_progress => Some(Self::coinjoin__title_progress), + Qstr::MP_QSTR_coinjoin__waiting_for_others => Some(Self::coinjoin__waiting_for_others), + Qstr::MP_QSTR_confirm_total__fee_rate => Some(Self::confirm_total__fee_rate), + Qstr::MP_QSTR_confirm_total__sending_from_account => Some(Self::confirm_total__sending_from_account), + Qstr::MP_QSTR_confirm_total__title_fee => Some(Self::confirm_total__title_fee), + Qstr::MP_QSTR_confirm_total__title_sending_from => Some(Self::confirm_total__title_sending_from), + Qstr::MP_QSTR_debug__loading_seed => Some(Self::debug__loading_seed), + Qstr::MP_QSTR_debug__loading_seed_not_recommended => Some(Self::debug__loading_seed_not_recommended), + Qstr::MP_QSTR_device_name__change_template => Some(Self::device_name__change_template), + Qstr::MP_QSTR_device_name__title => Some(Self::device_name__title), + Qstr::MP_QSTR_entropy__send => Some(Self::entropy__send), + Qstr::MP_QSTR_entropy__title => Some(Self::entropy__title), + Qstr::MP_QSTR_entropy__title_confirm => Some(Self::entropy__title_confirm), + Qstr::MP_QSTR_eos__about_to_sign_template => Some(Self::eos__about_to_sign_template), + Qstr::MP_QSTR_eos__action_name => Some(Self::eos__action_name), + Qstr::MP_QSTR_eos__arbitrary_data => Some(Self::eos__arbitrary_data), + Qstr::MP_QSTR_eos__buy_ram => Some(Self::eos__buy_ram), + Qstr::MP_QSTR_eos__bytes => Some(Self::eos__bytes), + Qstr::MP_QSTR_eos__cancel_vote => Some(Self::eos__cancel_vote), + Qstr::MP_QSTR_eos__checksum => Some(Self::eos__checksum), + Qstr::MP_QSTR_eos__code => Some(Self::eos__code), + Qstr::MP_QSTR_eos__contract => Some(Self::eos__contract), + Qstr::MP_QSTR_eos__cpu => Some(Self::eos__cpu), + Qstr::MP_QSTR_eos__creator => Some(Self::eos__creator), + Qstr::MP_QSTR_eos__delegate => Some(Self::eos__delegate), + Qstr::MP_QSTR_eos__delete_auth => Some(Self::eos__delete_auth), + Qstr::MP_QSTR_eos__from => Some(Self::eos__from), + Qstr::MP_QSTR_eos__link_auth => Some(Self::eos__link_auth), + Qstr::MP_QSTR_eos__memo => Some(Self::eos__memo), + Qstr::MP_QSTR_eos__name => Some(Self::eos__name), + Qstr::MP_QSTR_eos__net => Some(Self::eos__net), + Qstr::MP_QSTR_eos__new_account => Some(Self::eos__new_account), + Qstr::MP_QSTR_eos__owner => Some(Self::eos__owner), + Qstr::MP_QSTR_eos__parent => Some(Self::eos__parent), + Qstr::MP_QSTR_eos__payer => Some(Self::eos__payer), + Qstr::MP_QSTR_eos__permission => Some(Self::eos__permission), + Qstr::MP_QSTR_eos__proxy => Some(Self::eos__proxy), + Qstr::MP_QSTR_eos__receiver => Some(Self::eos__receiver), + Qstr::MP_QSTR_eos__refund => Some(Self::eos__refund), + Qstr::MP_QSTR_eos__requirement => Some(Self::eos__requirement), + Qstr::MP_QSTR_eos__sell_ram => Some(Self::eos__sell_ram), + Qstr::MP_QSTR_eos__sender => Some(Self::eos__sender), + Qstr::MP_QSTR_eos__sign_transaction => Some(Self::eos__sign_transaction), + Qstr::MP_QSTR_eos__threshold => Some(Self::eos__threshold), + Qstr::MP_QSTR_eos__to => Some(Self::eos__to), + Qstr::MP_QSTR_eos__transfer => Some(Self::eos__transfer), + Qstr::MP_QSTR_eos__type => Some(Self::eos__type), + Qstr::MP_QSTR_eos__undelegate => Some(Self::eos__undelegate), + Qstr::MP_QSTR_eos__unlink_auth => Some(Self::eos__unlink_auth), + Qstr::MP_QSTR_eos__update_auth => Some(Self::eos__update_auth), + Qstr::MP_QSTR_eos__vote_for_producers => Some(Self::eos__vote_for_producers), + Qstr::MP_QSTR_eos__vote_for_proxy => Some(Self::eos__vote_for_proxy), + Qstr::MP_QSTR_eos__voter => Some(Self::eos__voter), + Qstr::MP_QSTR_ethereum__amount_sent => Some(Self::ethereum__amount_sent), + Qstr::MP_QSTR_ethereum__contract => Some(Self::ethereum__contract), + Qstr::MP_QSTR_ethereum__data_size_template => Some(Self::ethereum__data_size_template), + Qstr::MP_QSTR_ethereum__gas_limit => Some(Self::ethereum__gas_limit), + Qstr::MP_QSTR_ethereum__gas_price => Some(Self::ethereum__gas_price), + Qstr::MP_QSTR_ethereum__max_gas_price => Some(Self::ethereum__max_gas_price), + Qstr::MP_QSTR_ethereum__name_and_version => Some(Self::ethereum__name_and_version), + Qstr::MP_QSTR_ethereum__new_contract => Some(Self::ethereum__new_contract), + Qstr::MP_QSTR_ethereum__no_message_field => Some(Self::ethereum__no_message_field), + Qstr::MP_QSTR_ethereum__priority_fee => Some(Self::ethereum__priority_fee), + Qstr::MP_QSTR_ethereum__show_full_array => Some(Self::ethereum__show_full_array), + Qstr::MP_QSTR_ethereum__show_full_domain => Some(Self::ethereum__show_full_domain), + Qstr::MP_QSTR_ethereum__show_full_message => Some(Self::ethereum__show_full_message), + Qstr::MP_QSTR_ethereum__show_full_struct => Some(Self::ethereum__show_full_struct), + Qstr::MP_QSTR_ethereum__sign_eip712 => Some(Self::ethereum__sign_eip712), + Qstr::MP_QSTR_ethereum__title_confirm_data => Some(Self::ethereum__title_confirm_data), + Qstr::MP_QSTR_ethereum__title_confirm_domain => Some(Self::ethereum__title_confirm_domain), + Qstr::MP_QSTR_ethereum__title_confirm_message => Some(Self::ethereum__title_confirm_message), + Qstr::MP_QSTR_ethereum__title_confirm_struct => Some(Self::ethereum__title_confirm_struct), + Qstr::MP_QSTR_ethereum__title_confirm_typed_data => Some(Self::ethereum__title_confirm_typed_data), + Qstr::MP_QSTR_ethereum__title_signing_address => Some(Self::ethereum__title_signing_address), + Qstr::MP_QSTR_ethereum__units_template => Some(Self::ethereum__units_template), + Qstr::MP_QSTR_ethereum__unknown_token => Some(Self::ethereum__unknown_token), + Qstr::MP_QSTR_ethereum__valid_signature => Some(Self::ethereum__valid_signature), + Qstr::MP_QSTR_experimental_mode__enable => Some(Self::experimental_mode__enable), + Qstr::MP_QSTR_experimental_mode__only_for_dev => Some(Self::experimental_mode__only_for_dev), + Qstr::MP_QSTR_experimental_mode__title => Some(Self::experimental_mode__title), + Qstr::MP_QSTR_fido__already_registered => Some(Self::fido__already_registered), + Qstr::MP_QSTR_fido__device_already_registered => Some(Self::fido__device_already_registered), + Qstr::MP_QSTR_fido__device_already_registered_with_template => Some(Self::fido__device_already_registered_with_template), + Qstr::MP_QSTR_fido__device_not_registered => Some(Self::fido__device_not_registered), + Qstr::MP_QSTR_fido__does_not_belong => Some(Self::fido__does_not_belong), + Qstr::MP_QSTR_fido__erase_credentials => Some(Self::fido__erase_credentials), + Qstr::MP_QSTR_fido__export_credentials => Some(Self::fido__export_credentials), + Qstr::MP_QSTR_fido__not_registered => Some(Self::fido__not_registered), + Qstr::MP_QSTR_fido__not_registered_with_template => Some(Self::fido__not_registered_with_template), + Qstr::MP_QSTR_fido__please_enable_pin_protection => Some(Self::fido__please_enable_pin_protection), + Qstr::MP_QSTR_fido__title_authenticate => Some(Self::fido__title_authenticate), + Qstr::MP_QSTR_fido__title_import_credential => Some(Self::fido__title_import_credential), + Qstr::MP_QSTR_fido__title_list_credentials => Some(Self::fido__title_list_credentials), + Qstr::MP_QSTR_fido__title_register => Some(Self::fido__title_register), + Qstr::MP_QSTR_fido__title_remove_credential => Some(Self::fido__title_remove_credential), + Qstr::MP_QSTR_fido__title_reset => Some(Self::fido__title_reset), + Qstr::MP_QSTR_fido__title_u2f_auth => Some(Self::fido__title_u2f_auth), + Qstr::MP_QSTR_fido__title_u2f_register => Some(Self::fido__title_u2f_register), + Qstr::MP_QSTR_fido__title_verify_user => Some(Self::fido__title_verify_user), + Qstr::MP_QSTR_fido__unable_to_verify_user => Some(Self::fido__unable_to_verify_user), + Qstr::MP_QSTR_fido__wanna_erase_credentials => Some(Self::fido__wanna_erase_credentials), + Qstr::MP_QSTR_firmware_update__title => Some(Self::firmware_update__title), + Qstr::MP_QSTR_firmware_update__title_fingerprint => Some(Self::firmware_update__title_fingerprint), + Qstr::MP_QSTR_homescreen__click_to_connect => Some(Self::homescreen__click_to_connect), + Qstr::MP_QSTR_homescreen__click_to_unlock => Some(Self::homescreen__click_to_unlock), + Qstr::MP_QSTR_homescreen__title_backup_failed => Some(Self::homescreen__title_backup_failed), + Qstr::MP_QSTR_homescreen__title_backup_needed => Some(Self::homescreen__title_backup_needed), + Qstr::MP_QSTR_homescreen__title_coinjoin_authorized => Some(Self::homescreen__title_coinjoin_authorized), + Qstr::MP_QSTR_homescreen__title_experimental_mode => Some(Self::homescreen__title_experimental_mode), + Qstr::MP_QSTR_homescreen__title_no_usb_connection => Some(Self::homescreen__title_no_usb_connection), + Qstr::MP_QSTR_homescreen__title_pin_not_set => Some(Self::homescreen__title_pin_not_set), + Qstr::MP_QSTR_homescreen__title_seedless => Some(Self::homescreen__title_seedless), + Qstr::MP_QSTR_homescreen__title_set => Some(Self::homescreen__title_set), + Qstr::MP_QSTR_inputs__back => Some(Self::inputs__back), + Qstr::MP_QSTR_inputs__cancel => Some(Self::inputs__cancel), + Qstr::MP_QSTR_inputs__delete => Some(Self::inputs__delete), + Qstr::MP_QSTR_inputs__enter => Some(Self::inputs__enter), + Qstr::MP_QSTR_inputs__return => Some(Self::inputs__return), + Qstr::MP_QSTR_inputs__show => Some(Self::inputs__show), + Qstr::MP_QSTR_inputs__space => Some(Self::inputs__space), + Qstr::MP_QSTR_joint__title => Some(Self::joint__title), + Qstr::MP_QSTR_joint__to_the_total_amount => Some(Self::joint__to_the_total_amount), + Qstr::MP_QSTR_joint__you_are_contributing => Some(Self::joint__you_are_contributing), + Qstr::MP_QSTR_language__change_to => Some(Self::language__change_to), + Qstr::MP_QSTR_language__changed => Some(Self::language__changed), + Qstr::MP_QSTR_language__progress => Some(Self::language__progress), + Qstr::MP_QSTR_language__title => Some(Self::language__title), + Qstr::MP_QSTR_lockscreen__tap_to_connect => Some(Self::lockscreen__tap_to_connect), + Qstr::MP_QSTR_lockscreen__tap_to_unlock => Some(Self::lockscreen__tap_to_unlock), + Qstr::MP_QSTR_lockscreen__title_locked => Some(Self::lockscreen__title_locked), + Qstr::MP_QSTR_lockscreen__title_not_connected => Some(Self::lockscreen__title_not_connected), + Qstr::MP_QSTR_misc__decrypt_value => Some(Self::misc__decrypt_value), + Qstr::MP_QSTR_misc__encrypt_value => Some(Self::misc__encrypt_value), + Qstr::MP_QSTR_misc__title_suite_labeling => Some(Self::misc__title_suite_labeling), + Qstr::MP_QSTR_modify_amount__decrease_amount => Some(Self::modify_amount__decrease_amount), + Qstr::MP_QSTR_modify_amount__increase_amount => Some(Self::modify_amount__increase_amount), + Qstr::MP_QSTR_modify_amount__new_amount => Some(Self::modify_amount__new_amount), + Qstr::MP_QSTR_modify_amount__title => Some(Self::modify_amount__title), + Qstr::MP_QSTR_modify_fee__decrease_fee => Some(Self::modify_fee__decrease_fee), + Qstr::MP_QSTR_modify_fee__fee_rate => Some(Self::modify_fee__fee_rate), + Qstr::MP_QSTR_modify_fee__increase_fee => Some(Self::modify_fee__increase_fee), + Qstr::MP_QSTR_modify_fee__new_transaction_fee => Some(Self::modify_fee__new_transaction_fee), + Qstr::MP_QSTR_modify_fee__no_change => Some(Self::modify_fee__no_change), + Qstr::MP_QSTR_modify_fee__title => Some(Self::modify_fee__title), + Qstr::MP_QSTR_modify_fee__transaction_fee => Some(Self::modify_fee__transaction_fee), + Qstr::MP_QSTR_monero__confirm_export => Some(Self::monero__confirm_export), + Qstr::MP_QSTR_monero__confirm_ki_sync => Some(Self::monero__confirm_ki_sync), + Qstr::MP_QSTR_monero__confirm_refresh => Some(Self::monero__confirm_refresh), + Qstr::MP_QSTR_monero__confirm_unlock_time => Some(Self::monero__confirm_unlock_time), + Qstr::MP_QSTR_monero__hashing_inputs => Some(Self::monero__hashing_inputs), + Qstr::MP_QSTR_monero__payment_id => Some(Self::monero__payment_id), + Qstr::MP_QSTR_monero__postprocessing => Some(Self::monero__postprocessing), + Qstr::MP_QSTR_monero__processing => Some(Self::monero__processing), + Qstr::MP_QSTR_monero__processing_inputs => Some(Self::monero__processing_inputs), + Qstr::MP_QSTR_monero__processing_outputs => Some(Self::monero__processing_outputs), + Qstr::MP_QSTR_monero__signing => Some(Self::monero__signing), + Qstr::MP_QSTR_monero__signing_inputs => Some(Self::monero__signing_inputs), + Qstr::MP_QSTR_monero__unlock_time_set_template => Some(Self::monero__unlock_time_set_template), + Qstr::MP_QSTR_monero__wanna_export_tx_der => Some(Self::monero__wanna_export_tx_der), + Qstr::MP_QSTR_monero__wanna_export_tx_key => Some(Self::monero__wanna_export_tx_key), + Qstr::MP_QSTR_monero__wanna_export_watchkey => Some(Self::monero__wanna_export_watchkey), + Qstr::MP_QSTR_monero__wanna_start_refresh => Some(Self::monero__wanna_start_refresh), + Qstr::MP_QSTR_monero__wanna_sync_key_images => Some(Self::monero__wanna_sync_key_images), + Qstr::MP_QSTR_nem__absolute => Some(Self::nem__absolute), + Qstr::MP_QSTR_nem__activate => Some(Self::nem__activate), + Qstr::MP_QSTR_nem__add => Some(Self::nem__add), + Qstr::MP_QSTR_nem__confirm_action => Some(Self::nem__confirm_action), + Qstr::MP_QSTR_nem__confirm_address => Some(Self::nem__confirm_address), + Qstr::MP_QSTR_nem__confirm_creation_fee => Some(Self::nem__confirm_creation_fee), + Qstr::MP_QSTR_nem__confirm_mosaic => Some(Self::nem__confirm_mosaic), + Qstr::MP_QSTR_nem__confirm_multisig_fee => Some(Self::nem__confirm_multisig_fee), + Qstr::MP_QSTR_nem__confirm_namespace => Some(Self::nem__confirm_namespace), + Qstr::MP_QSTR_nem__confirm_payload => Some(Self::nem__confirm_payload), + Qstr::MP_QSTR_nem__confirm_properties => Some(Self::nem__confirm_properties), + Qstr::MP_QSTR_nem__confirm_rental_fee => Some(Self::nem__confirm_rental_fee), + Qstr::MP_QSTR_nem__confirm_transfer_of => Some(Self::nem__confirm_transfer_of), + Qstr::MP_QSTR_nem__convert_account_to_multisig => Some(Self::nem__convert_account_to_multisig), + Qstr::MP_QSTR_nem__cosign_transaction_for => Some(Self::nem__cosign_transaction_for), + Qstr::MP_QSTR_nem__cosignatory => Some(Self::nem__cosignatory), + Qstr::MP_QSTR_nem__create_mosaic => Some(Self::nem__create_mosaic), + Qstr::MP_QSTR_nem__create_namespace => Some(Self::nem__create_namespace), + Qstr::MP_QSTR_nem__deactivate => Some(Self::nem__deactivate), + Qstr::MP_QSTR_nem__decrease => Some(Self::nem__decrease), + Qstr::MP_QSTR_nem__description => Some(Self::nem__description), + Qstr::MP_QSTR_nem__divisibility_and_levy_cannot_be_shown => Some(Self::nem__divisibility_and_levy_cannot_be_shown), + Qstr::MP_QSTR_nem__encrypted => Some(Self::nem__encrypted), + Qstr::MP_QSTR_nem__final_confirm => Some(Self::nem__final_confirm), + Qstr::MP_QSTR_nem__immutable => Some(Self::nem__immutable), + Qstr::MP_QSTR_nem__increase => Some(Self::nem__increase), + Qstr::MP_QSTR_nem__initial_supply => Some(Self::nem__initial_supply), + Qstr::MP_QSTR_nem__initiate_transaction_for => Some(Self::nem__initiate_transaction_for), + Qstr::MP_QSTR_nem__levy_divisibility => Some(Self::nem__levy_divisibility), + Qstr::MP_QSTR_nem__levy_fee => Some(Self::nem__levy_fee), + Qstr::MP_QSTR_nem__levy_fee_of => Some(Self::nem__levy_fee_of), + Qstr::MP_QSTR_nem__levy_mosaic => Some(Self::nem__levy_mosaic), + Qstr::MP_QSTR_nem__levy_namespace => Some(Self::nem__levy_namespace), + Qstr::MP_QSTR_nem__levy_recipient => Some(Self::nem__levy_recipient), + Qstr::MP_QSTR_nem__levy_type => Some(Self::nem__levy_type), + Qstr::MP_QSTR_nem__modify_supply_for => Some(Self::nem__modify_supply_for), + Qstr::MP_QSTR_nem__modify_the_number_of_cosignatories_by => Some(Self::nem__modify_the_number_of_cosignatories_by), + Qstr::MP_QSTR_nem__mutable => Some(Self::nem__mutable), + Qstr::MP_QSTR_nem__of => Some(Self::nem__of), + Qstr::MP_QSTR_nem__percentile => Some(Self::nem__percentile), + Qstr::MP_QSTR_nem__raw_units_template => Some(Self::nem__raw_units_template), + Qstr::MP_QSTR_nem__remote_harvesting => Some(Self::nem__remote_harvesting), + Qstr::MP_QSTR_nem__remove => Some(Self::nem__remove), + Qstr::MP_QSTR_nem__set_minimum_cosignatories_to => Some(Self::nem__set_minimum_cosignatories_to), + Qstr::MP_QSTR_nem__sign_tx_fee_template => Some(Self::nem__sign_tx_fee_template), + Qstr::MP_QSTR_nem__supply_change => Some(Self::nem__supply_change), + Qstr::MP_QSTR_nem__supply_units_template => Some(Self::nem__supply_units_template), + Qstr::MP_QSTR_nem__transferable => Some(Self::nem__transferable), + Qstr::MP_QSTR_nem__under_namespace => Some(Self::nem__under_namespace), + Qstr::MP_QSTR_nem__unencrypted => Some(Self::nem__unencrypted), + Qstr::MP_QSTR_nem__unknown_mosaic => Some(Self::nem__unknown_mosaic), + Qstr::MP_QSTR_passphrase__access_hidden_wallet => Some(Self::passphrase__access_hidden_wallet), + Qstr::MP_QSTR_passphrase__always_on_device => Some(Self::passphrase__always_on_device), + Qstr::MP_QSTR_passphrase__from_host_not_shown => Some(Self::passphrase__from_host_not_shown), + Qstr::MP_QSTR_passphrase__hidden_wallet => Some(Self::passphrase__hidden_wallet), + Qstr::MP_QSTR_passphrase__hide => Some(Self::passphrase__hide), + Qstr::MP_QSTR_passphrase__next_screen_will_show_passphrase => Some(Self::passphrase__next_screen_will_show_passphrase), + Qstr::MP_QSTR_passphrase__please_enter => Some(Self::passphrase__please_enter), + Qstr::MP_QSTR_passphrase__revoke_on_device => Some(Self::passphrase__revoke_on_device), + Qstr::MP_QSTR_passphrase__title_confirm => Some(Self::passphrase__title_confirm), + Qstr::MP_QSTR_passphrase__title_enter => Some(Self::passphrase__title_enter), + Qstr::MP_QSTR_passphrase__title_hide => Some(Self::passphrase__title_hide), + Qstr::MP_QSTR_passphrase__title_settings => Some(Self::passphrase__title_settings), + Qstr::MP_QSTR_passphrase__title_source => Some(Self::passphrase__title_source), + Qstr::MP_QSTR_passphrase__turn_off => Some(Self::passphrase__turn_off), + Qstr::MP_QSTR_passphrase__turn_on => Some(Self::passphrase__turn_on), + Qstr::MP_QSTR_pin__change => Some(Self::pin__change), + Qstr::MP_QSTR_pin__changed => Some(Self::pin__changed), + Qstr::MP_QSTR_pin__cursor_will_change => Some(Self::pin__cursor_will_change), + Qstr::MP_QSTR_pin__diff_from_wipe_code => Some(Self::pin__diff_from_wipe_code), + Qstr::MP_QSTR_pin__disabled => Some(Self::pin__disabled), + Qstr::MP_QSTR_pin__enabled => Some(Self::pin__enabled), + Qstr::MP_QSTR_pin__enter => Some(Self::pin__enter), + Qstr::MP_QSTR_pin__enter_new => Some(Self::pin__enter_new), + Qstr::MP_QSTR_pin__entered_not_valid => Some(Self::pin__entered_not_valid), + Qstr::MP_QSTR_pin__info => Some(Self::pin__info), + Qstr::MP_QSTR_pin__invalid_pin => Some(Self::pin__invalid_pin), + Qstr::MP_QSTR_pin__last_attempt => Some(Self::pin__last_attempt), + Qstr::MP_QSTR_pin__mismatch => Some(Self::pin__mismatch), + Qstr::MP_QSTR_pin__pin_mismatch => Some(Self::pin__pin_mismatch), + Qstr::MP_QSTR_pin__please_check_again => Some(Self::pin__please_check_again), + Qstr::MP_QSTR_pin__reenter_new => Some(Self::pin__reenter_new), + Qstr::MP_QSTR_pin__reenter_to_confirm => Some(Self::pin__reenter_to_confirm), + Qstr::MP_QSTR_pin__should_be_long => Some(Self::pin__should_be_long), + Qstr::MP_QSTR_pin__title_check_pin => Some(Self::pin__title_check_pin), + Qstr::MP_QSTR_pin__title_settings => Some(Self::pin__title_settings), + Qstr::MP_QSTR_pin__title_wrong_pin => Some(Self::pin__title_wrong_pin), + Qstr::MP_QSTR_pin__tries_left => Some(Self::pin__tries_left), + Qstr::MP_QSTR_pin__turn_off => Some(Self::pin__turn_off), + Qstr::MP_QSTR_pin__turn_on => Some(Self::pin__turn_on), + Qstr::MP_QSTR_pin__wrong_pin => Some(Self::pin__wrong_pin), + Qstr::MP_QSTR_plurals__contains_x_keys => Some(Self::plurals__contains_x_keys), + Qstr::MP_QSTR_plurals__lock_after_x_hours => Some(Self::plurals__lock_after_x_hours), + Qstr::MP_QSTR_plurals__lock_after_x_milliseconds => Some(Self::plurals__lock_after_x_milliseconds), + Qstr::MP_QSTR_plurals__lock_after_x_minutes => Some(Self::plurals__lock_after_x_minutes), + Qstr::MP_QSTR_plurals__lock_after_x_seconds => Some(Self::plurals__lock_after_x_seconds), + Qstr::MP_QSTR_plurals__sign_x_actions => Some(Self::plurals__sign_x_actions), + Qstr::MP_QSTR_plurals__transaction_of_x_operations => Some(Self::plurals__transaction_of_x_operations), + Qstr::MP_QSTR_plurals__x_groups_needed => Some(Self::plurals__x_groups_needed), + Qstr::MP_QSTR_plurals__x_shares_needed => Some(Self::plurals__x_shares_needed), + Qstr::MP_QSTR_progress__authenticity_check => Some(Self::progress__authenticity_check), + Qstr::MP_QSTR_progress__done => Some(Self::progress__done), + Qstr::MP_QSTR_progress__loading_transaction => Some(Self::progress__loading_transaction), + Qstr::MP_QSTR_progress__locking_device => Some(Self::progress__locking_device), + Qstr::MP_QSTR_progress__one_second_left => Some(Self::progress__one_second_left), + Qstr::MP_QSTR_progress__please_wait => Some(Self::progress__please_wait), + Qstr::MP_QSTR_progress__processing => Some(Self::progress__processing), + Qstr::MP_QSTR_progress__refreshing => Some(Self::progress__refreshing), + Qstr::MP_QSTR_progress__signing_transaction => Some(Self::progress__signing_transaction), + Qstr::MP_QSTR_progress__syncing => Some(Self::progress__syncing), + Qstr::MP_QSTR_progress__x_seconds_left_template => Some(Self::progress__x_seconds_left_template), + Qstr::MP_QSTR_reboot_to_bootloader__restart => Some(Self::reboot_to_bootloader__restart), + Qstr::MP_QSTR_reboot_to_bootloader__title => Some(Self::reboot_to_bootloader__title), + Qstr::MP_QSTR_reboot_to_bootloader__version_by_template => Some(Self::reboot_to_bootloader__version_by_template), + Qstr::MP_QSTR_recovery__cancel_dry_run => Some(Self::recovery__cancel_dry_run), + Qstr::MP_QSTR_recovery__check_dry_run => Some(Self::recovery__check_dry_run), + Qstr::MP_QSTR_recovery__cursor_will_change => Some(Self::recovery__cursor_will_change), + Qstr::MP_QSTR_recovery__dry_run_bip39_valid_match => Some(Self::recovery__dry_run_bip39_valid_match), + Qstr::MP_QSTR_recovery__dry_run_bip39_valid_mismatch => Some(Self::recovery__dry_run_bip39_valid_mismatch), + Qstr::MP_QSTR_recovery__dry_run_slip39_valid_match => Some(Self::recovery__dry_run_slip39_valid_match), + Qstr::MP_QSTR_recovery__dry_run_slip39_valid_mismatch => Some(Self::recovery__dry_run_slip39_valid_mismatch), + Qstr::MP_QSTR_recovery__enter_any_share => Some(Self::recovery__enter_any_share), + Qstr::MP_QSTR_recovery__enter_backup => Some(Self::recovery__enter_backup), + Qstr::MP_QSTR_recovery__enter_different_share => Some(Self::recovery__enter_different_share), + Qstr::MP_QSTR_recovery__enter_share_from_diff_group => Some(Self::recovery__enter_share_from_diff_group), + Qstr::MP_QSTR_recovery__group_num_template => Some(Self::recovery__group_num_template), + Qstr::MP_QSTR_recovery__group_threshold_reached => Some(Self::recovery__group_threshold_reached), + Qstr::MP_QSTR_recovery__invalid_seed_entered => Some(Self::recovery__invalid_seed_entered), + Qstr::MP_QSTR_recovery__invalid_share_entered => Some(Self::recovery__invalid_share_entered), + Qstr::MP_QSTR_recovery__more_shares_needed => Some(Self::recovery__more_shares_needed), + Qstr::MP_QSTR_recovery__num_of_words => Some(Self::recovery__num_of_words), + Qstr::MP_QSTR_recovery__only_first_n_letters => Some(Self::recovery__only_first_n_letters), + Qstr::MP_QSTR_recovery__progress_will_be_lost => Some(Self::recovery__progress_will_be_lost), + Qstr::MP_QSTR_recovery__select_num_of_words => Some(Self::recovery__select_num_of_words), + Qstr::MP_QSTR_recovery__share_already_entered => Some(Self::recovery__share_already_entered), + Qstr::MP_QSTR_recovery__share_from_another_shamir => Some(Self::recovery__share_from_another_shamir), + Qstr::MP_QSTR_recovery__share_num_template => Some(Self::recovery__share_num_template), + Qstr::MP_QSTR_recovery__title => Some(Self::recovery__title), + Qstr::MP_QSTR_recovery__title_cancel_dry_run => Some(Self::recovery__title_cancel_dry_run), + Qstr::MP_QSTR_recovery__title_cancel_recovery => Some(Self::recovery__title_cancel_recovery), + Qstr::MP_QSTR_recovery__title_dry_run => Some(Self::recovery__title_dry_run), + Qstr::MP_QSTR_recovery__title_recover => Some(Self::recovery__title_recover), + Qstr::MP_QSTR_recovery__title_remaining_shares => Some(Self::recovery__title_remaining_shares), + Qstr::MP_QSTR_recovery__type_word_x_of_y_template => Some(Self::recovery__type_word_x_of_y_template), + Qstr::MP_QSTR_recovery__wallet_recovered => Some(Self::recovery__wallet_recovered), + Qstr::MP_QSTR_recovery__wanna_cancel_dry_run => Some(Self::recovery__wanna_cancel_dry_run), + Qstr::MP_QSTR_recovery__wanna_cancel_recovery => Some(Self::recovery__wanna_cancel_recovery), + Qstr::MP_QSTR_recovery__word_count_template => Some(Self::recovery__word_count_template), + Qstr::MP_QSTR_recovery__word_x_of_y_template => Some(Self::recovery__word_x_of_y_template), + Qstr::MP_QSTR_recovery__x_more_items_starting_template_plural => Some(Self::recovery__x_more_items_starting_template_plural), + Qstr::MP_QSTR_recovery__x_more_shares_needed_template_plural => Some(Self::recovery__x_more_shares_needed_template_plural), + Qstr::MP_QSTR_recovery__x_of_y_entered_template => Some(Self::recovery__x_of_y_entered_template), + Qstr::MP_QSTR_recovery__you_have_entered => Some(Self::recovery__you_have_entered), + Qstr::MP_QSTR_reset__advanced_group_threshold_info => Some(Self::reset__advanced_group_threshold_info), + Qstr::MP_QSTR_reset__all_x_of_y_template => Some(Self::reset__all_x_of_y_template), + Qstr::MP_QSTR_reset__any_x_of_y_template => Some(Self::reset__any_x_of_y_template), + Qstr::MP_QSTR_reset__button_create => Some(Self::reset__button_create), + Qstr::MP_QSTR_reset__button_recover => Some(Self::reset__button_recover), + Qstr::MP_QSTR_reset__by_continuing => Some(Self::reset__by_continuing), + Qstr::MP_QSTR_reset__check_backup_title => Some(Self::reset__check_backup_title), + Qstr::MP_QSTR_reset__check_group_share_title_template => Some(Self::reset__check_group_share_title_template), + Qstr::MP_QSTR_reset__check_seed_title => Some(Self::reset__check_seed_title), + Qstr::MP_QSTR_reset__check_share_title_template => Some(Self::reset__check_share_title_template), + Qstr::MP_QSTR_reset__continue_with_next_share => Some(Self::reset__continue_with_next_share), + Qstr::MP_QSTR_reset__continue_with_share_template => Some(Self::reset__continue_with_share_template), + Qstr::MP_QSTR_reset__finished_verifying_group_template => Some(Self::reset__finished_verifying_group_template), + Qstr::MP_QSTR_reset__finished_verifying_seed => Some(Self::reset__finished_verifying_seed), + Qstr::MP_QSTR_reset__finished_verifying_shares => Some(Self::reset__finished_verifying_shares), + Qstr::MP_QSTR_reset__group_description => Some(Self::reset__group_description), + Qstr::MP_QSTR_reset__group_info => Some(Self::reset__group_info), + Qstr::MP_QSTR_reset__group_share_checked_successfully_template => Some(Self::reset__group_share_checked_successfully_template), + Qstr::MP_QSTR_reset__group_share_title_template => Some(Self::reset__group_share_title_template), + Qstr::MP_QSTR_reset__more_info_at => Some(Self::reset__more_info_at), + Qstr::MP_QSTR_reset__need_all_share_template => Some(Self::reset__need_all_share_template), + Qstr::MP_QSTR_reset__need_any_share_template => Some(Self::reset__need_any_share_template), + Qstr::MP_QSTR_reset__needed_to_form_a_group => Some(Self::reset__needed_to_form_a_group), + Qstr::MP_QSTR_reset__needed_to_recover_your_wallet => Some(Self::reset__needed_to_recover_your_wallet), + Qstr::MP_QSTR_reset__never_make_digital_copy => Some(Self::reset__never_make_digital_copy), + Qstr::MP_QSTR_reset__num_of_share_holders_template => Some(Self::reset__num_of_share_holders_template), + Qstr::MP_QSTR_reset__num_of_shares_advanced_info_template => Some(Self::reset__num_of_shares_advanced_info_template), + Qstr::MP_QSTR_reset__num_of_shares_basic_info => Some(Self::reset__num_of_shares_basic_info), + Qstr::MP_QSTR_reset__num_shares_for_group_template => Some(Self::reset__num_shares_for_group_template), + Qstr::MP_QSTR_reset__number_of_shares_info => Some(Self::reset__number_of_shares_info), + Qstr::MP_QSTR_reset__one_share => Some(Self::reset__one_share), + Qstr::MP_QSTR_reset__only_one_share_will_be_created => Some(Self::reset__only_one_share_will_be_created), + Qstr::MP_QSTR_reset__recovery_seed_title => Some(Self::reset__recovery_seed_title), + Qstr::MP_QSTR_reset__recovery_share_title_template => Some(Self::reset__recovery_share_title_template), + Qstr::MP_QSTR_reset__required_number_of_groups => Some(Self::reset__required_number_of_groups), + Qstr::MP_QSTR_reset__select_correct_word => Some(Self::reset__select_correct_word), + Qstr::MP_QSTR_reset__select_word_template => Some(Self::reset__select_word_template), + Qstr::MP_QSTR_reset__select_word_x_of_y_template => Some(Self::reset__select_word_x_of_y_template), + Qstr::MP_QSTR_reset__set_it_to_count_template => Some(Self::reset__set_it_to_count_template), + Qstr::MP_QSTR_reset__share_checked_successfully_template => Some(Self::reset__share_checked_successfully_template), + Qstr::MP_QSTR_reset__share_words_title => Some(Self::reset__share_words_title), + Qstr::MP_QSTR_reset__slip39_checklist_num_groups => Some(Self::reset__slip39_checklist_num_groups), + Qstr::MP_QSTR_reset__slip39_checklist_num_shares => Some(Self::reset__slip39_checklist_num_shares), + Qstr::MP_QSTR_reset__slip39_checklist_set_num_groups => Some(Self::reset__slip39_checklist_set_num_groups), + Qstr::MP_QSTR_reset__slip39_checklist_set_num_shares => Some(Self::reset__slip39_checklist_set_num_shares), + Qstr::MP_QSTR_reset__slip39_checklist_set_sizes => Some(Self::reset__slip39_checklist_set_sizes), + Qstr::MP_QSTR_reset__slip39_checklist_set_sizes_longer => Some(Self::reset__slip39_checklist_set_sizes_longer), + Qstr::MP_QSTR_reset__slip39_checklist_set_threshold => Some(Self::reset__slip39_checklist_set_threshold), + Qstr::MP_QSTR_reset__slip39_checklist_title => Some(Self::reset__slip39_checklist_title), + Qstr::MP_QSTR_reset__slip39_checklist_write_down => Some(Self::reset__slip39_checklist_write_down), + Qstr::MP_QSTR_reset__slip39_checklist_write_down_recovery => Some(Self::reset__slip39_checklist_write_down_recovery), + Qstr::MP_QSTR_reset__the_threshold_sets_the_number_of_shares => Some(Self::reset__the_threshold_sets_the_number_of_shares), + Qstr::MP_QSTR_reset__threshold_info => Some(Self::reset__threshold_info), + Qstr::MP_QSTR_reset__title_backup_is_done => Some(Self::reset__title_backup_is_done), + Qstr::MP_QSTR_reset__title_create_wallet => Some(Self::reset__title_create_wallet), + Qstr::MP_QSTR_reset__title_create_wallet_shamir => Some(Self::reset__title_create_wallet_shamir), + Qstr::MP_QSTR_reset__title_group_threshold => Some(Self::reset__title_group_threshold), + Qstr::MP_QSTR_reset__title_number_of_groups => Some(Self::reset__title_number_of_groups), + Qstr::MP_QSTR_reset__title_number_of_shares => Some(Self::reset__title_number_of_shares), + Qstr::MP_QSTR_reset__title_set_group_threshold => Some(Self::reset__title_set_group_threshold), + Qstr::MP_QSTR_reset__title_set_number_of_groups => Some(Self::reset__title_set_number_of_groups), + Qstr::MP_QSTR_reset__title_set_number_of_shares => Some(Self::reset__title_set_number_of_shares), + Qstr::MP_QSTR_reset__title_set_threshold => Some(Self::reset__title_set_threshold), + Qstr::MP_QSTR_reset__to_form_group_template => Some(Self::reset__to_form_group_template), + Qstr::MP_QSTR_reset__tos_link => Some(Self::reset__tos_link), + Qstr::MP_QSTR_reset__total_number_of_shares_in_group_template => Some(Self::reset__total_number_of_shares_in_group_template), + Qstr::MP_QSTR_reset__use_your_backup => Some(Self::reset__use_your_backup), + Qstr::MP_QSTR_reset__write_down_words_template => Some(Self::reset__write_down_words_template), + Qstr::MP_QSTR_reset__wrong_word_selected => Some(Self::reset__wrong_word_selected), + Qstr::MP_QSTR_reset__you_need_one_share => Some(Self::reset__you_need_one_share), + Qstr::MP_QSTR_reset__your_backup_is_done => Some(Self::reset__your_backup_is_done), + Qstr::MP_QSTR_ripple__confirm_tag => Some(Self::ripple__confirm_tag), + Qstr::MP_QSTR_ripple__destination_tag_template => Some(Self::ripple__destination_tag_template), + Qstr::MP_QSTR_rotation__change_template => Some(Self::rotation__change_template), + Qstr::MP_QSTR_rotation__east => Some(Self::rotation__east), + Qstr::MP_QSTR_rotation__north => Some(Self::rotation__north), + Qstr::MP_QSTR_rotation__south => Some(Self::rotation__south), + Qstr::MP_QSTR_rotation__title_change => Some(Self::rotation__title_change), + Qstr::MP_QSTR_rotation__west => Some(Self::rotation__west), + Qstr::MP_QSTR_safety_checks__approve_unsafe_always => Some(Self::safety_checks__approve_unsafe_always), + Qstr::MP_QSTR_safety_checks__approve_unsafe_temporary => Some(Self::safety_checks__approve_unsafe_temporary), + Qstr::MP_QSTR_safety_checks__enforce_strict => Some(Self::safety_checks__enforce_strict), + Qstr::MP_QSTR_safety_checks__title => Some(Self::safety_checks__title), + Qstr::MP_QSTR_safety_checks__title_safety_override => Some(Self::safety_checks__title_safety_override), + Qstr::MP_QSTR_sd_card__all_data_will_be_lost => Some(Self::sd_card__all_data_will_be_lost), + Qstr::MP_QSTR_sd_card__card_required => Some(Self::sd_card__card_required), + Qstr::MP_QSTR_sd_card__disable => Some(Self::sd_card__disable), + Qstr::MP_QSTR_sd_card__disabled => Some(Self::sd_card__disabled), + Qstr::MP_QSTR_sd_card__enable => Some(Self::sd_card__enable), + Qstr::MP_QSTR_sd_card__enabled => Some(Self::sd_card__enabled), + Qstr::MP_QSTR_sd_card__error => Some(Self::sd_card__error), + Qstr::MP_QSTR_sd_card__format_card => Some(Self::sd_card__format_card), + Qstr::MP_QSTR_sd_card__insert_correct_card => Some(Self::sd_card__insert_correct_card), + Qstr::MP_QSTR_sd_card__please_insert => Some(Self::sd_card__please_insert), + Qstr::MP_QSTR_sd_card__please_unplug_and_insert => Some(Self::sd_card__please_unplug_and_insert), + Qstr::MP_QSTR_sd_card__problem_accessing => Some(Self::sd_card__problem_accessing), + Qstr::MP_QSTR_sd_card__refresh => Some(Self::sd_card__refresh), + Qstr::MP_QSTR_sd_card__refreshed => Some(Self::sd_card__refreshed), + Qstr::MP_QSTR_sd_card__restart => Some(Self::sd_card__restart), + Qstr::MP_QSTR_sd_card__title => Some(Self::sd_card__title), + Qstr::MP_QSTR_sd_card__title_problem => Some(Self::sd_card__title_problem), + Qstr::MP_QSTR_sd_card__unknown_filesystem => Some(Self::sd_card__unknown_filesystem), + Qstr::MP_QSTR_sd_card__unplug_and_insert_correct => Some(Self::sd_card__unplug_and_insert_correct), + Qstr::MP_QSTR_sd_card__use_different_card => Some(Self::sd_card__use_different_card), + Qstr::MP_QSTR_sd_card__wanna_format => Some(Self::sd_card__wanna_format), + Qstr::MP_QSTR_sd_card__wrong_sd_card => Some(Self::sd_card__wrong_sd_card), + Qstr::MP_QSTR_send__address_path => Some(Self::send__address_path), + Qstr::MP_QSTR_send__confirm_sending => Some(Self::send__confirm_sending), + Qstr::MP_QSTR_send__from_multiple_accounts => Some(Self::send__from_multiple_accounts), + Qstr::MP_QSTR_send__including_fee => Some(Self::send__including_fee), + Qstr::MP_QSTR_send__maximum_fee => Some(Self::send__maximum_fee), + Qstr::MP_QSTR_send__receiving_to_multisig => Some(Self::send__receiving_to_multisig), + Qstr::MP_QSTR_send__title_confirm_sending => Some(Self::send__title_confirm_sending), + Qstr::MP_QSTR_send__title_joint_transaction => Some(Self::send__title_joint_transaction), + Qstr::MP_QSTR_send__title_receiving_to => Some(Self::send__title_receiving_to), + Qstr::MP_QSTR_send__title_sending => Some(Self::send__title_sending), + Qstr::MP_QSTR_send__title_sending_amount => Some(Self::send__title_sending_amount), + Qstr::MP_QSTR_send__title_sending_to => Some(Self::send__title_sending_to), + Qstr::MP_QSTR_send__to_the_total_amount => Some(Self::send__to_the_total_amount), + Qstr::MP_QSTR_send__total_amount => Some(Self::send__total_amount), + Qstr::MP_QSTR_send__transaction_id => Some(Self::send__transaction_id), + Qstr::MP_QSTR_send__you_are_contributing => Some(Self::send__you_are_contributing), + Qstr::MP_QSTR_share_words__words_in_order => Some(Self::share_words__words_in_order), + Qstr::MP_QSTR_share_words__wrote_down_all => Some(Self::share_words__wrote_down_all), + Qstr::MP_QSTR_sign_message__bytes_template => Some(Self::sign_message__bytes_template), + Qstr::MP_QSTR_sign_message__confirm_address => Some(Self::sign_message__confirm_address), + Qstr::MP_QSTR_sign_message__confirm_message => Some(Self::sign_message__confirm_message), + Qstr::MP_QSTR_sign_message__message_size => Some(Self::sign_message__message_size), + Qstr::MP_QSTR_sign_message__verify_address => Some(Self::sign_message__verify_address), + Qstr::MP_QSTR_solana__account_index => Some(Self::solana__account_index), + Qstr::MP_QSTR_solana__associated_token_account => Some(Self::solana__associated_token_account), + Qstr::MP_QSTR_solana__confirm_multisig => Some(Self::solana__confirm_multisig), + Qstr::MP_QSTR_solana__expected_fee => Some(Self::solana__expected_fee), + Qstr::MP_QSTR_solana__instruction_accounts_template => Some(Self::solana__instruction_accounts_template), + Qstr::MP_QSTR_solana__instruction_data => Some(Self::solana__instruction_data), + Qstr::MP_QSTR_solana__instruction_is_multisig => Some(Self::solana__instruction_is_multisig), + Qstr::MP_QSTR_solana__is_provided_via_lookup_table_template => Some(Self::solana__is_provided_via_lookup_table_template), + Qstr::MP_QSTR_solana__lookup_table_address => Some(Self::solana__lookup_table_address), + Qstr::MP_QSTR_solana__multiple_signers => Some(Self::solana__multiple_signers), + Qstr::MP_QSTR_solana__token_address => Some(Self::solana__token_address), + Qstr::MP_QSTR_solana__transaction_contains_unknown_instructions => Some(Self::solana__transaction_contains_unknown_instructions), + Qstr::MP_QSTR_solana__transaction_requires_x_signers_template => Some(Self::solana__transaction_requires_x_signers_template), + Qstr::MP_QSTR_stellar__account_merge => Some(Self::stellar__account_merge), + Qstr::MP_QSTR_stellar__account_thresholds => Some(Self::stellar__account_thresholds), + Qstr::MP_QSTR_stellar__add_signer => Some(Self::stellar__add_signer), + Qstr::MP_QSTR_stellar__add_trust => Some(Self::stellar__add_trust), + Qstr::MP_QSTR_stellar__all_will_be_sent_to => Some(Self::stellar__all_will_be_sent_to), + Qstr::MP_QSTR_stellar__allow_trust => Some(Self::stellar__allow_trust), + Qstr::MP_QSTR_stellar__asset => Some(Self::stellar__asset), + Qstr::MP_QSTR_stellar__balance_id => Some(Self::stellar__balance_id), + Qstr::MP_QSTR_stellar__bump_sequence => Some(Self::stellar__bump_sequence), + Qstr::MP_QSTR_stellar__buying => Some(Self::stellar__buying), + Qstr::MP_QSTR_stellar__claim_claimable_balance => Some(Self::stellar__claim_claimable_balance), + Qstr::MP_QSTR_stellar__clear_data => Some(Self::stellar__clear_data), + Qstr::MP_QSTR_stellar__clear_flags => Some(Self::stellar__clear_flags), + Qstr::MP_QSTR_stellar__confirm_issuer => Some(Self::stellar__confirm_issuer), + Qstr::MP_QSTR_stellar__confirm_memo => Some(Self::stellar__confirm_memo), + Qstr::MP_QSTR_stellar__confirm_network => Some(Self::stellar__confirm_network), + Qstr::MP_QSTR_stellar__confirm_operation => Some(Self::stellar__confirm_operation), + Qstr::MP_QSTR_stellar__confirm_stellar => Some(Self::stellar__confirm_stellar), + Qstr::MP_QSTR_stellar__confirm_timebounds => Some(Self::stellar__confirm_timebounds), + Qstr::MP_QSTR_stellar__create_account => Some(Self::stellar__create_account), + Qstr::MP_QSTR_stellar__debited_amount => Some(Self::stellar__debited_amount), + Qstr::MP_QSTR_stellar__delete => Some(Self::stellar__delete), + Qstr::MP_QSTR_stellar__delete_passive_offer => Some(Self::stellar__delete_passive_offer), + Qstr::MP_QSTR_stellar__delete_trust => Some(Self::stellar__delete_trust), + Qstr::MP_QSTR_stellar__destination => Some(Self::stellar__destination), + Qstr::MP_QSTR_stellar__exchanges_require_memo => Some(Self::stellar__exchanges_require_memo), + Qstr::MP_QSTR_stellar__final_confirm => Some(Self::stellar__final_confirm), + Qstr::MP_QSTR_stellar__hash => Some(Self::stellar__hash), + Qstr::MP_QSTR_stellar__high => Some(Self::stellar__high), + Qstr::MP_QSTR_stellar__home_domain => Some(Self::stellar__home_domain), + Qstr::MP_QSTR_stellar__inflation => Some(Self::stellar__inflation), + Qstr::MP_QSTR_stellar__initial_balance => Some(Self::stellar__initial_balance), + Qstr::MP_QSTR_stellar__initialize_signing_with => Some(Self::stellar__initialize_signing_with), + Qstr::MP_QSTR_stellar__issuer_template => Some(Self::stellar__issuer_template), + Qstr::MP_QSTR_stellar__key => Some(Self::stellar__key), + Qstr::MP_QSTR_stellar__limit => Some(Self::stellar__limit), + Qstr::MP_QSTR_stellar__low => Some(Self::stellar__low), + Qstr::MP_QSTR_stellar__master_weight => Some(Self::stellar__master_weight), + Qstr::MP_QSTR_stellar__medium => Some(Self::stellar__medium), + Qstr::MP_QSTR_stellar__new_offer => Some(Self::stellar__new_offer), + Qstr::MP_QSTR_stellar__new_passive_offer => Some(Self::stellar__new_passive_offer), + Qstr::MP_QSTR_stellar__no_memo_set => Some(Self::stellar__no_memo_set), + Qstr::MP_QSTR_stellar__no_restriction => Some(Self::stellar__no_restriction), + Qstr::MP_QSTR_stellar__on_network_template => Some(Self::stellar__on_network_template), + Qstr::MP_QSTR_stellar__path_pay => Some(Self::stellar__path_pay), + Qstr::MP_QSTR_stellar__path_pay_at_least => Some(Self::stellar__path_pay_at_least), + Qstr::MP_QSTR_stellar__pay => Some(Self::stellar__pay), + Qstr::MP_QSTR_stellar__pay_at_most => Some(Self::stellar__pay_at_most), + Qstr::MP_QSTR_stellar__preauth_transaction => Some(Self::stellar__preauth_transaction), + Qstr::MP_QSTR_stellar__price_per_template => Some(Self::stellar__price_per_template), + Qstr::MP_QSTR_stellar__private_network => Some(Self::stellar__private_network), + Qstr::MP_QSTR_stellar__remove_signer => Some(Self::stellar__remove_signer), + Qstr::MP_QSTR_stellar__revoke_trust => Some(Self::stellar__revoke_trust), + Qstr::MP_QSTR_stellar__selling => Some(Self::stellar__selling), + Qstr::MP_QSTR_stellar__set_data => Some(Self::stellar__set_data), + Qstr::MP_QSTR_stellar__set_flags => Some(Self::stellar__set_flags), + Qstr::MP_QSTR_stellar__set_sequence_to_template => Some(Self::stellar__set_sequence_to_template), + Qstr::MP_QSTR_stellar__sign_tx_count_template => Some(Self::stellar__sign_tx_count_template), + Qstr::MP_QSTR_stellar__sign_tx_fee_template => Some(Self::stellar__sign_tx_fee_template), + Qstr::MP_QSTR_stellar__source_account => Some(Self::stellar__source_account), + Qstr::MP_QSTR_stellar__testnet_network => Some(Self::stellar__testnet_network), + Qstr::MP_QSTR_stellar__trusted_account => Some(Self::stellar__trusted_account), + Qstr::MP_QSTR_stellar__update => Some(Self::stellar__update), + Qstr::MP_QSTR_stellar__valid_from => Some(Self::stellar__valid_from), + Qstr::MP_QSTR_stellar__valid_to => Some(Self::stellar__valid_to), + Qstr::MP_QSTR_stellar__value_sha256 => Some(Self::stellar__value_sha256), + Qstr::MP_QSTR_stellar__wanna_clean_value_key_template => Some(Self::stellar__wanna_clean_value_key_template), + Qstr::MP_QSTR_stellar__your_account => Some(Self::stellar__your_account), + Qstr::MP_QSTR_tezos__baker_address => Some(Self::tezos__baker_address), + Qstr::MP_QSTR_tezos__balance => Some(Self::tezos__balance), + Qstr::MP_QSTR_tezos__ballot => Some(Self::tezos__ballot), + Qstr::MP_QSTR_tezos__confirm_delegation => Some(Self::tezos__confirm_delegation), + Qstr::MP_QSTR_tezos__confirm_origination => Some(Self::tezos__confirm_origination), + Qstr::MP_QSTR_tezos__delegator => Some(Self::tezos__delegator), + Qstr::MP_QSTR_tezos__proposal => Some(Self::tezos__proposal), + Qstr::MP_QSTR_tezos__register_delegate => Some(Self::tezos__register_delegate), + Qstr::MP_QSTR_tezos__remove_delegation => Some(Self::tezos__remove_delegation), + Qstr::MP_QSTR_tezos__submit_ballot => Some(Self::tezos__submit_ballot), + Qstr::MP_QSTR_tezos__submit_proposal => Some(Self::tezos__submit_proposal), + Qstr::MP_QSTR_tezos__submit_proposals => Some(Self::tezos__submit_proposals), + Qstr::MP_QSTR_tutorial__middle_click => Some(Self::tutorial__middle_click), + Qstr::MP_QSTR_tutorial__press_and_hold => Some(Self::tutorial__press_and_hold), + Qstr::MP_QSTR_tutorial__ready_to_use => Some(Self::tutorial__ready_to_use), + Qstr::MP_QSTR_tutorial__scroll_down => Some(Self::tutorial__scroll_down), + Qstr::MP_QSTR_tutorial__sure_you_want_skip => Some(Self::tutorial__sure_you_want_skip), + Qstr::MP_QSTR_tutorial__title_hello => Some(Self::tutorial__title_hello), + Qstr::MP_QSTR_tutorial__title_screen_scroll => Some(Self::tutorial__title_screen_scroll), + Qstr::MP_QSTR_tutorial__title_skip => Some(Self::tutorial__title_skip), + Qstr::MP_QSTR_tutorial__title_tutorial_complete => Some(Self::tutorial__title_tutorial_complete), + Qstr::MP_QSTR_tutorial__use_trezor => Some(Self::tutorial__use_trezor), + Qstr::MP_QSTR_tutorial__welcome_press_right => Some(Self::tutorial__welcome_press_right), + Qstr::MP_QSTR_u2f__get => Some(Self::u2f__get), + Qstr::MP_QSTR_u2f__set_template => Some(Self::u2f__set_template), + Qstr::MP_QSTR_u2f__title_get => Some(Self::u2f__title_get), + Qstr::MP_QSTR_u2f__title_set => Some(Self::u2f__title_set), + Qstr::MP_QSTR_wipe__info => Some(Self::wipe__info), + Qstr::MP_QSTR_wipe__title => Some(Self::wipe__title), + Qstr::MP_QSTR_wipe__want_to_wipe => Some(Self::wipe__want_to_wipe), + Qstr::MP_QSTR_wipe_code__change => Some(Self::wipe_code__change), + Qstr::MP_QSTR_wipe_code__changed => Some(Self::wipe_code__changed), + Qstr::MP_QSTR_wipe_code__diff_from_pin => Some(Self::wipe_code__diff_from_pin), + Qstr::MP_QSTR_wipe_code__disabled => Some(Self::wipe_code__disabled), + Qstr::MP_QSTR_wipe_code__enabled => Some(Self::wipe_code__enabled), + Qstr::MP_QSTR_wipe_code__enter_new => Some(Self::wipe_code__enter_new), + Qstr::MP_QSTR_wipe_code__info => Some(Self::wipe_code__info), + Qstr::MP_QSTR_wipe_code__invalid => Some(Self::wipe_code__invalid), + Qstr::MP_QSTR_wipe_code__mismatch => Some(Self::wipe_code__mismatch), + Qstr::MP_QSTR_wipe_code__reenter => Some(Self::wipe_code__reenter), + Qstr::MP_QSTR_wipe_code__reenter_to_confirm => Some(Self::wipe_code__reenter_to_confirm), + Qstr::MP_QSTR_wipe_code__title_check => Some(Self::wipe_code__title_check), + Qstr::MP_QSTR_wipe_code__title_invalid => Some(Self::wipe_code__title_invalid), + Qstr::MP_QSTR_wipe_code__title_settings => Some(Self::wipe_code__title_settings), + Qstr::MP_QSTR_wipe_code__turn_off => Some(Self::wipe_code__turn_off), + Qstr::MP_QSTR_wipe_code__turn_on => Some(Self::wipe_code__turn_on), + Qstr::MP_QSTR_wipe_code__wipe_code_mismatch => Some(Self::wipe_code__wipe_code_mismatch), + Qstr::MP_QSTR_word_count__title => Some(Self::word_count__title), + Qstr::MP_QSTR_words__account => Some(Self::words__account), + Qstr::MP_QSTR_words__account_colon => Some(Self::words__account_colon), + Qstr::MP_QSTR_words__address => Some(Self::words__address), + Qstr::MP_QSTR_words__amount => Some(Self::words__amount), + Qstr::MP_QSTR_words__are_you_sure => Some(Self::words__are_you_sure), + Qstr::MP_QSTR_words__array_of => Some(Self::words__array_of), + Qstr::MP_QSTR_words__blockhash => Some(Self::words__blockhash), + Qstr::MP_QSTR_words__buying => Some(Self::words__buying), + Qstr::MP_QSTR_words__confirm => Some(Self::words__confirm), + Qstr::MP_QSTR_words__confirm_fee => Some(Self::words__confirm_fee), + Qstr::MP_QSTR_words__contains => Some(Self::words__contains), + Qstr::MP_QSTR_words__continue_anyway => Some(Self::words__continue_anyway), + Qstr::MP_QSTR_words__continue_with => Some(Self::words__continue_with), + Qstr::MP_QSTR_words__error => Some(Self::words__error), + Qstr::MP_QSTR_words__fee => Some(Self::words__fee), + Qstr::MP_QSTR_words__from => Some(Self::words__from), + Qstr::MP_QSTR_words__keep_it_safe => Some(Self::words__keep_it_safe), + Qstr::MP_QSTR_words__know_what_your_doing => Some(Self::words__know_what_your_doing), + Qstr::MP_QSTR_words__my_trezor => Some(Self::words__my_trezor), + Qstr::MP_QSTR_words__no => Some(Self::words__no), + Qstr::MP_QSTR_words__outputs => Some(Self::words__outputs), + Qstr::MP_QSTR_words__please_check_again => Some(Self::words__please_check_again), + Qstr::MP_QSTR_words__please_try_again => Some(Self::words__please_try_again), + Qstr::MP_QSTR_words__really_wanna => Some(Self::words__really_wanna), + Qstr::MP_QSTR_words__recipient => Some(Self::words__recipient), + Qstr::MP_QSTR_words__sign => Some(Self::words__sign), + Qstr::MP_QSTR_words__signer => Some(Self::words__signer), + Qstr::MP_QSTR_words__title_check => Some(Self::words__title_check), + Qstr::MP_QSTR_words__title_group => Some(Self::words__title_group), + Qstr::MP_QSTR_words__title_information => Some(Self::words__title_information), + Qstr::MP_QSTR_words__title_remember => Some(Self::words__title_remember), + Qstr::MP_QSTR_words__title_share => Some(Self::words__title_share), + Qstr::MP_QSTR_words__title_shares => Some(Self::words__title_shares), + Qstr::MP_QSTR_words__title_success => Some(Self::words__title_success), + Qstr::MP_QSTR_words__title_summary => Some(Self::words__title_summary), + Qstr::MP_QSTR_words__title_threshold => Some(Self::words__title_threshold), + Qstr::MP_QSTR_words__unknown => Some(Self::words__unknown), + Qstr::MP_QSTR_words__warning => Some(Self::words__warning), + Qstr::MP_QSTR_words__writable => Some(Self::words__writable), + Qstr::MP_QSTR_words__yes => Some(Self::words__yes), + Qstr::MP_QSTR_reboot_to_bootloader__just_a_moment => Some(Self::reboot_to_bootloader__just_a_moment), + _ => None, + } + } +} diff --git a/core/embed/rust/src/translations/generated/translated_string.rs.mako b/core/embed/rust/src/translations/generated/translated_string.rs.mako new file mode 100644 index 000000000..f59980e02 --- /dev/null +++ b/core/embed/rust/src/translations/generated/translated_string.rs.mako @@ -0,0 +1,50 @@ +//! generated from ${THIS_FILE.name} +//! (by running `make templates` in `core`) +//! do not edit manually! + +#![cfg_attr(rustfmt, rustfmt_skip)] +<% +import json + +TR_DIR = ROOT / "core" / "translations" + +order_file = TR_DIR / "order.json" +order_index_name = json.loads(order_file.read_text()) +order = {int(k): v for k, v in order_index_name.items()} + + +en_file = TR_DIR / "en.json" +en_data = json.loads(en_file.read_text())["translations"] + +%>\ +#[cfg(feature = "micropython")] +use crate::micropython::qstr::Qstr; + +#[derive(Debug, Copy, Clone, FromPrimitive)] +#[repr(u16)] +#[allow(non_camel_case_types)] +pub enum TranslatedString { +% for idx, name in order.items(): + ${name} = ${idx}, +% endfor +} + +impl TranslatedString { + pub fn untranslated(self) -> &'static str { + match self { +% for name in order.values(): + Self::${name} => ${json.dumps(en_data.get(name, '""'))}, +% endfor + } + } + + #[cfg(feature = "micropython")] + pub fn from_qstr(qstr: Qstr) -> Option { + match qstr { +% for name in order.values(): + Qstr::MP_QSTR_${name} => Some(Self::${name}), +% endfor + _ => None, + } + } +} diff --git a/core/embed/rust/src/translations/mod.rs b/core/embed/rust/src/translations/mod.rs new file mode 100644 index 000000000..788ee4473 --- /dev/null +++ b/core/embed/rust/src/translations/mod.rs @@ -0,0 +1,33 @@ +mod blob; +mod flash; +mod generated; +#[cfg(feature = "micropython")] +mod obj; +mod public_keys; +mod translated_string; + +pub use blob::MAX_HEADER_LEN; +pub use translated_string::TranslatedString as TR; +pub const DEFAULT_LANGUAGE: &str = "en-US"; + +/// # Safety +/// +/// Returned pointer will only point to valid font data for as long as +/// the flash content is not invalidated by `erase()` or `write()`. +#[no_mangle] +pub unsafe extern "C" fn get_utf8_glyph(codepoint: cty::uint16_t, font: cty::c_int) -> *const u8 { + // C will send a negative number + let font_abs = font.unsigned_abs() as u16; + + // SAFETY: Reference is discarded at the end of the function. + // We do return a _pointer_ to the same memory location, but the pointer is + // always valid. + let Some(tr) = (unsafe { flash::get() }) else { + return core::ptr::null(); + }; + if let Some(glyph) = tr.font(font_abs).and_then(|t| t.get(codepoint)) { + glyph.as_ptr() + } else { + core::ptr::null() + } +} diff --git a/core/embed/rust/src/translations/obj.rs b/core/embed/rust/src/translations/obj.rs new file mode 100644 index 000000000..80e26a24c --- /dev/null +++ b/core/embed/rust/src/translations/obj.rs @@ -0,0 +1,241 @@ +use crate::{ + error::Error, + io::InputStream, + micropython::{ + buffer::{get_buffer, StrBuffer}, + ffi, + map::Map, + module::Module, + obj::Obj, + qstr::Qstr, + simple_type::SimpleTypeObj, + typ::Type, + util, + }, + trezorhal::translations, +}; + +use super::translated_string::TranslatedString; + +impl TryFrom for StrBuffer { + type Error = Error; + + fn try_from(value: TranslatedString) -> Result { + // SAFETY: The translated string is copied into a new memory. Reference to flash + // data is discarded at the end of this function. + let translated = value.translate(unsafe { super::flash::get() }); + StrBuffer::alloc(translated) + // TODO fall back to English (which is static and can be converted + // infallibly) if the allocation fails? + } +} + +fn translate(translation: TranslatedString) -> Result { + // SAFETY: TryFrom<&str> for Obj allocates a copy of the passed in string. + // The reference to flash data is discarded at the end of this function. + let stored_translations = unsafe { super::flash::get() }; + translation.translate(stored_translations).try_into() +} + +// SAFETY: Caller is supposed to be MicroPython, or copy MicroPython contracts +// about the meaning of arguments. +unsafe extern "C" fn tr_attr_fn(_self_in: Obj, attr: ffi::qstr, dest: *mut Obj) { + let block = || { + let arg = unsafe { dest.read() }; + if !arg.is_null() { + // Null destination would mean a `setattr`. + return Err(Error::TypeError); + } + let attr = Qstr::from_u16(attr as u16); + let result = if let Some(translation) = TranslatedString::from_qstr(attr) { + translate(translation)? + } else { + return Err(Error::AttributeError(attr)); + }; + unsafe { dest.write(result) }; + Ok(()) + }; + unsafe { util::try_or_raise(block) } +} + +static TR_TYPE: Type = obj_type! { + name: Qstr::MP_QSTR_TR, + attr_fn: tr_attr_fn, +}; + +static TR_OBJ: SimpleTypeObj = SimpleTypeObj::new(&TR_TYPE); + +fn make_translations_header(header: &super::blob::TranslationsHeader<'_>) -> Result { + let version_objs: [Obj; 4] = { + let v = header.version; + [v[0].into(), v[1].into(), v[2].into(), v[3].into()] + }; + attr_tuple! { + Qstr::MP_QSTR_language => header.language.try_into()?, + Qstr::MP_QSTR_version => util::new_tuple(&version_objs)?, + Qstr::MP_QSTR_data_len => header.data_len.try_into()?, + Qstr::MP_QSTR_data_hash => header.data_hash.as_ref().try_into()?, + Qstr::MP_QSTR_total_len => header.total_len.try_into()?, + } +} + +pub unsafe extern "C" fn translations_header_new( + _self_in: Obj, + n_args: usize, + n_kw: usize, + args: *const Obj, +) -> Obj { + let block = |args: &[Obj], kwargs: &Map| { + if args.len() != 1 || !kwargs.is_empty() { + return Err(Error::TypeError); + } + // SAFETY: reference is discarded at the end of this function. + let buffer = unsafe { get_buffer(args[0])? }; + let (header, _) = + super::blob::TranslationsHeader::parse_from(&mut InputStream::new(buffer))?; + make_translations_header(&header) + }; + unsafe { util::try_with_args_and_kwargs_inline(n_args, n_kw, args, block) } +} + +pub extern "C" fn translations_header_from_flash(_cls_in: Obj) -> Obj { + let block = || { + // SAFETY: reference is discarded at the end of this function. + match unsafe { super::flash::get() } { + Some(translations) => make_translations_header(&translations.header), + None => Ok(Obj::const_none()), + } + }; + unsafe { util::try_or_raise(block) } +} + +static TRANSLATIONS_HEADER_TYPE: Type = obj_type! { + name: Qstr::MP_QSTR_TranslationsHeader, + locals: &obj_dict!(obj_map! { + Qstr::MP_QSTR_load_from_flash => obj_fn_1!(translations_header_from_flash).as_obj(), + }), + call_fn: translations_header_new, +}; + +static TRANSLATIONS_HEADER_OBJ: SimpleTypeObj = SimpleTypeObj::new(&TRANSLATIONS_HEADER_TYPE); + +extern "C" fn area_bytesize() -> Obj { + let bytesize = translations::area_bytesize(); + unsafe { util::try_or_raise(|| bytesize.try_into()) } +} + +extern "C" fn get_language() -> Obj { + let block = || { + // SAFETY: reference is discarded at the end of the block + let lang_name = unsafe { super::flash::get() }.map(|t| t.header.language); + lang_name.unwrap_or(super::DEFAULT_LANGUAGE).try_into() + }; + unsafe { util::try_or_raise(block) } +} + +extern "C" fn init() -> Obj { + let block = || { + super::flash::init(); + Ok(Obj::const_none()) + }; + unsafe { util::try_or_raise(block) } +} + +extern "C" fn deinit() -> Obj { + // SAFETY: Safe by itself. Any unsafety stems from some other piece of code + // not upholding the safety parameters. + unsafe { super::flash::deinit() }; + Obj::const_none() +} + +extern "C" fn erase() -> Obj { + let block = || { + super::flash::erase()?; + Ok(Obj::const_none()) + }; + unsafe { util::try_or_raise(block) } +} + +extern "C" fn write(data: Obj, offset: Obj) -> Obj { + let block = || { + // SAFETY: reference is discarded at the end of the block + let data = unsafe { get_buffer(data)? }; + let offset: usize = offset.try_into()?; + super::flash::write(data, offset)?; + Ok(Obj::const_none()) + }; + unsafe { util::try_or_raise(block) } +} + +extern "C" fn verify(data: Obj) -> Obj { + let block = || { + // SAFETY: reference is discarded at the end of the block + let data = unsafe { get_buffer(data)? }; + super::blob::Translations::new(data)?; + Ok(Obj::const_none()) + }; + + unsafe { util::try_or_raise(block) } +} + +#[no_mangle] +#[rustfmt::skip] +pub static mp_module_trezortranslate: Module = obj_module! { + /// from trezortranslate_keys import TR as TR # noqa: F401 + /// """Translation object with attributes.""" + Qstr::MP_QSTR_TR => TR_OBJ.as_obj(), + + /// def area_bytesize() -> int: + /// """Maximum size of the translation blob that can be stored.""" + Qstr::MP_QSTR_area_bytesize => obj_fn_0!(area_bytesize).as_obj(), + + /// def get_language() -> str: + /// """Get the current language.""" + Qstr::MP_QSTR_get_language => obj_fn_0!(get_language).as_obj(), + + /// def init() -> None: + /// """Initialize the translations system. + /// + /// Loads and verifies translation data from flash. If the verification passes, + /// Trezor UI is translated from that point forward. + /// """ + Qstr::MP_QSTR_init => obj_fn_0!(init).as_obj(), + + /// def deinit() -> None: + /// """Deinitialize the translations system. + /// + /// Translations must be deinitialized before erasing or writing to flash. + /// """ + Qstr::MP_QSTR_deinit => obj_fn_0!(deinit).as_obj(), + + /// def erase() -> None: + /// """Erase the translations blob from flash.""" + Qstr::MP_QSTR_erase => obj_fn_0!(erase).as_obj(), + + /// def write(data: bytes, offset: int) -> None: + /// """Write data to the translations blob in flash.""" + Qstr::MP_QSTR_write => obj_fn_2!(write).as_obj(), + + /// def verify(data: bytes) -> None: + /// """Verify the translations blob.""" + Qstr::MP_QSTR_verify => obj_fn_1!(verify).as_obj(), + + /// class TranslationsHeader: + /// """Metadata about the translations blob.""" + /// + /// language: str + /// version: tuple[int, int, int, int] + /// data_len: int + /// data_hash: bytes + /// total_len: int + /// + /// def __init__(self, header_bytes: bytes) -> None: + /// """Parse header from bytes. + /// The header has variable length. + /// """ + /// + /// @staticmethod + /// def load_from_flash() -> TranslationsHeader | None: + /// """Load translations from flash.""" + Qstr::MP_QSTR_TranslationsHeader => TRANSLATIONS_HEADER_OBJ.as_obj(), +}; diff --git a/core/embed/rust/src/translations/public_keys.rs b/core/embed/rust/src/translations/public_keys.rs new file mode 100644 index 000000000..130fd5a05 --- /dev/null +++ b/core/embed/rust/src/translations/public_keys.rs @@ -0,0 +1,15 @@ +use crate::crypto::ed25519; + +#[cfg(feature = "debug")] +pub const PUBLIC_KEYS_DEVEL: [ed25519::PublicKey; 3] = [ + *b"\x68\x46\x0e\xbe\xf3\xb1\x38\x16\x4e\xc7\xfd\x86\x10\xe9\x58\x00\xdf\x75\x98\xf7\x0f\x2f\x2e\xa7\xdb\x51\x72\xac\x74\xeb\xc1\x44", + *b"\x8d\x4a\xbe\x07\x4f\xef\x92\x29\xd3\xb4\x41\xdf\xea\x4f\x98\xf8\x05\xb1\xa2\xb3\xa0\x6a\xe6\x45\x81\x0e\xfe\xce\x77\xfd\x50\x44", + *b"\x97\xf7\x13\x5a\x9a\x26\x90\xe7\x3b\xeb\x26\x55\x6f\x1c\xb1\x63\xbe\xa2\x53\x2a\xff\xa1\xe7\x78\x24\x30\xbe\x98\xc0\xe5\x68\x12", +]; + +pub const PUBLIC_KEYS: [ed25519::PublicKey; 3] = [ + // TODO replace with production keys + *b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", + *b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", + *b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", +]; diff --git a/core/embed/rust/src/translations/translated_string.rs b/core/embed/rust/src/translations/translated_string.rs new file mode 100644 index 000000000..3127868b1 --- /dev/null +++ b/core/embed/rust/src/translations/translated_string.rs @@ -0,0 +1,41 @@ +use crate::strutil::TString; + +use super::blob::Translations; +pub use super::generated::translated_string::TranslatedString; + +impl TranslatedString { + pub(super) fn translate<'a>(self, source: Option<&'a Translations>) -> &'a str { + source + .and_then(|s| s.translation(self as _)) + .unwrap_or(self.untranslated()) + } + + pub fn map_translated(self, fun: F) -> T + where + F: for<'a> FnOnce(&'a str) -> T, + T: 'static, + { + // SAFETY: The bound on F _somehow_ ensures that the reference cannot escape + // the closure. (I don't understand how, but it does), see soundness test below. + // For good measure, we limit the return value to 'static. + let translations = unsafe { super::flash::get() }; + fun(self.translate(translations)) + } + + pub const fn as_tstring(self) -> TString<'static> { + TString::Translation(self) + } +} + +// #[cfg(test)] +// mod tests { +// use super::TranslatedString; + +// #[test] +// fn test_soundness() { +// let tr = TranslatedString::address__public_key; +// let mut opt: Option<&str> = None; +// tr.map_translated(|s| opt = Some(s)); +// assert!(matches!(opt, Some("Address / Public key"))); +// } +// } diff --git a/core/embed/rust/src/trezorhal/display.rs b/core/embed/rust/src/trezorhal/display.rs index 95a76ad2f..8fb2e70ab 100644 --- a/core/embed/rust/src/trezorhal/display.rs +++ b/core/embed/rust/src/trezorhal/display.rs @@ -63,7 +63,7 @@ pub fn char_width(ch: char, font: i32) -> i16 { text_width(encoding, font) } -pub fn get_char_glyph(ch: u8, font: i32) -> *const u8 { +pub fn get_char_glyph(ch: u16, font: i32) -> *const u8 { unsafe { ffi::font_get_glyph(font, ch) } } diff --git a/core/embed/rust/src/trezorhal/mod.rs b/core/embed/rust/src/trezorhal/mod.rs index 86fe0a76b..1aea7bb35 100644 --- a/core/embed/rust/src/trezorhal/mod.rs +++ b/core/embed/rust/src/trezorhal/mod.rs @@ -14,6 +14,8 @@ pub mod random; pub mod rgb_led; pub mod slip39; pub mod storage; +#[cfg(feature = "translations")] +pub mod translations; pub mod usb; pub mod uzlib; pub mod wordlist; diff --git a/core/embed/rust/src/trezorhal/translations.rs b/core/embed/rust/src/trezorhal/translations.rs new file mode 100644 index 000000000..7761087dd --- /dev/null +++ b/core/embed/rust/src/trezorhal/translations.rs @@ -0,0 +1,31 @@ +use super::ffi; + +// SAFETY: Returned slice is valid and immutable until a call to `erase()` +// and/or `set_blob()`. Caller is responsible for disposing of all references to +// the slice before touching the flash contents. +pub unsafe fn get_blob<'a>() -> &'a [u8] { + let mut len: u32 = 0; + let ptr = unsafe { ffi::translations_read(&mut len, 0) }; + if ptr.is_null() { + fatal_error!("Translations read failed", ""); + } + // SAFETY: The pointer is always valid. + unsafe { core::slice::from_raw_parts(ptr, len as usize) } +} + +// SAFETY: This call invalidates the reference to the blob returned by +// `get_blob()`. +pub unsafe fn erase() { + unsafe { ffi::translations_erase() }; +} + +pub fn area_bytesize() -> usize { + // SAFETY: Safe, no side effects. + unsafe { ffi::translations_area_bytesize() as usize } +} + +// SAFETY: This call may invalidate the reference to the blob returned by +// `get_blob()`. +pub unsafe fn write(data: &[u8], offset: usize) -> bool { + unsafe { ffi::translations_write(data.as_ptr(), offset as u32, data.len() as u32) } +} diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index 55c8af56b..3c7b839db 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -133,6 +133,6 @@ where { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Label"); - t.string("text", self.text.as_ref()); + t.string("text", self.text.as_ref().into()); } } diff --git a/core/embed/rust/src/ui/component/marquee.rs b/core/embed/rust/src/ui/component/marquee.rs index c9bb1df42..fe38a8f22 100644 --- a/core/embed/rust/src/ui/component/marquee.rs +++ b/core/embed/rust/src/ui/component/marquee.rs @@ -234,6 +234,6 @@ where { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Marquee"); - t.string("text", self.text.as_ref()); + t.string("text", self.text.as_ref().into()); } } diff --git a/core/embed/rust/src/ui/component/qr_code.rs b/core/embed/rust/src/ui/component/qr_code.rs index a688ccff1..e99236e3a 100644 --- a/core/embed/rust/src/ui/component/qr_code.rs +++ b/core/embed/rust/src/ui/component/qr_code.rs @@ -151,6 +151,6 @@ impl Component for Qr { impl crate::trace::Trace for Qr { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Qr"); - t.string("text", self.text.as_ref()); + t.string("text", self.text.as_str().into()); } } diff --git a/core/embed/rust/src/ui/component/text/common.rs b/core/embed/rust/src/ui/component/text/common.rs index 9c2212dca..82d66e16c 100644 --- a/core/embed/rust/src/ui/component/text/common.rs +++ b/core/embed/rust/src/ui/component/text/common.rs @@ -110,6 +110,6 @@ impl TextBox { impl crate::trace::Trace for TextBox { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("TextBox"); - t.string("text", &self.text); + t.string("text", self.text.as_str().into()); } } diff --git a/core/embed/rust/src/ui/component/text/layout.rs b/core/embed/rust/src/ui/component/text/layout.rs index 25c9cccad..5c86089df 100644 --- a/core/embed/rust/src/ui/component/text/layout.rs +++ b/core/embed/rust/src/ui/component/text/layout.rs @@ -541,23 +541,23 @@ pub mod trace { impl LayoutSink for TraceSink<'_> { fn text(&mut self, _cursor: Point, _layout: &TextLayout, text: &str) { - self.0.string(text); + self.0.string(&text.into()); } fn hyphen(&mut self, _cursor: Point, _layout: &TextLayout) { - self.0.string("-"); + self.0.string(&"-".into()); } fn ellipsis(&mut self, _cursor: Point, _layout: &TextLayout) { - self.0.string(ELLIPSIS); + self.0.string(&ELLIPSIS.into()); } fn prev_page_ellipsis(&mut self, _cursor: Point, _layout: &TextLayout) { - self.0.string(ELLIPSIS); + self.0.string(&ELLIPSIS.into()); } fn line_break(&mut self, _cursor: Point) { - self.0.string("\n"); + self.0.string(&"\n".into()); } } } diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index 9e234488f..919341e0a 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -225,7 +225,7 @@ pub mod trace { impl crate::trace::Trace for Paragraphs { fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.string("component", "Paragraphs"); + t.string("component", "Paragraphs".into()); t.in_list("paragraphs", &|par_list| { Self::foreach_visible( &self.source, diff --git a/core/embed/rust/src/ui/component/text/util.rs b/core/embed/rust/src/ui/component/text/util.rs index 83fda4126..b417539ca 100644 --- a/core/embed/rust/src/ui/component/text/util.rs +++ b/core/embed/rust/src/ui/component/text/util.rs @@ -1,6 +1,9 @@ -use crate::ui::{ - display::{Color, Font}, - geometry::{Alignment, Rect}, +use crate::{ + strutil::TString, + ui::{ + display::{Color, Font}, + geometry::{Alignment, Rect}, + }, }; use super::{ @@ -17,7 +20,7 @@ use super::{ /// If it does not fit, returns `None`. pub fn text_multiline( area: Rect, - text: &str, + text: TString<'_>, font: Font, fg_color: Color, bg_color: Color, @@ -27,7 +30,7 @@ pub fn text_multiline( let text_layout = TextLayout::new(text_style) .with_bounds(area) .with_align(alignment); - let layout_fit = text_layout.render_text(text); + let layout_fit = text.map(|t| text_layout.render_text(t)); match layout_fit { LayoutFit::Fitting { height, .. } => Some(area.split_top(height).1), LayoutFit::OutOfBounds { .. } => None, @@ -38,7 +41,7 @@ pub fn text_multiline( /// area. pub fn text_multiline_bottom( area: Rect, - text: &str, + text: TString<'_>, font: Font, fg_color: Color, bg_color: Color, @@ -50,16 +53,16 @@ pub fn text_multiline_bottom( .with_align(alignment); // When text fits the area, displaying it in the bottom part. // When not, render it "normally". - match text_layout.fit_text(text) { + text.map(|t| match text_layout.fit_text(t) { LayoutFit::Fitting { height, .. } => { let (top, bottom) = area.split_bottom(height); text_layout = text_layout.with_bounds(bottom); - text_layout.render_text(text); + text_layout.render_text(t); Some(top) } LayoutFit::OutOfBounds { .. } => { - text_layout.render_text(text); + text_layout.render_text(t); None } - } + }) } diff --git a/core/embed/rust/src/ui/display/font.rs b/core/embed/rust/src/ui/display/font.rs index 52866a008..e6ad0f362 100644 --- a/core/embed/rust/src/ui/display/font.rs +++ b/core/embed/rust/src/ui/display/font.rs @@ -144,6 +144,16 @@ impl Font { display::text_width(text, self.into()) } + /// Supports UTF8 characters + fn get_first_glyph_from_text(self, text: &str) -> Option { + text.chars().next().map(|c| self.get_glyph(c)) + } + + /// Supports UTF8 characters + fn get_last_glyph_from_text(self, text: &str) -> Option { + text.chars().next_back().map(|c| self.get_glyph(c)) + } + /// Width of the text that is visible. /// Not including the spaces before the first and after the last character. pub fn visible_text_width(self, text: &str) -> i16 { @@ -152,14 +162,20 @@ impl Font { return 0; } - let first_char = unwrap!(text.chars().next()); - let first_char_glyph = unwrap!(self.get_glyph(first_char as u8)); + let first_char_bearing = if let Some(glyph) = self.get_first_glyph_from_text(text) { + glyph.bearing_x + } else { + 0 + }; - let last_char = unwrap!(text.chars().last()); - let last_char_glyph = unwrap!(self.get_glyph(last_char as u8)); + let last_char_bearing = if let Some(glyph) = self.get_last_glyph_from_text(text) { + glyph.right_side_bearing() + } else { + 0 + }; // Strip leftmost and rightmost spaces/bearings/margins. - self.text_width(text) - first_char_glyph.bearing_x - last_char_glyph.right_side_bearing() + self.text_width(text) - first_char_bearing - last_char_bearing } /// Returning the x-bearing (offset) of the first character. @@ -169,9 +185,11 @@ impl Font { return 0; } - let first_char = unwrap!(text.chars().next()); - let first_char_glyph = unwrap!(self.get_glyph(first_char as u8)); - first_char_glyph.bearing_x + if let Some(glyph) = self.get_first_glyph_from_text(text) { + glyph.bearing_x + } else { + 0 + } } pub fn char_width(self, ch: char) -> i16 { @@ -198,25 +216,21 @@ impl Font { constant::LINE_SPACE + self.text_height() } - pub fn get_glyph(self, char_byte: u8) -> Option { - let gl_data = display::get_char_glyph(char_byte, self.into()); + pub fn get_glyph(self, ch: char) -> Glyph { + let gl_data = display::get_char_glyph(ch as u16, self.into()); - if gl_data.is_null() { - return None; - } + ensure!(!gl_data.is_null(), "Failed to load glyph"); // SAFETY: Glyph::load is valid for data returned by get_char_glyph - unsafe { Some(Glyph::load(gl_data)) } + unsafe { Glyph::load(gl_data) } } pub fn display_text(self, text: &str, baseline: Point, fg_color: Color, bg_color: Color) { let colortable = get_color_table(fg_color, bg_color); let mut adv_total = 0; - for c in text.bytes() { - let g = self.get_glyph(c); - if let Some(gly) = g { - let adv = gly.print(baseline + Offset::new(adv_total, 0), colortable); - adv_total += adv; - } + for c in text.chars() { + let gly = self.get_glyph(c); + let adv = gly.print(baseline + Offset::new(adv_total, 0), colortable); + adv_total += adv; } } diff --git a/core/embed/rust/src/ui/display/mod.rs b/core/embed/rust/src/ui/display/mod.rs index 0f3ad5fa1..4ee411e88 100644 --- a/core/embed/rust/src/ui/display/mod.rs +++ b/core/embed/rust/src/ui/display/mod.rs @@ -27,6 +27,7 @@ use crate::ui::geometry::Alignment2D; use crate::{time::Duration, trezorhal::time}; use crate::{ + strutil::TString, trezorhal::{buffers, display, uzlib::UzlibContext}, ui::lerp::Lerp, }; @@ -346,39 +347,39 @@ pub fn clear() { display::clear(); } -#[derive(Copy, Clone, PartialEq, Eq)] -pub struct TextOverlay { +#[derive(Clone)] +pub struct TextOverlay { area: Rect, - text: T, + text: TString<'static>, font: Font, max_height: i16, baseline: i16, } -impl> TextOverlay { - pub fn new(text: T, font: Font) -> Self { +impl TextOverlay { + pub fn new>>(text: T, font: Font) -> Self { let area = Rect::zero(); Self { area, - text, + text: text.into(), font, max_height: font.max_height(), baseline: font.text_baseline(), } } - pub fn set_text(&mut self, text: T) { - self.text = text; + pub fn set_text>>(&mut self, text: T) { + self.text = text.into(); } - pub fn get_text(&self) -> &T { - &self.text + pub fn get_text(&self) -> TString<'static> { + self.text } // baseline relative to the underlying render area pub fn place(&mut self, baseline: Point) { - let text_width = self.font.text_width(self.text.as_ref()); + let text_width = self.text.map(|t| self.font.text_width(t)); let text_height = self.font.text_height(); let text_area_start = baseline + Offset::new(-(text_width / 2), -text_height); @@ -397,30 +398,28 @@ impl> TextOverlay { let p_rel = Point::new(p.x - self.area.x0, p.y - self.area.y0); - for g in self - .text - .as_ref() - .bytes() - .filter_map(|c| self.font.get_glyph(c)) - { - let top = self.max_height - self.baseline - g.bearing_y; - let char_area = Rect::new( - Point::new(tot_adv + g.bearing_x, top), - Point::new(tot_adv + g.bearing_x + g.width, top + g.height), - ); + let color = self.text.map(|t| { + for g in t.chars().map(|c| self.font.get_glyph(c)) { + let top = self.max_height - self.baseline - g.bearing_y; + let char_area = Rect::new( + Point::new(tot_adv + g.bearing_x, top), + Point::new(tot_adv + g.bearing_x + g.width, top + g.height), + ); - tot_adv += g.adv; + tot_adv += g.adv; - if !char_area.contains(p_rel) { - continue; - } + if !char_area.contains(p_rel) { + continue; + } - let p_inner = p_rel - char_area.top_left(); - let overlay_data = g.get_pixel_data(p_inner); - return Color::lerp(underlying, fg, overlay_data as f32 / 15_f32); - } + let p_inner = p_rel - char_area.top_left(); + let overlay_data = g.get_pixel_data(p_inner); + return Some(Color::lerp(underlying, fg, overlay_data as f32 / 15_f32)); + } + None + }); - underlying + color.unwrap_or(underlying) } } @@ -995,9 +994,9 @@ fn rect_rounded2_get_pixel( /// Optionally draws a text inside the rectangle and adjusts its color to match /// the fill. The coordinates of the text are specified in the TextOverlay /// struct. -pub fn bar_with_text_and_fill>( +pub fn bar_with_text_and_fill( area: Rect, - overlay: Option<&TextOverlay>, + overlay: Option<&TextOverlay>, fg_color: Color, bg_color: Color, fill_from: i16, diff --git a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs b/core/embed/rust/src/ui/model_tr/bootloader/intro.rs index e3a5af4a5..4bef3f606 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/intro.rs @@ -32,7 +32,7 @@ impl ReturnToC for IntroMsg { pub struct Intro<'a> { bg: Pad, title: Child>, - buttons: Child>, + buttons: Child, text: Child>, warn: Option>>, } @@ -43,8 +43,8 @@ impl<'a> Intro<'a> { bg: Pad::with_background(BLD_BG).with_clear(), title: Child::new(Label::centered(title, TEXT_NORMAL).vertically_centered()), buttons: Child::new(ButtonController::new(ButtonLayout::text_none_text( - LEFT_BUTTON_TEXT, - RIGHT_BUTTON_TEXT, + LEFT_BUTTON_TEXT.into(), + RIGHT_BUTTON_TEXT.into(), ))), text: Child::new(Label::left_aligned(content, TEXT_NORMAL).vertically_centered()), warn: (!fw_ok).then_some(Child::new( diff --git a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs b/core/embed/rust/src/ui/model_tr/bootloader/menu.rs index 73afbfc29..9b26803d9 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/menu.rs @@ -13,7 +13,7 @@ use crate::{ use super::{ super::{ - component::{Choice, ChoiceFactory, ChoicePage}, + component::{ButtonLayout, Choice, ChoiceFactory, ChoicePage}, theme::bootloader::{BLD_BG, BLD_FG, ICON_EXIT, ICON_REDO, ICON_TRASH}, }, ReturnToC, @@ -51,7 +51,7 @@ impl MenuChoice { } } -impl Choice<&'static str> for MenuChoice { +impl Choice for MenuChoice { fn paint_center(&self, _area: Rect, _inverse: bool) { // Icon on top and two lines of text below self.icon.draw( @@ -70,6 +70,10 @@ impl Choice<&'static str> for MenuChoice { BLD_BG, ); } + + fn btn_layout(&self) -> ButtonLayout { + ButtonLayout::arrow_armed_arrow("SELECT".into()) + } } #[cfg(feature = "ui_debug")] @@ -95,7 +99,7 @@ impl MenuChoiceFactory { } } -impl ChoiceFactory<&'static str> for MenuChoiceFactory { +impl ChoiceFactory for MenuChoiceFactory { type Action = MenuMsg; type Item = MenuChoice; @@ -125,7 +129,7 @@ impl ChoiceFactory<&'static str> for MenuChoiceFactory { pub struct Menu { pad: Pad, - choice_page: Child>, + choice_page: Child>, } impl Menu { diff --git a/core/embed/rust/src/ui/model_tr/component/address_details.rs b/core/embed/rust/src/ui/model_tr/component/address_details.rs index 60e992d56..436c1e7fd 100644 --- a/core/embed/rust/src/ui/model_tr/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tr/component/address_details.rs @@ -2,7 +2,8 @@ use heapless::Vec; use crate::{ error::Error, - strutil::StringType, + micropython::buffer::StrBuffer, + translations::TR, ui::{ component::{ text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, @@ -19,40 +20,40 @@ use super::{ const MAX_XPUBS: usize = 16; const QR_BORDER: i16 = 3; -pub struct AddressDetails -where - T: StringType, -{ +pub struct AddressDetails { qr_code: Qr, - details_view: Paragraphs>, - xpub_view: Frame>, T>, - xpubs: Vec<(T, T), MAX_XPUBS>, + details_view: Paragraphs>, + xpub_view: Frame>, StrBuffer>, + xpubs: Vec<(StrBuffer, StrBuffer), MAX_XPUBS>, current_page: usize, current_subpage: usize, area: Rect, pad: Pad, - buttons: Child>, + buttons: Child, } -impl AddressDetails -where - T: StringType + Clone, -{ +impl AddressDetails { pub fn new( - qr_address: T, + qr_address: StrBuffer, case_sensitive: bool, - account: Option, - path: Option, + account: Option, + path: Option, ) -> Result { let qr_code = Qr::new(qr_address, case_sensitive)?.with_border(QR_BORDER); let details_view = { let mut para = ParagraphVecShort::new(); if let Some(account) = account { - para.add(Paragraph::new(&theme::TEXT_BOLD, "Account:".into())); + para.add(Paragraph::new( + &theme::TEXT_BOLD, + TR::words__account_colon.try_into()?, + )); para.add(Paragraph::new(&theme::TEXT_MONO, account)); } if let Some(path) = path { - para.add(Paragraph::new(&theme::TEXT_BOLD, "Derivation path:".into())); + para.add(Paragraph::new( + &theme::TEXT_BOLD, + TR::address_details__derivation_path.try_into()?, + )); para.add(Paragraph::new(&theme::TEXT_MONO, path)); } Paragraphs::new(para) @@ -76,7 +77,7 @@ where Ok(result) } - pub fn add_xpub(&mut self, title: T, xpub: T) -> Result<(), Error> { + pub fn add_xpub(&mut self, title: StrBuffer, xpub: StrBuffer) -> Result<(), Error> { self.xpubs .push((title, xpub)) .map_err(|_| Error::OutOfRange) @@ -111,7 +112,7 @@ where /// last page. On xpub pages there is SHOW ALL middle button when it /// cannot fit one page. On xpub subpages there are wide arrows to /// scroll. - fn get_button_layout(&mut self) -> ButtonLayout { + fn get_button_layout(&mut self) -> ButtonLayout { let (left, middle, right) = if self.is_in_subpage() { let left = Some(ButtonDetails::up_arrow_icon_wide()); let right = if self.is_last_subpage() { @@ -123,7 +124,7 @@ where } else { let left = Some(ButtonDetails::left_arrow_icon()); let middle = if self.is_xpub_page() && self.subpages_in_current_page() > 1 { - Some(ButtonDetails::armed_text("SHOW ALL".into())) + Some(ButtonDetails::armed_text(TR::buttons__show_all.into())) } else { None }; @@ -151,9 +152,9 @@ where fn fill_xpub_page(&mut self, ctx: &mut EventCtx) { let i = self.current_page - 2; - self.xpub_view.update_title(ctx, self.xpubs[i].0.clone()); + self.xpub_view.update_title(ctx, self.xpubs[i].0); self.xpub_view.update_content(ctx, |p| { - p.inner_mut().update(self.xpubs[i].1.clone()); + p.inner_mut().update(self.xpubs[i].1); p.change_page(0) }); } @@ -175,10 +176,7 @@ where } } -impl Component for AddressDetails -where - T: StringType + Clone, -{ +impl Component for AddressDetails { type Msg = (); fn place(&mut self, bounds: Rect) -> Rect { @@ -265,10 +263,7 @@ where } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for AddressDetails -where - T: StringType + Clone, -{ +impl crate::trace::Trace for AddressDetails { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("AddressDetails"); match self.current_page { diff --git a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs b/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs index 2163078be..34a1d5271 100644 --- a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::StringType, + strutil::TString, ui::{ component::{Child, Component, ComponentExt, Event, EventCtx, Label, Pad}, display::{self, Color, Font}, @@ -20,40 +20,40 @@ pub enum ConfirmMsg { Confirm = 2, } -pub struct Confirm { +pub struct Confirm { bg: Pad, bg_color: Color, - title: &'static str, + title: TString<'static>, message: Child>, - alert: Option>, - info_title: Option, + alert: Option>, + info_title: Option>, info_text: Option>, - button_text: T, - buttons: ButtonController, + button_text: TString<'static>, + buttons: ButtonController, /// Whether we are on the info screen (optional extra screen) showing_info_screen: bool, two_btn_confirm: bool, } -impl Confirm +impl Confirm where - T: StringType + Clone, U: AsRef, { - pub fn new( + pub fn new>>( bg_color: Color, - title: &'static str, + title: T, message: Label, - alert: Option>, + alert: Option>, button_text: T, two_btn_confirm: bool, ) -> Self { + let button_text = button_text.into(); let btn_layout = - Self::get_button_layout_general(false, button_text.clone(), false, two_btn_confirm); + Self::get_button_layout_general(false, button_text, false, two_btn_confirm); Self { bg: Pad::with_background(bg_color).with_clear(), bg_color, - title, + title: title.into(), message: Child::new(message), alert, info_title: None, @@ -66,8 +66,12 @@ where } /// Adding optional info screen - pub fn with_info_screen(mut self, info_title: T, info_text: Label) -> Self { - self.info_title = Some(info_title); + pub fn with_info_screen>>( + mut self, + info_title: T, + info_text: Label, + ) -> Self { + self.info_title = Some(info_title.into()); self.info_text = Some(info_text); self.buttons = ButtonController::new(self.get_button_layout()); self @@ -77,10 +81,10 @@ where self.info_title.is_some() } - fn get_button_layout(&self) -> ButtonLayout { + fn get_button_layout(&self) -> ButtonLayout { Self::get_button_layout_general( self.showing_info_screen, - self.button_text.clone(), + self.button_text, self.has_info_screen(), self.two_btn_confirm, ) @@ -89,10 +93,10 @@ where /// Not relying on self here, to call it in constructor. fn get_button_layout_general( showing_info_screen: bool, - button_text: T, + button_text: TString<'static>, has_info_screen: bool, two_btn_confirm: bool, - ) -> ButtonLayout { + ) -> ButtonLayout { if showing_info_screen { ButtonLayout::arrow_none_none() } else if has_info_screen { @@ -121,9 +125,8 @@ where } } -impl Component for Confirm +impl Component for Confirm where - T: StringType + Clone, U: AsRef, { type Msg = ConfirmMsg; @@ -204,13 +207,17 @@ where fn paint(&mut self) { self.bg.paint(); - let display_top_left = |text: &str| { - display::text_top_left(Point::zero(), text, Font::BOLD, WHITE, self.bg_color); + let display_top_left = |text: TString<'static>| { + text.map(|t| { + display::text_top_left(Point::zero(), t, Font::BOLD, WHITE, self.bg_color) + }); }; // We are either on the info screen or on the "main" screen if self.showing_info_screen { - display_top_left(unwrap!(self.info_title.clone()).as_ref()); + if let Some(title) = self.info_title { + display_top_left(title); + } self.info_text.paint(); } else { display_top_left(self.title); @@ -227,9 +234,8 @@ where } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for Confirm +impl crate::trace::Trace for Confirm where - T: StringType + Clone, U: AsRef, { fn trace(&self, t: &mut dyn crate::trace::Tracer) { diff --git a/core/embed/rust/src/ui/model_tr/component/button.rs b/core/embed/rust/src/ui/model_tr/component/button.rs index 2b26baad3..04d7762db 100644 --- a/core/embed/rust/src/ui/model_tr/component/button.rs +++ b/core/embed/rust/src/ui/model_tr/component/button.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::StringType, + strutil::TString, time::Duration, ui::{ component::{Component, Event, EventCtx, Never}, @@ -30,22 +30,16 @@ impl From for ButtonPos { } } -pub struct Button -where - T: StringType, -{ +pub struct Button { bounds: Rect, pos: ButtonPos, - content: ButtonContent, + content: ButtonContent, styles: ButtonStyleSheet, state: State, } -impl Button -where - T: StringType, -{ - pub fn new(pos: ButtonPos, content: ButtonContent, styles: ButtonStyleSheet) -> Self { +impl Button { + pub fn new(pos: ButtonPos, content: ButtonContent, styles: ButtonStyleSheet) -> Self { Self { pos, content, @@ -55,7 +49,7 @@ where } } - pub fn from_button_details(pos: ButtonPos, btn_details: ButtonDetails) -> Self { + pub fn from_button_details(pos: ButtonPos, btn_details: ButtonDetails) -> Self { // Deciding between text and icon let style = btn_details.style(); match btn_details.content { @@ -64,7 +58,7 @@ where } } - pub fn with_text(pos: ButtonPos, text: T, styles: ButtonStyleSheet) -> Self { + pub fn with_text(pos: ButtonPos, text: TString<'static>, styles: ButtonStyleSheet) -> Self { Self::new(pos, ButtonContent::Text(text), styles) } @@ -72,7 +66,7 @@ where Self::new(pos, ButtonContent::Icon(image), styles) } - pub fn content(&self) -> &ButtonContent { + pub fn content(&self) -> &ButtonContent { &self.content } @@ -89,7 +83,7 @@ where } /// Changing the text content of the button. - pub fn set_text(&mut self, text: T) { + pub fn set_text(&mut self, text: TString<'static>) { self.content = ButtonContent::Text(text); } @@ -127,7 +121,7 @@ where } else { match &self.content { ButtonContent::Text(text) => { - let text_width = style.font.visible_text_width(text.as_ref()); + let text_width = text.map(|t| style.font.visible_text_width(t)); if style.with_outline { text_width + 2 * theme::BUTTON_OUTLINE } else if style.with_arms { @@ -176,7 +170,7 @@ where // Centering the text in case of fixed width. if let ButtonContent::Text(text) = &self.content { if let Some(fixed_width) = style.fixed_width { - let diff = fixed_width - style.font.visible_text_width(text.as_ref()); + let diff = fixed_width - text.map(|t| style.font.visible_text_width(t)); offset_x = diff / 2; } } @@ -185,10 +179,7 @@ where } } -impl Component for Button -where - T: StringType, -{ +impl Component for Button { type Msg = Never; fn place(&mut self, bounds: Rect) -> Rect { @@ -237,16 +228,15 @@ where // Painting the content match &self.content { - ButtonContent::Text(text) => { + ButtonContent::Text(text) => text.map(|t| { display::text_left( - self.get_text_baseline(style) - - Offset::x(style.font.start_x_bearing(text.as_ref())), - text.as_ref(), + self.get_text_baseline(style) - Offset::x(style.font.start_x_bearing(t)), + t, style.font, fg_color, bg_color, ); - } + }), ButtonContent::Icon(icon) => { // Allowing for possible offset of the area from current style let icon_area = area.translate(style.offset); @@ -284,8 +274,8 @@ enum State { } #[derive(Clone)] -pub enum ButtonContent { - Text(T), +pub enum ButtonContent { + Text(TString<'static>), Icon(Icon), } @@ -352,8 +342,8 @@ impl ButtonStyleSheet { /// Describing the button on the screen - only visuals. #[derive(Clone)] -pub struct ButtonDetails { - pub content: ButtonContent, +pub struct ButtonDetails { + pub content: ButtonContent, pub duration: Option, with_outline: bool, with_arms: bool, @@ -362,12 +352,9 @@ pub struct ButtonDetails { pub send_long_press: bool, } -impl ButtonDetails -where - T: StringType, -{ +impl ButtonDetails { /// Text button. - pub fn text(text: T) -> Self { + pub fn text(text: TString<'static>) -> Self { Self { content: ButtonContent::Text(text), duration: None, @@ -393,17 +380,17 @@ where } /// Resolves text and finds possible icon names. - pub fn from_text_possible_icon(text: T) -> Self { - match text.as_ref() { + pub fn from_text_possible_icon(text: TString<'static>) -> Self { + text.map(|t| match t { "" => Self::cancel_icon(), "<" => Self::left_arrow_icon(), "^" => Self::up_arrow_icon(), _ => Self::text(text), - } + }) } /// Text with arms signalling double press. - pub fn armed_text(text: T) -> Self { + pub fn armed_text(text: TString<'static>) -> Self { Self::text(text).with_arms() } @@ -495,20 +482,17 @@ where /// Holding the button details for all three possible buttons. #[derive(Clone)] -pub struct ButtonLayout { - pub btn_left: Option>, - pub btn_middle: Option>, - pub btn_right: Option>, +pub struct ButtonLayout { + pub btn_left: Option, + pub btn_middle: Option, + pub btn_right: Option, } -impl ButtonLayout -where - T: StringType, -{ +impl ButtonLayout { pub fn new( - btn_left: Option>, - btn_middle: Option>, - btn_right: Option>, + btn_left: Option, + btn_middle: Option, + btn_right: Option, ) -> Self { Self { btn_left, @@ -523,13 +507,8 @@ where Self::new(None, None, None) } - /// Default button layout for all three buttons - icons. - pub fn default_three_icons() -> Self { - Self::arrow_armed_arrow("SELECT".into()) - } - - /// Special middle text for default icon layout. - pub fn arrow_armed_arrow(text: T) -> Self { + /// Arrows at sides, armed text in the middle. + pub fn arrow_armed_arrow(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::left_arrow_icon()), Some(ButtonDetails::armed_text(text)), @@ -538,7 +517,7 @@ where } /// Left cancel, armed text and next right arrow. - pub fn cancel_armed_arrow(text: T) -> Self { + pub fn cancel_armed_arrow(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::cancel_icon()), Some(ButtonDetails::armed_text(text)), @@ -547,7 +526,7 @@ where } /// Middle armed text and next right arrow. - pub fn none_armed_arrow(text: T) -> Self { + pub fn none_armed_arrow(text: TString<'static>) -> Self { Self::new( None, Some(ButtonDetails::armed_text(text)), @@ -556,7 +535,7 @@ where } /// Left text, armed text and right info icon/text. - pub fn text_armed_info(left: T, middle: T) -> Self { + pub fn text_armed_info(left: TString<'static>, middle: TString<'static>) -> Self { Self::new( Some(ButtonDetails::from_text_possible_icon(left)), Some(ButtonDetails::armed_text(middle)), @@ -565,7 +544,7 @@ where } /// Left cancel, armed text and right info icon/text. - pub fn cancel_armed_info(middle: T) -> Self { + pub fn cancel_armed_info(middle: TString<'static>) -> Self { Self::new( Some(ButtonDetails::cancel_icon()), Some(ButtonDetails::armed_text(middle)), @@ -574,7 +553,7 @@ where } /// Left cancel, armed text and blank on right. - pub fn cancel_armed_none(middle: T) -> Self { + pub fn cancel_armed_none(middle: TString<'static>) -> Self { Self::new( Some(ButtonDetails::cancel_icon()), Some(ButtonDetails::armed_text(middle)), @@ -583,7 +562,7 @@ where } /// Left back arrow and middle armed text. - pub fn arrow_armed_none(text: T) -> Self { + pub fn arrow_armed_none(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::left_arrow_icon()), Some(ButtonDetails::armed_text(text)), @@ -592,7 +571,7 @@ where } /// Left and right texts. - pub fn text_none_text(left: T, right: T) -> Self { + pub fn text_none_text(left: TString<'static>, right: TString<'static>) -> Self { Self::new( Some(ButtonDetails::from_text_possible_icon(left)), None, @@ -601,7 +580,7 @@ where } /// Left text and right arrow. - pub fn text_none_arrow(text: T) -> Self { + pub fn text_none_arrow(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::from_text_possible_icon(text)), None, @@ -610,7 +589,7 @@ where } /// Left text and WIDE right arrow. - pub fn text_none_arrow_wide(text: T) -> Self { + pub fn text_none_arrow_wide(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::from_text_possible_icon(text)), None, @@ -619,7 +598,7 @@ where } /// Only right text. - pub fn none_none_text(text: T) -> Self { + pub fn none_none_text(text: TString<'static>) -> Self { Self::new( None, None, @@ -637,7 +616,7 @@ where } /// Left arrow and right text. - pub fn arrow_none_text(text: T) -> Self { + pub fn arrow_none_text(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::left_arrow_icon()), None, @@ -646,7 +625,7 @@ where } /// Up arrow left and right text. - pub fn up_arrow_none_text(text: T) -> Self { + pub fn up_arrow_none_text(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::up_arrow_icon()), None, @@ -682,7 +661,7 @@ where } /// Up arrow on left, middle text and info on the right. - pub fn up_arrow_armed_info(text: T) -> Self { + pub fn up_arrow_armed_info(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::up_arrow_icon()), Some(ButtonDetails::armed_text(text)), @@ -700,7 +679,7 @@ where } /// Cancel cross on left and text on the right. - pub fn cancel_none_text(text: T) -> Self { + pub fn cancel_none_text(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::cancel_icon()), None, @@ -709,7 +688,7 @@ where } /// Cancel cross on left and hold-to-confirm text on the right. - pub fn cancel_none_htc(text: T) -> Self { + pub fn cancel_none_htc(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::cancel_icon()), None, @@ -718,7 +697,7 @@ where } /// Arrow back on left and hold-to-confirm text on the right. - pub fn arrow_none_htc(text: T) -> Self { + pub fn arrow_none_htc(text: TString<'static>) -> Self { Self::new( Some(ButtonDetails::left_arrow_icon()), None, @@ -727,12 +706,12 @@ where } /// Only armed text in the middle. - pub fn none_armed_none(text: T) -> Self { + pub fn none_armed_none(text: TString<'static>) -> Self { Self::new(None, Some(ButtonDetails::armed_text(text)), None) } /// HTC on both sides. - pub fn htc_none_htc(left: T, right: T) -> Self { + pub fn htc_none_htc(left: TString<'static>, right: TString<'static>) -> Self { Self::new( Some(ButtonDetails::text(left).with_default_duration()), None, @@ -945,33 +924,30 @@ impl ButtonActions { // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -use crate::strutil::ShortString; - -#[cfg(feature = "ui_debug")] -impl crate::trace::Trace for Button { +impl crate::trace::Trace for Button { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Button"); - match &self.content { - ButtonContent::Text(text) => t.string("text", text.as_ref()), + match self.content { + ButtonContent::Text(text) => t.string("text", text), ButtonContent::Icon(icon) => { t.null("text"); - t.string("icon", icon.name); + t.string("icon", icon.name.into()); } } } } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for ButtonDetails { +impl crate::trace::Trace for ButtonDetails { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("ButtonDetails"); - match &self.content { + match self.content { ButtonContent::Text(text) => { - t.string("text", text.as_ref()); + t.string("text", text); } ButtonContent::Icon(icon) => { t.null("text"); - t.string("icon", icon.name); + t.string("icon", icon.name.into()); } } if let Some(duration) = &self.duration { @@ -979,19 +955,3 @@ impl crate::trace::Trace for ButtonDetails { } } } - -#[cfg(feature = "ui_debug")] -impl ButtonAction { - /// Describing the action as a string. Debug-only. - pub fn string(&self) -> ShortString { - match self { - ButtonAction::NextPage => "Next".into(), - ButtonAction::PrevPage => "Prev".into(), - ButtonAction::FirstPage => "First".into(), - ButtonAction::LastPage => "Last".into(), - ButtonAction::Cancel => "Cancel".into(), - ButtonAction::Confirm => "Confirm".into(), - ButtonAction::Info => "Info".into(), - } - } -} diff --git a/core/embed/rust/src/ui/model_tr/component/button_controller.rs b/core/embed/rust/src/ui/model_tr/component/button_controller.rs index 72bbf7165..76d053faa 100644 --- a/core/embed/rust/src/ui/model_tr/component/button_controller.rs +++ b/core/embed/rust/src/ui/model_tr/component/button_controller.rs @@ -2,7 +2,6 @@ use super::{ theme, Button, ButtonDetails, ButtonLayout, ButtonPos, HoldToConfirm, HoldToConfirmMsg, }; use crate::{ - strutil::StringType, time::{Duration, Instant}, ui::{ component::{base::Event, Component, EventCtx, Pad, TimerToken}, @@ -52,20 +51,14 @@ pub enum ButtonControllerMsg { } /// Defines what kind of button should be currently used. -pub enum ButtonType -where - T: StringType, -{ - Button(Button), - HoldToConfirm(HoldToConfirm), +pub enum ButtonType { + Button(Button), + HoldToConfirm(HoldToConfirm), Nothing, } -impl ButtonType -where - T: StringType, -{ - pub fn from_button_details(pos: ButtonPos, btn_details: Option>) -> Self { +impl ButtonType { + pub fn from_button_details(pos: ButtonPos, btn_details: Option) -> Self { if let Some(btn_details) = btn_details { if btn_details.duration.is_some() { Self::HoldToConfirm(HoldToConfirm::from_button_details(pos, btn_details)) @@ -107,12 +100,9 @@ where /// /// Users have a choice of a normal button or Hold-to-confirm button. /// `button_type` specified what from those two is used, if anything. -pub struct ButtonContainer -where - T: StringType, -{ +pub struct ButtonContainer { pos: ButtonPos, - button_type: ButtonType, + button_type: ButtonType, /// Holds the timestamp of when the button was pressed. pressed_since: Option, /// How long the button should be pressed to send `long_press=true` in @@ -125,13 +115,10 @@ where send_long_press: bool, } -impl ButtonContainer -where - T: StringType, -{ +impl ButtonContainer { /// Supplying `None` as `btn_details` marks the button inactive /// (it can be later activated in `set()`). - pub fn new(pos: ButtonPos, btn_details: Option>) -> Self { + pub fn new(pos: ButtonPos, btn_details: Option) -> Self { const DEFAULT_LONG_PRESS_MS: u32 = 1000; let send_long_press = btn_details .as_ref() @@ -149,7 +136,7 @@ where /// Changing the state of the button. /// /// Passing `None` as `btn_details` will mark the button as inactive. - pub fn set(&mut self, btn_details: Option>, button_area: Rect) { + pub fn set(&mut self, btn_details: Option, button_area: Rect) { self.send_long_press = btn_details .as_ref() .map_or(false, |btn| btn.send_long_press); @@ -258,14 +245,11 @@ where /// /// There is optional complexity with IgnoreButtonDelay, which gets executed /// only in cases where clients request it. -pub struct ButtonController -where - T: StringType, -{ +pub struct ButtonController { pad: Pad, - left_btn: ButtonContainer, - middle_btn: ButtonContainer, - right_btn: ButtonContainer, + left_btn: ButtonContainer, + middle_btn: ButtonContainer, + right_btn: ButtonContainer, state: ButtonState, /// Button area is needed so the buttons /// can be "re-placed" after their text is changed @@ -277,11 +261,8 @@ where handle_middle_button: bool, } -impl ButtonController -where - T: StringType, -{ - pub fn new(btn_layout: ButtonLayout) -> Self { +impl ButtonController { + pub fn new(btn_layout: ButtonLayout) -> Self { let handle_middle_button = btn_layout.btn_middle.is_some(); Self { pad: Pad::with_background(theme::BG).with_clear(), @@ -303,7 +284,7 @@ where } /// Updating all the three buttons to the wanted states. - pub fn set(&mut self, btn_layout: ButtonLayout) { + pub fn set(&mut self, btn_layout: ButtonLayout) { self.handle_middle_button = btn_layout.btn_middle.is_some(); self.pad.clear(); self.left_btn.set(btn_layout.btn_left, self.button_area); @@ -406,10 +387,7 @@ where } } -impl Component for ButtonController -where - T: StringType, -{ +impl Component for ButtonController { type Msg = ButtonControllerMsg; fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { @@ -794,7 +772,7 @@ impl Component for AutomaticMover { // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for ButtonContainer { +impl crate::trace::Trace for ButtonContainer { fn trace(&self, t: &mut dyn crate::trace::Tracer) { if let ButtonType::Button(btn) = &self.button_type { btn.trace(t); @@ -805,7 +783,7 @@ impl crate::trace::Trace for ButtonContainer { } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for ButtonController { +impl crate::trace::Trace for ButtonController { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("ButtonController"); t.child("left_btn", &self.left_btn); diff --git a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs index eb67ee5ed..6afda9991 100644 --- a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs @@ -2,6 +2,7 @@ use core::mem; use crate::{ strutil::StringType, + translations::TR, ui::{ component::{ base::Never, @@ -16,8 +17,6 @@ use crate::{ use super::theme; -const HEADER: &str = "COINJOIN IN PROGRESS"; -const FOOTER: &str = "Do not disconnect your Trezor!"; const FOOTER_TEXT_MARGIN: i16 = 8; const LOADER_OFFSET: i16 = -15; const LOADER_SPEED: u16 = 10; @@ -89,7 +88,7 @@ where if self.indeterminate { text_multiline( self.area, - HEADER, + TR::coinjoin__title_progress.into(), Font::BOLD, theme::FG, theme::BG, @@ -114,7 +113,7 @@ where // BOTTOM let top_rest = text_multiline_bottom( self.area, - FOOTER, + TR::coinjoin__do_not_disconnect.into(), Font::BOLD, theme::FG, theme::BG, @@ -123,7 +122,7 @@ where if let Some(rest) = top_rest { text_multiline_bottom( rest.inset(Insets::bottom(FOOTER_TEXT_MARGIN)), - self.text.as_ref(), + self.text.as_ref().into(), Font::NORMAL, theme::FG, theme::BG, @@ -140,8 +139,8 @@ where { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("CoinJoinProgress"); - t.string("header", HEADER); - t.string("text", self.text.as_ref()); - t.string("footer", FOOTER); + t.string("header", TR::coinjoin__title_progress.into()); + t.string("text", self.text.as_ref().into()); + t.string("footer", TR::coinjoin__do_not_disconnect.into()); } } diff --git a/core/embed/rust/src/ui/model_tr/component/common.rs b/core/embed/rust/src/ui/model_tr/component/common.rs index 69972d64d..78e9083f9 100644 --- a/core/embed/rust/src/ui/model_tr/component/common.rs +++ b/core/embed/rust/src/ui/model_tr/component/common.rs @@ -6,23 +6,23 @@ use crate::ui::{ use super::theme; /// Display white text on black background -pub fn display_left>(baseline: Point, text: &T, font: Font) { +pub fn display_left>(baseline: Point, text: T, font: Font) { display::text_left(baseline, text.as_ref(), font, theme::FG, theme::BG); } /// Display black text on white background -pub fn display_inverse>(baseline: Point, text: &T, font: Font) { +pub fn display_inverse>(baseline: Point, text: T, font: Font) { display::text_left(baseline, text.as_ref(), font, theme::BG, theme::FG); } /// Display white text on black background, /// centered around a baseline Point -pub fn display_center>(baseline: Point, text: &T, font: Font) { +pub fn display_center>(baseline: Point, text: T, font: Font) { display::text_center(baseline, text.as_ref(), font, theme::FG, theme::BG); } /// Display white text on black background, /// with right boundary at a baseline Point -pub fn display_right>(baseline: Point, text: &T, font: Font) { +pub fn display_right>(baseline: Point, text: T, font: Font) { display::text_right(baseline, text.as_ref(), font, theme::FG, theme::BG); } diff --git a/core/embed/rust/src/ui/model_tr/component/flow.rs b/core/embed/rust/src/ui/model_tr/component/flow.rs index 22cb0867b..b161566d7 100644 --- a/core/embed/rust/src/ui/model_tr/component/flow.rs +++ b/core/embed/rust/src/ui/model_tr/component/flow.rs @@ -26,7 +26,7 @@ where content_area: Rect, title_area: Rect, pad: Pad, - buttons: Child>, + buttons: Child, page_counter: usize, return_confirmed_index: bool, show_scrollbar: bool, diff --git a/core/embed/rust/src/ui/model_tr/component/flow_pages.rs b/core/embed/rust/src/ui/model_tr/component/flow_pages.rs index a4cf0b19d..5ac8e7691 100644 --- a/core/embed/rust/src/ui/model_tr/component/flow_pages.rs +++ b/core/embed/rust/src/ui/model_tr/component/flow_pages.rs @@ -79,7 +79,7 @@ where T: StringType + Clone, { formatted: FormattedText, - btn_layout: ButtonLayout, + btn_layout: ButtonLayout, btn_actions: ButtonActions, current_page: usize, page_count: usize, @@ -93,7 +93,7 @@ where T: StringType + Clone, { pub fn new( - btn_layout: ButtonLayout, + btn_layout: ButtonLayout, btn_actions: ButtonActions, formatted: FormattedText, ) -> Self { @@ -137,7 +137,7 @@ where bounds } - pub fn btn_layout(&self) -> ButtonLayout { + pub fn btn_layout(&self) -> ButtonLayout { // When we are in pagination inside this flow, // show the up and down arrows on appropriate sides. let current = self.btn_layout.clone(); @@ -235,7 +235,7 @@ where t.component("Page"); if let Some(title) = &self.title { // Not calling it "title" as that is already traced by FlowPage - t.string("page_title", title.as_ref()); + t.string("page_title", title.as_ref().into()); } t.int("active_page", self.current_page as i64); t.int("page_count", self.page_count as i64); diff --git a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs index d25f07ba8..06f652b76 100644 --- a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::StringType, + strutil::TString, time::{Duration, Instant}, ui::{ component::{Component, Event, EventCtx}, @@ -18,21 +18,21 @@ pub enum HoldToConfirmMsg { FailedToConfirm, } -pub struct HoldToConfirm -where - T: StringType, -{ +pub struct HoldToConfirm { pos: ButtonPos, - loader: Loader, + loader: Loader, text_width: i16, } -impl HoldToConfirm -where - T: StringType, -{ - pub fn text(pos: ButtonPos, text: T, styles: LoaderStyleSheet, duration: Duration) -> Self { - let text_width = styles.normal.font.visible_text_width(text.as_ref()); +impl HoldToConfirm { + pub fn text>>( + pos: ButtonPos, + text: T, + styles: LoaderStyleSheet, + duration: Duration, + ) -> Self { + let text = text.into(); + let text_width = text.map(|t| styles.normal.font.visible_text_width(t)); Self { pos, loader: Loader::text(text, styles).with_growing_duration(duration), @@ -40,7 +40,7 @@ where } } - pub fn from_button_details(pos: ButtonPos, btn_details: ButtonDetails) -> Self { + pub fn from_button_details(pos: ButtonPos, btn_details: ButtonDetails) -> Self { let duration = btn_details .duration .unwrap_or_else(|| Duration::from_millis(DEFAULT_DURATION_MS)); @@ -53,7 +53,8 @@ where } /// Updating the text of the component and re-placing it. - pub fn set_text(&mut self, text: T, button_area: Rect) { + pub fn set_text>>(&mut self, text: T, button_area: Rect) { + let text = text.into(); self.text_width = self.loader.get_text_width(&text); self.loader.set_text(text); self.place(button_area); @@ -71,7 +72,7 @@ where self.loader.get_duration() } - pub fn get_text(&self) -> &T { + pub fn get_text(&self) -> TString<'static> { self.loader.get_text() } @@ -85,10 +86,7 @@ where } } -impl Component for HoldToConfirm -where - T: StringType, -{ +impl Component for HoldToConfirm { type Msg = HoldToConfirmMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -129,10 +127,7 @@ where // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for HoldToConfirm -where - T: StringType, -{ +impl crate::trace::Trace for HoldToConfirm { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("HoldToConfirm"); t.child("loader", &self.loader); diff --git a/core/embed/rust/src/ui/model_tr/component/homescreen.rs b/core/embed/rust/src/ui/model_tr/component/homescreen.rs index 0fc496765..eb60413c7 100644 --- a/core/embed/rust/src/ui/model_tr/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_tr/component/homescreen.rs @@ -1,5 +1,8 @@ use crate::{ + error::Error, + micropython::buffer::StrBuffer, strutil::StringType, + translations::TR, trezorhal::usb::usb_configured, ui::{ component::{Child, Component, Event, EventCtx, Label}, @@ -60,7 +63,7 @@ where label: Label, notification: Option<(T, u8)>, /// Used for HTC functionality to lock device from homescreen - invisible_buttons: Child>, + invisible_buttons: Child, /// Holds the loader component loader: Option>>, /// Whether to show the loader or not @@ -107,10 +110,11 @@ where if !usb_configured() { self.fill_notification_background(); // TODO: fill warning icons here as well? - display_center(baseline, &"NO USB CONNECTION", NOTIFICATION_FONT); + TR::homescreen__title_no_usb_connection + .map_translated(|t| display_center(baseline, t, NOTIFICATION_FONT)); } else if let Some((notification, _level)) = &self.notification { self.fill_notification_background(); - display_center(baseline, ¬ification.as_ref(), NOTIFICATION_FONT); + display_center(baseline, notification.as_ref(), NOTIFICATION_FONT); // Painting warning icons in top corners when the text is short enough not to // collide with them let icon_width = NOTIFICATION_ICON.toif.width(); @@ -239,9 +243,9 @@ where T: StringType, { label: Child>, - instruction: Child>, + instruction: Child>, /// Used for unlocking the device from lockscreen - invisible_buttons: Child>, + invisible_buttons: Child, /// Display coinjoin icon? coinjoin_icon: Option, /// Screensaver mode (keep screen black) @@ -252,22 +256,25 @@ impl Lockscreen where T: StringType + Clone, { - pub fn new(label: T, bootscreen: bool, coinjoin_authorized: bool) -> Self { + pub fn new(label: T, bootscreen: bool, coinjoin_authorized: bool) -> Result { // Buttons will not be visible, we only need all three of them to be present, // so that even middle-click triggers the event. let invisible_btn_layout = ButtonLayout::arrow_armed_arrow("".into()); let instruction_str = if bootscreen { - "Click to Connect" + TR::homescreen__click_to_connect } else { - "Click to Unlock" + TR::homescreen__click_to_unlock }; - Lockscreen { + Ok(Lockscreen { label: Child::new(Label::centered(label, theme::TEXT_BIG)), - instruction: Child::new(Label::centered(instruction_str.into(), theme::TEXT_NORMAL)), + instruction: Child::new(Label::centered( + instruction_str.try_into()?, + theme::TEXT_NORMAL, + )), invisible_buttons: Child::new(ButtonController::new(invisible_btn_layout)), coinjoin_icon: coinjoin_authorized.then_some(theme::ICON_COINJOIN), screensaver: !bootscreen, - } + }) } } @@ -321,7 +328,7 @@ where { title: Child>, buffer_func: F, - buttons: Child>, + buttons: Child, } impl ConfirmHomescreen @@ -329,7 +336,7 @@ where T: StringType + Clone, { pub fn new(title: T, buffer_func: F) -> Self { - let btn_layout = ButtonLayout::cancel_none_text("CHANGE".into()); + let btn_layout = ButtonLayout::cancel_none_text(TR::buttons__change.into()); ConfirmHomescreen { title: Child::new(Label::centered(title, theme::TEXT_BOLD)), buffer_func, diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs index 8acd54003..cd46425e1 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs @@ -1,10 +1,7 @@ -use crate::{ - strutil::StringType, - ui::{ - component::{Child, Component, Event, EventCtx, Pad}, - geometry::{Insets, Offset, Rect}, - util::animation_disabled, - }, +use crate::ui::{ + component::{Child, Component, Event, EventCtx, Pad}, + geometry::{Insets, Offset, Rect}, + util::animation_disabled, }; use super::super::{ @@ -13,7 +10,7 @@ use super::super::{ const DEFAULT_ITEMS_DISTANCE: i16 = 10; -pub trait Choice { +pub trait Choice { // Only `paint_center` is required, the rest is optional // and therefore has a default implementation. fn paint_center(&self, area: Rect, inverse: bool); @@ -26,9 +23,7 @@ pub trait Choice { 0 } - fn btn_layout(&self) -> ButtonLayout { - ButtonLayout::default_three_icons() - } + fn btn_layout(&self) -> ButtonLayout; /// Whether it is possible to do the middle action event without /// releasing the button - after long-press duration is reached. @@ -46,9 +41,9 @@ pub trait Choice { /// but offers a "lazy-loading" way of requesting the /// items only when they are needed, one-by-one. /// This way, no more than one item is stored in memory at any time. -pub trait ChoiceFactory { +pub trait ChoiceFactory { type Action; - type Item: Choice; + type Item: Choice; fn count(&self) -> usize; fn get(&self, index: usize) -> (Self::Item, Self::Action); @@ -67,14 +62,13 @@ pub trait ChoiceFactory { /// /// `is_carousel` can be used to make the choice page "infinite" - /// after reaching one end, users will appear at the other end. -pub struct ChoicePage +pub struct ChoicePage where - F: ChoiceFactory, - T: StringType, + F: ChoiceFactory, { choices: F, pad: Pad, - buttons: Child>, + buttons: Child, page_counter: usize, /// How many pixels are between the items. items_distance: i16, @@ -97,10 +91,9 @@ where animated_steps_to_do: i16, } -impl ChoicePage +impl ChoicePage where - F: ChoiceFactory, - T: StringType + Clone, + F: ChoiceFactory, { pub fn new(choices: F) -> Self { let initial_btn_layout = choices.get(0).0.btn_layout(); @@ -283,12 +276,12 @@ where } /// Getting the choice on the current index - fn get_current_choice(&self) -> (>::Item, A) { + fn get_current_choice(&self) -> (::Item, A) { self.choices.get(self.page_counter) } /// Getting the current item - pub fn get_current_item(&self) -> >::Item { + pub fn get_current_item(&self) -> ::Item { self.get_current_choice().0 } @@ -484,10 +477,9 @@ where } } -impl Component for ChoicePage +impl Component for ChoicePage where - F: ChoiceFactory, - T: StringType + Clone, + F: ChoiceFactory, { type Msg = (A, bool); @@ -599,11 +591,10 @@ where // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for ChoicePage +impl crate::trace::Trace for ChoicePage where - F: ChoiceFactory, - T: StringType + Clone, - >::Item: crate::trace::Trace, + F: ChoiceFactory, + ::Item: crate::trace::Trace, { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("ChoicePage"); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/choice_item.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/choice_item.rs index 451b5390e..ad0fb4c74 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/choice_item.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/choice_item.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::{ShortString, StringType}, + strutil::ShortString, ui::{ display::{self, rect_fill, rect_fill_corners, rect_outline_rounded, Font, Icon}, geometry::{Alignment2D, Offset, Rect}, @@ -14,16 +14,16 @@ const ICON_RIGHT_PADDING: i16 = 2; /// Simple string component used as a choice item. #[derive(Clone)] -pub struct ChoiceItem { +pub struct ChoiceItem { text: ShortString, icon: Option, - btn_layout: ButtonLayout, + btn_layout: ButtonLayout, font: Font, middle_action_without_release: bool, } -impl ChoiceItem { - pub fn new>(text: U, btn_layout: ButtonLayout) -> Self { +impl ChoiceItem { + pub fn new>(text: U, btn_layout: ButtonLayout) -> Self { Self { text: String::from(text.as_ref()), icon: None, @@ -55,17 +55,17 @@ impl ChoiceItem { } /// Setting left button. - pub fn set_left_btn(&mut self, btn_left: Option>) { + pub fn set_left_btn(&mut self, btn_left: Option) { self.btn_layout.btn_left = btn_left; } /// Setting middle button. - pub fn set_middle_btn(&mut self, btn_middle: Option>) { + pub fn set_middle_btn(&mut self, btn_middle: Option) { self.btn_layout.btn_middle = btn_middle; } /// Setting right button. - pub fn set_right_btn(&mut self, btn_right: Option>) { + pub fn set_right_btn(&mut self, btn_right: Option) { self.btn_layout.btn_right = btn_right; } @@ -87,10 +87,7 @@ impl ChoiceItem { } } -impl Choice for ChoiceItem -where - T: StringType + Clone, -{ +impl Choice for ChoiceItem { /// Painting the item as the main choice in the middle. /// Showing both the icon and text, if the icon is available. fn paint_center(&self, area: Rect, inverse: bool) { @@ -125,7 +122,7 @@ where } /// Getting current button layout. - fn btn_layout(&self) -> ButtonLayout { + fn btn_layout(&self) -> ButtonLayout { self.btn_layout.clone() } @@ -196,9 +193,9 @@ fn paint_text_icon( // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for ChoiceItem { +impl crate::trace::Trace for ChoiceItem { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("ChoiceItem"); - t.string("content", self.text.as_ref()); + t.string("content", self.text.as_str().into()); } } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/mod.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/mod.rs index e3c8cc649..dd801000a 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/mod.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/mod.rs @@ -1,8 +1,13 @@ pub mod choice; pub mod choice_item; +#[cfg(feature = "translations")] pub mod number_input; +#[cfg(feature = "translations")] pub mod passphrase; +#[cfg(feature = "translations")] pub mod pin; +#[cfg(feature = "translations")] pub mod simple_choice; +#[cfg(feature = "translations")] pub mod wordlist; diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs index bdc132f0b..151011f5b 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::StringType, + translations::TR, ui::{ component::{Component, Event, EventCtx}, geometry::Rect, @@ -20,9 +20,9 @@ impl ChoiceFactoryNumberInput { } } -impl ChoiceFactory for ChoiceFactoryNumberInput { +impl ChoiceFactory for ChoiceFactoryNumberInput { type Action = u32; - type Item = ChoiceItem; + type Item = ChoiceItem; fn count(&self) -> usize { (self.max - self.min + 1) as usize @@ -31,14 +31,17 @@ impl ChoiceFactory for ChoiceFactoryNumberInput { fn get(&self, choice_index: usize) -> (Self::Item, Self::Action) { let num = self.min + choice_index as u32; let text: String<10> = String::from(num); - let mut choice_item = ChoiceItem::new(text, ButtonLayout::default_three_icons()); + let mut choice_item = ChoiceItem::new( + text, + ButtonLayout::arrow_armed_arrow(TR::buttons__select.into()), + ); // Disabling prev/next buttons for the first/last choice. // (could be done to the same button if there is only one) if choice_index == 0 { choice_item.set_left_btn(None); } - if choice_index == >::count(self) - 1 { + if choice_index == ::count(self) - 1 { choice_item.set_right_btn(None); } @@ -48,15 +51,12 @@ impl ChoiceFactory for ChoiceFactoryNumberInput { /// Simple wrapper around `ChoicePage` that allows for /// inputting a list of values and receiving the chosen one. -pub struct NumberInput { - choice_page: ChoicePage, +pub struct NumberInput { + choice_page: ChoicePage, min: u32, } -impl NumberInput -where - T: StringType + Clone, -{ +impl NumberInput { pub fn new(min: u32, max: u32, init_value: u32) -> Self { let choices = ChoiceFactoryNumberInput::new(min, max); let initial_page = init_value - min; @@ -67,10 +67,7 @@ where } } -impl Component for NumberInput -where - T: StringType + Clone, -{ +impl Component for NumberInput { type Msg = u32; fn place(&mut self, bounds: Rect) -> Rect { @@ -89,10 +86,7 @@ where // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for NumberInput -where - T: StringType + Clone, -{ +impl crate::trace::Trace for NumberInput { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("NumberInput"); t.child("choice_page", &self.choice_page); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs index c92c4f0a2..085ed8dfb 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs @@ -1,5 +1,6 @@ use crate::{ - strutil::StringType, + strutil::TString, + translations::TR, trezorhal::random, ui::{ component::{text::common::TextBox, Child, Component, ComponentExt, Event, EventCtx}, @@ -43,64 +44,72 @@ const DIGITS_INDEX: usize = 5; const SPECIAL_INDEX: usize = 6; const SPACE_INDEX: usize = 7; -/// Menu text, action, icon data, middle button with CONFIRM, without_release -const MENU: [(&str, PassphraseAction, Option, bool, bool); MENU_LENGTH] = [ - ( - "SHOW", - PassphraseAction::Show, - Some(theme::ICON_EYE), - true, - false, - ), - ( - "CANCEL_OR_DELETE", // will be chosen dynamically - PassphraseAction::CancelOrDelete, - None, - true, - true, // without_release - ), - ( - "ENTER", - PassphraseAction::Enter, - Some(theme::ICON_TICK), - true, - false, - ), - ( - "abc", - PassphraseAction::Category(ChoiceCategory::LowercaseLetter), - None, - false, - false, - ), - ( - "ABC", - PassphraseAction::Category(ChoiceCategory::UppercaseLetter), - None, - false, - false, - ), - ( - "123", - PassphraseAction::Category(ChoiceCategory::Digit), - None, - false, - false, - ), - ( - "#$!", - PassphraseAction::Category(ChoiceCategory::SpecialSymbol), - None, - false, - false, - ), - ( - "SPACE", - PassphraseAction::Character(' '), - Some(theme::ICON_SPACE), - false, - false, - ), +#[derive(Clone)] +struct MenuItem { + text: TString<'static>, + action: PassphraseAction, + icon: Option, + show_confirm: bool, + without_release: bool, +} + +const MENU: [MenuItem; MENU_LENGTH] = [ + MenuItem { + text: TR::inputs__show.as_tstring(), + action: PassphraseAction::Show, + icon: Some(theme::ICON_EYE), + show_confirm: true, + without_release: false, + }, + MenuItem { + text: TString::from_str("CANCEL OR DELETE"), + action: PassphraseAction::CancelOrDelete, + icon: None, + show_confirm: true, + without_release: true, + }, + MenuItem { + text: TR::inputs__enter.as_tstring(), + action: PassphraseAction::Enter, + icon: Some(theme::ICON_TICK), + show_confirm: true, + without_release: false, + }, + MenuItem { + text: TString::from_str("abc"), + action: PassphraseAction::Category(ChoiceCategory::LowercaseLetter), + icon: None, + show_confirm: false, + without_release: false, + }, + MenuItem { + text: TString::from_str("ABC"), + action: PassphraseAction::Category(ChoiceCategory::UppercaseLetter), + icon: None, + show_confirm: false, + without_release: false, + }, + MenuItem { + text: TString::from_str("123"), + action: PassphraseAction::Category(ChoiceCategory::Digit), + icon: None, + show_confirm: false, + without_release: false, + }, + MenuItem { + text: TString::from_str("#$!"), + action: PassphraseAction::Category(ChoiceCategory::SpecialSymbol), + icon: None, + show_confirm: false, + without_release: false, + }, + MenuItem { + text: TR::inputs__space.as_tstring(), + action: PassphraseAction::Character(' '), + icon: Some(theme::ICON_SPACE), + show_confirm: false, + without_release: false, + }, ]; #[derive(Clone, Copy)] @@ -172,66 +181,74 @@ impl ChoiceFactoryPassphrase { } /// MENU choices with accept and cancel hold-to-confirm side buttons. - fn get_menu_item( - &self, - choice_index: usize, - ) -> (ChoiceItem, PassphraseAction) { + fn get_menu_item(&self, choice_index: usize) -> (ChoiceItem, PassphraseAction) { + #[allow(const_item_mutation)] + let current_item = &mut MENU[choice_index]; // More options for CANCEL/DELETE button - let (mut text, action, mut icon, show_confirm, without_release) = MENU[choice_index]; - if matches!(action, PassphraseAction::CancelOrDelete) { + if matches!(current_item.action, PassphraseAction::CancelOrDelete) { if self.is_empty { - text = "CANCEL"; - icon = Some(theme::ICON_CANCEL); + current_item.text = TR::inputs__cancel.into(); + current_item.icon = Some(theme::ICON_CANCEL); } else { - text = "DELETE"; - icon = Some(theme::ICON_DELETE); + current_item.text = TR::inputs__delete.into(); + current_item.icon = Some(theme::ICON_DELETE); } } - let mut menu_item = ChoiceItem::new(text, ButtonLayout::default_three_icons()); + let mut menu_item = current_item.text.map(|t| { + ChoiceItem::new( + t, + ButtonLayout::arrow_armed_arrow(TR::buttons__select.into()), + ) + }); // Action buttons have different middle button text - if show_confirm { - let confirm_btn = ButtonDetails::armed_text("CONFIRM".into()); + if current_item.show_confirm { + let confirm_btn = ButtonDetails::armed_text(TR::buttons__confirm.into()); menu_item.set_middle_btn(Some(confirm_btn)); } // Making middle button create LongPress events - if without_release { + if current_item.without_release { menu_item = menu_item.with_middle_action_without_release(); } - if let Some(icon) = icon { + if let Some(icon) = current_item.icon { menu_item = menu_item.with_icon(icon); } - (menu_item, action) + (menu_item, current_item.action) } /// Character choices with a BACK to MENU choice at the end (visible from /// start) to return back - fn get_character_item( - &self, - choice_index: usize, - ) -> (ChoiceItem, PassphraseAction) { + fn get_character_item(&self, choice_index: usize) -> (ChoiceItem, PassphraseAction) { if is_menu_choice(&self.current_category, choice_index) { ( - ChoiceItem::new("BACK", ButtonLayout::arrow_armed_arrow("RETURN".into())) - .with_icon(theme::ICON_ARROW_BACK_UP), + TR::inputs__back.map_translated(|t| { + ChoiceItem::new( + t, + ButtonLayout::arrow_armed_arrow(TR::inputs__return.into()), + ) + .with_icon(theme::ICON_ARROW_BACK_UP) + }), PassphraseAction::Menu, ) } else { let ch = get_char(&self.current_category, choice_index); ( - ChoiceItem::new(char_to_string(ch), ButtonLayout::default_three_icons()), + ChoiceItem::new( + char_to_string(ch), + ButtonLayout::arrow_armed_arrow(TR::buttons__select.into()), + ), PassphraseAction::Character(ch), ) } } } -impl ChoiceFactory for ChoiceFactoryPassphrase { +impl ChoiceFactory for ChoiceFactoryPassphrase { type Action = PassphraseAction; - type Item = ChoiceItem; + type Item = ChoiceItem; fn count(&self) -> usize { let length = get_category_length(&self.current_category); @@ -250,8 +267,8 @@ impl ChoiceFactory for ChoiceFactoryPassphrase { } /// Component for entering a passphrase. -pub struct PassphraseEntry { - choice_page: ChoicePage, +pub struct PassphraseEntry { + choice_page: ChoicePage, passphrase_dots: Child>>, show_plain_passphrase: bool, show_last_digit: bool, @@ -259,10 +276,7 @@ pub struct PassphraseEntry { current_category: ChoiceCategory, } -impl PassphraseEntry -where - T: StringType + Clone, -{ +impl PassphraseEntry { pub fn new() -> Self { Self { choice_page: ChoicePage::new(ChoiceFactoryPassphrase::new(ChoiceCategory::Menu, true)) @@ -353,10 +367,7 @@ where } } -impl Component for PassphraseEntry -where - T: StringType + Clone, -{ +impl Component for PassphraseEntry { type Msg = CancelConfirmMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -442,21 +453,18 @@ where // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for PassphraseEntry -where - T: StringType + Clone, -{ +impl crate::trace::Trace for PassphraseEntry { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("PassphraseKeyboard"); - t.string("passphrase", self.textbox.content()); + t.string("passphrase", self.textbox.content().into()); t.string( "current_category", match self.current_category { - ChoiceCategory::Menu => "MENU", - ChoiceCategory::LowercaseLetter => MENU[LOWERCASE_INDEX].0, - ChoiceCategory::UppercaseLetter => MENU[UPPERCASE_INDEX].0, - ChoiceCategory::Digit => MENU[DIGITS_INDEX].0, - ChoiceCategory::SpecialSymbol => MENU[SPECIAL_INDEX].0, + ChoiceCategory::Menu => "MENU".into(), + ChoiceCategory::LowercaseLetter => MENU[LOWERCASE_INDEX].text, + ChoiceCategory::UppercaseLetter => MENU[UPPERCASE_INDEX].text, + ChoiceCategory::Digit => MENU[DIGITS_INDEX].text, + ChoiceCategory::SpecialSymbol => MENU[SPECIAL_INDEX].text, }, ); t.child("choice_page", &self.choice_page); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs index 3c2206bb0..7d434e7bc 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs @@ -1,5 +1,6 @@ use crate::{ - strutil::StringType, + strutil::{StringType, TString}, + translations::TR, trezorhal::random, ui::{ component::{text::common::TextBox, Child, Component, ComponentExt, Event, EventCtx}, @@ -22,27 +23,65 @@ enum PinAction { Digit(char), } +struct PinChoice { + text: TString<'static>, + action: PinAction, + icon: Option, + without_release: bool, +} + +impl PinChoice { + pub const fn new( + text: TString<'static>, + action: PinAction, + icon: Option, + without_release: bool, + ) -> Self { + Self { + text, + action, + icon, + without_release, + } + } +} + const MAX_PIN_LENGTH: usize = 50; const EMPTY_PIN_STR: &str = "_"; const CHOICE_LENGTH: usize = 13; const NUMBER_START_INDEX: usize = 3; -/// Text, action, icon, without_release -const CHOICES: [(&str, PinAction, Option, bool); CHOICE_LENGTH] = [ + +const CHOICES: [PinChoice; CHOICE_LENGTH] = [ // DELETE should be triggerable without release (after long-press) - ("DELETE", PinAction::Delete, Some(theme::ICON_DELETE), true), - ("SHOW", PinAction::Show, Some(theme::ICON_EYE), false), - ("ENTER", PinAction::Enter, Some(theme::ICON_TICK), false), - ("0", PinAction::Digit('0'), None, false), - ("1", PinAction::Digit('1'), None, false), - ("2", PinAction::Digit('2'), None, false), - ("3", PinAction::Digit('3'), None, false), - ("4", PinAction::Digit('4'), None, false), - ("5", PinAction::Digit('5'), None, false), - ("6", PinAction::Digit('6'), None, false), - ("7", PinAction::Digit('7'), None, false), - ("8", PinAction::Digit('8'), None, false), - ("9", PinAction::Digit('9'), None, false), + PinChoice::new( + TR::inputs__delete.as_tstring(), + PinAction::Delete, + Some(theme::ICON_DELETE), + true, // without_release + ), + PinChoice::new( + TR::inputs__show.as_tstring(), + PinAction::Show, + Some(theme::ICON_EYE), + false, + ), + PinChoice::new( + TR::inputs__enter.as_tstring(), + PinAction::Enter, + Some(theme::ICON_TICK), + false, + ), + PinChoice::new(TString::from_str("0"), PinAction::Digit('0'), None, false), + PinChoice::new(TString::from_str("1"), PinAction::Digit('1'), None, false), + PinChoice::new(TString::from_str("2"), PinAction::Digit('2'), None, false), + PinChoice::new(TString::from_str("3"), PinAction::Digit('3'), None, false), + PinChoice::new(TString::from_str("4"), PinAction::Digit('4'), None, false), + PinChoice::new(TString::from_str("5"), PinAction::Digit('5'), None, false), + PinChoice::new(TString::from_str("6"), PinAction::Digit('6'), None, false), + PinChoice::new(TString::from_str("7"), PinAction::Digit('7'), None, false), + PinChoice::new(TString::from_str("8"), PinAction::Digit('8'), None, false), + PinChoice::new(TString::from_str("9"), PinAction::Digit('9'), None, false), ]; fn get_random_digit_position() -> usize { @@ -51,32 +90,37 @@ fn get_random_digit_position() -> usize { struct ChoiceFactoryPIN; -impl ChoiceFactory for ChoiceFactoryPIN { +impl ChoiceFactory for ChoiceFactoryPIN { type Action = PinAction; - type Item = ChoiceItem; + type Item = ChoiceItem; fn get(&self, choice_index: usize) -> (Self::Item, Self::Action) { - let (choice_str, action, icon, without_release) = CHOICES[choice_index]; + let choice = &CHOICES[choice_index]; - let mut choice_item = ChoiceItem::new(choice_str, ButtonLayout::default_three_icons()); + let mut choice_item = choice.text.map(|t| { + ChoiceItem::new( + t, + ButtonLayout::arrow_armed_arrow(TR::buttons__select.into()), + ) + }); // Action buttons have different middle button text - if !matches!(action, PinAction::Digit(_)) { - let confirm_btn = ButtonDetails::armed_text("CONFIRM".into()); + if !matches!(choice.action, PinAction::Digit(_)) { + let confirm_btn = ButtonDetails::armed_text(TR::buttons__confirm.into()); choice_item.set_middle_btn(Some(confirm_btn)); } // Making middle button create LongPress events - if without_release { + if choice.without_release { choice_item = choice_item.with_middle_action_without_release(); } // Adding icons for appropriate items - if let Some(icon) = icon { + if let Some(icon) = choice.icon { choice_item = choice_item.with_icon(icon); } - (choice_item, action) + (choice_item, choice.action) } fn count(&self) -> usize { @@ -86,7 +130,7 @@ impl ChoiceFactory for ChoiceFactoryPIN { /// Component for entering a PIN. pub struct PinEntry { - choice_page: ChoicePage, + choice_page: ChoicePage, header_line: Child>>, pin_line: Child>>, prompt: T, @@ -111,7 +155,7 @@ where let (showing_real_prompt, header_line_content, pin_line_content) = if show_subprompt { ( false, - String::from("WRONG PIN"), + TR::pin__title_wrong_pin.map_translated(|t| String::from(t)), String::from(subprompt.as_ref()), ) } else { @@ -296,8 +340,8 @@ where { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("PinKeyboard"); - t.string("subprompt", self.subprompt.as_ref()); - t.string("pin", self.textbox.content()); + t.string("subprompt", self.subprompt.as_ref().into()); + t.string("pin", self.textbox.content().into()); t.child("choice_page", &self.choice_page); } } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs index 33d99fd9b..23bc9bd1c 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs @@ -1,5 +1,6 @@ use crate::{ - strutil::StringType, + strutil::TString, + translations::TR, ui::{ component::{Component, Event, EventCtx}, geometry::Rect, @@ -13,24 +14,24 @@ use heapless::Vec; // as would be via `const N: usize` generics. const MAX_LENGTH: usize = 5; -struct ChoiceFactorySimple { - choices: Vec, +struct ChoiceFactorySimple { + choices: Vec, MAX_LENGTH>, carousel: bool, } -impl ChoiceFactorySimple { - fn new(choices: Vec, carousel: bool) -> Self { +impl ChoiceFactorySimple { + fn new(choices: Vec, MAX_LENGTH>, carousel: bool) -> Self { Self { choices, carousel } } - fn get_string(&self, choice_index: usize) -> &str { - self.choices[choice_index].as_ref() + fn get_string(&self, choice_index: usize) -> TString<'static> { + self.choices[choice_index] } } -impl ChoiceFactory for ChoiceFactorySimple { +impl ChoiceFactory for ChoiceFactorySimple { type Action = usize; - type Item = ChoiceItem; + type Item = ChoiceItem; fn count(&self) -> usize { self.choices.len() @@ -38,7 +39,12 @@ impl ChoiceFactory for ChoiceFactorySimple { fn get(&self, choice_index: usize) -> (Self::Item, Self::Action) { let text = &self.choices[choice_index]; - let mut choice_item = ChoiceItem::new(text, ButtonLayout::default_three_icons()); + let mut choice_item = text.map(|t| { + ChoiceItem::new( + t, + ButtonLayout::arrow_armed_arrow(TR::buttons__select.into()), + ) + }); // Disabling prev/next buttons for the first/last choice when not in carousel. // (could be done to the same button if there is only one) @@ -57,19 +63,13 @@ impl ChoiceFactory for ChoiceFactorySimple { /// Simple wrapper around `ChoicePage` that allows for /// inputting a list of values and receiving the chosen one. -pub struct SimpleChoice -where - T: StringType + Clone, -{ - choice_page: ChoicePage, T, usize>, +pub struct SimpleChoice { + choice_page: ChoicePage, pub return_index: bool, } -impl SimpleChoice -where - T: StringType + Clone, -{ - pub fn new(str_choices: Vec, carousel: bool) -> Self { +impl SimpleChoice { + pub fn new(str_choices: Vec, MAX_LENGTH>, carousel: bool) -> Self { let choices = ChoiceFactorySimple::new(str_choices, carousel); Self { choice_page: ChoicePage::new(choices).with_carousel(carousel), @@ -96,15 +96,12 @@ where } /// Translating the resulting index into actual string choice. - pub fn result_by_index(&self, index: usize) -> &str { + pub fn result_by_index(&self, index: usize) -> TString<'static> { self.choice_page.choice_factory().get_string(index) } } -impl Component for SimpleChoice -where - T: StringType + Clone, -{ +impl Component for SimpleChoice { type Msg = usize; fn place(&mut self, bounds: Rect) -> Rect { @@ -123,10 +120,7 @@ where // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for SimpleChoice -where - T: StringType + Clone, -{ +impl crate::trace::Trace for SimpleChoice { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("SimpleChoice"); t.child("choice_page", &self.choice_page); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs index 8dd2f63f5..7f81f6098 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::StringType, + translations::TR, trezorhal::{random, wordlist::Wordlist}, ui::{ component::{text::common::TextBox, Child, Component, ComponentExt, Event, EventCtx}, @@ -76,9 +76,9 @@ impl ChoiceFactoryWordlist { } } -impl ChoiceFactory for ChoiceFactoryWordlist { +impl ChoiceFactory for ChoiceFactoryWordlist { type Action = WordlistAction; - type Item = ChoiceItem; + type Item = ChoiceItem; fn count(&self) -> usize { // Accounting for the DELETE option (+1) @@ -94,9 +94,14 @@ impl ChoiceFactory for ChoiceFactoryWordlist { // (is a requirement for WORDS, doing it for LETTERS as well to unite it) if choice_index == DELETE_INDEX { return ( - ChoiceItem::new("DELETE", ButtonLayout::arrow_armed_arrow("CONFIRM".into())) + TR::inputs__delete.map_translated(|t| { + ChoiceItem::new( + t, + ButtonLayout::arrow_armed_arrow(TR::buttons__confirm.into()), + ) .with_icon(theme::ICON_DELETE) - .with_middle_action_without_release(), + .with_middle_action_without_release() + }), WordlistAction::Delete, ); } @@ -105,7 +110,10 @@ impl ChoiceFactory for ChoiceFactoryWordlist { let index = self.word_random_order[choice_index - 1]; let word = self.wordlist.get(index).unwrap_or_default(); ( - ChoiceItem::new(word, ButtonLayout::default_three_icons()), + ChoiceItem::new( + word, + ButtonLayout::arrow_armed_arrow(TR::buttons__select.into()), + ), WordlistAction::Word(word), ) } else { @@ -115,7 +123,10 @@ impl ChoiceFactory for ChoiceFactoryWordlist { .nth(choice_index - 1) .unwrap_or_default(); ( - ChoiceItem::new(char_to_string(letter), ButtonLayout::default_three_icons()), + ChoiceItem::new( + char_to_string(letter), + ButtonLayout::arrow_armed_arrow(TR::buttons__select.into()), + ), WordlistAction::Letter(letter), ) } @@ -123,21 +134,18 @@ impl ChoiceFactory for ChoiceFactoryWordlist { } /// Component for entering a mnemonic from a wordlist - BIP39 or SLIP39. -pub struct WordlistEntry { - choice_page: ChoicePage, +pub struct WordlistEntry { + choice_page: ChoicePage, chosen_letters: Child>>, textbox: TextBox, offer_words: bool, wordlist_type: WordlistType, } -impl WordlistEntry -where - T: StringType + Clone, -{ +impl WordlistEntry { pub fn new(wordlist_type: WordlistType) -> Self { let choices = ChoiceFactoryWordlist::new(wordlist_type, ""); - let choices_count = >::count(&choices); + let choices_count = ::count(&choices); Self { // Starting at random letter position choice_page: ChoicePage::new(choices) @@ -167,7 +175,7 @@ where if self.offer_words { INITIAL_PAGE_COUNTER } else { - let choices_count = >::count(new_choices); + let choices_count = ::count(new_choices); // There should be always DELETE and at least one letter assert!(choices_count > 1); if choices_count == 2 { @@ -179,8 +187,7 @@ where loop { let random_position = get_random_position(choices_count); let current_action = - >::get(new_choices, random_position) - .1; + ::get(new_choices, random_position).1; if let WordlistAction::Letter(current_letter) = current_action { if let Some(last_letter) = self.get_last_textbox_letter() { if current_letter == last_letter { @@ -217,10 +224,7 @@ where } } -impl Component for WordlistEntry -where - T: StringType + Clone, -{ +impl Component for WordlistEntry { type Msg = &'static str; fn place(&mut self, bounds: Rect) -> Rect { @@ -264,13 +268,10 @@ where // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for WordlistEntry -where - T: StringType + Clone, -{ +impl crate::trace::Trace for WordlistEntry { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("MnemonicKeyboard"); // unified with TT - t.string("textbox", self.textbox.content()); + t.string("textbox", self.textbox.content().into()); if self.offer_words { t.bool("word_choices", true); diff --git a/core/embed/rust/src/ui/model_tr/component/loader.rs b/core/embed/rust/src/ui/model_tr/component/loader.rs index 23bf16463..5ccb06595 100644 --- a/core/embed/rust/src/ui/model_tr/component/loader.rs +++ b/core/embed/rust/src/ui/model_tr/component/loader.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::StringType, + strutil::{StringType, TString}, time::{Duration, Instant}, ui::{ animation::Animation, @@ -28,25 +28,19 @@ enum State { Grown, } -pub struct Loader -where - T: StringType, -{ +pub struct Loader { area: Rect, state: State, growing_duration: Duration, shrinking_duration: Duration, - text_overlay: display::TextOverlay, + text_overlay: display::TextOverlay, styles: LoaderStyleSheet, } -impl Loader -where - T: StringType, -{ +impl Loader { pub const SIZE: Offset = Offset::new(120, 120); - pub fn new(text_overlay: display::TextOverlay, styles: LoaderStyleSheet) -> Self { + pub fn new(text_overlay: display::TextOverlay, styles: LoaderStyleSheet) -> Self { Self { area: Rect::zero(), state: State::Initial, @@ -57,8 +51,8 @@ where } } - pub fn text(text: T, styles: LoaderStyleSheet) -> Self { - let text_overlay = display::TextOverlay::new(text, styles.normal.font); + pub fn text>>(text: T, styles: LoaderStyleSheet) -> Self { + let text_overlay = display::TextOverlay::new(text.into(), styles.normal.font); Self::new(text_overlay, styles) } @@ -77,18 +71,18 @@ where self.growing_duration } - pub fn get_text(&self) -> &T { + pub fn get_text(&self) -> TString<'static> { self.text_overlay.get_text() } /// Change the text of the loader. - pub fn set_text(&mut self, text: T) { - self.text_overlay.set_text(text); + pub fn set_text>>(&mut self, text: T) { + self.text_overlay.set_text(text.into()); } /// Return width of given text according to current style. - pub fn get_text_width(&self, text: &T) -> i16 { - self.styles.normal.font.text_width(text.as_ref()) + pub fn get_text_width(&self, text: &TString<'static>) -> i16 { + text.map(|t| self.styles.normal.font.text_width(t)) } pub fn start_growing(&mut self, ctx: &mut EventCtx, now: Instant) { @@ -172,10 +166,7 @@ where } } -impl Component for Loader -where - T: StringType, -{ +impl Component for Loader { type Msg = LoaderMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -346,13 +337,10 @@ where // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for Loader -where - T: StringType, -{ +impl crate::trace::Trace for Loader { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Loader"); - t.string("text", self.get_text().as_ref()); + t.string("text", self.get_text()); t.int("duration", self.get_duration().to_millis() as i64); } } diff --git a/core/embed/rust/src/ui/model_tr/component/mod.rs b/core/embed/rust/src/ui/model_tr/component/mod.rs index 977d5ed39..77e42855a 100644 --- a/core/embed/rust/src/ui/model_tr/component/mod.rs +++ b/core/embed/rust/src/ui/model_tr/component/mod.rs @@ -26,32 +26,39 @@ pub use loader::{Loader, LoaderMsg, LoaderStyle, LoaderStyleSheet, ProgressLoade pub use result::ResultScreen; pub use welcome_screen::WelcomeScreen; +#[cfg(feature = "translations")] mod address_details; mod changing_text; +#[cfg(feature = "translations")] mod coinjoin_progress; mod flow; mod flow_pages; mod frame; #[cfg(feature = "micropython")] mod homescreen; +#[cfg(feature = "translations")] mod page; mod progress; mod result_anim; mod result_popup; mod scrollbar; +#[cfg(feature = "translations")] mod share_words; mod show_more; mod title; +#[cfg(feature = "translations")] pub use address_details::AddressDetails; pub use changing_text::ChangingTextLine; +#[cfg(feature = "translations")] pub use coinjoin_progress::CoinJoinProgress; pub use flow::Flow; pub use flow_pages::{FlowPages, Page}; pub use frame::{Frame, ScrollableContent, ScrollableFrame}; #[cfg(feature = "micropython")] pub use homescreen::{check_homescreen_format, ConfirmHomescreen, Homescreen, Lockscreen}; +#[cfg(feature = "translations")] pub use input_methods::{ number_input::NumberInput, passphrase::PassphraseEntry, @@ -59,10 +66,12 @@ pub use input_methods::{ simple_choice::SimpleChoice, wordlist::{WordlistEntry, WordlistType}, }; +#[cfg(feature = "translations")] pub use page::ButtonPage; pub use progress::Progress; pub use result_anim::{ResultAnim, ResultAnimMsg}; pub use result_popup::{ResultPopup, ResultPopupMsg}; pub use scrollbar::ScrollBar; +#[cfg(feature = "translations")] pub use share_words::ShareWords; pub use show_more::{CancelInfoConfirmMsg, ShowMore}; diff --git a/core/embed/rust/src/ui/model_tr/component/page.rs b/core/embed/rust/src/ui/model_tr/component/page.rs index fc3dddbd3..31e6505e6 100644 --- a/core/embed/rust/src/ui/model_tr/component/page.rs +++ b/core/embed/rust/src/ui/model_tr/component/page.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::StringType, + translations::TR, ui::{ component::{Child, Component, ComponentExt, Event, EventCtx, Pad, PageMsg, Paginate}, display::Color, @@ -12,30 +12,28 @@ use super::{ ButtonDetails, ButtonLayout, ButtonPos, }; -pub struct ButtonPage +pub struct ButtonPage where T: Component + Paginate, - U: StringType, { page_count: usize, active_page: usize, content: Child, pad: Pad, /// Left button of the first screen - cancel_btn_details: Option>, + cancel_btn_details: Option, /// Right button of the last screen - confirm_btn_details: Option>, + confirm_btn_details: Option, /// Left button of every screen - back_btn_details: Option>, + back_btn_details: Option, /// Right button of every screen apart the last one - next_btn_details: Option>, - buttons: Child>, + next_btn_details: Option, + buttons: Child, } -impl ButtonPage +impl ButtonPage where T: Component + Paginate, - U: StringType + Clone, { pub fn new(content: T, background: Color) -> Self { Self { @@ -44,7 +42,7 @@ where content: Child::new(content), pad: Pad::with_background(background).with_clear(), cancel_btn_details: Some(ButtonDetails::cancel_icon()), - confirm_btn_details: Some(ButtonDetails::text("CONFIRM".into())), + confirm_btn_details: Some(ButtonDetails::text(TR::buttons__confirm.into())), back_btn_details: Some(ButtonDetails::up_arrow_icon()), next_btn_details: Some(ButtonDetails::down_arrow_icon_wide()), // Setting empty layout for now, we do not yet know the page count. @@ -54,22 +52,22 @@ where } } - pub fn with_cancel_btn(mut self, btn_details: Option>) -> Self { + pub fn with_cancel_btn(mut self, btn_details: Option) -> Self { self.cancel_btn_details = btn_details; self } - pub fn with_confirm_btn(mut self, btn_details: Option>) -> Self { + pub fn with_confirm_btn(mut self, btn_details: Option) -> Self { self.confirm_btn_details = btn_details; self } - pub fn with_back_btn(mut self, btn_details: Option>) -> Self { + pub fn with_back_btn(mut self, btn_details: Option) -> Self { self.back_btn_details = btn_details; self } - pub fn with_next_btn(mut self, btn_details: Option>) -> Self { + pub fn with_next_btn(mut self, btn_details: Option) -> Self { self.next_btn_details = btn_details; self } @@ -118,14 +116,14 @@ where }); } - fn get_button_layout(&self, has_prev: bool, has_next: bool) -> ButtonLayout { + fn get_button_layout(&self, has_prev: bool, has_next: bool) -> ButtonLayout { let btn_left = self.get_left_button_details(!has_prev); let btn_right = self.get_right_button_details(has_next); ButtonLayout::new(btn_left, None, btn_right) } /// Get the left button details, depending whether the page is first or not. - fn get_left_button_details(&self, is_first: bool) -> Option> { + fn get_left_button_details(&self, is_first: bool) -> Option { if is_first { self.cancel_btn_details.clone() } else { @@ -135,7 +133,7 @@ where /// Get the right button details, depending on whether there is a next /// page. - fn get_right_button_details(&self, has_next_page: bool) -> Option> { + fn get_right_button_details(&self, has_next_page: bool) -> Option { if has_next_page { self.next_btn_details.clone() } else { @@ -144,10 +142,9 @@ where } } -impl ScrollableContent for ButtonPage +impl ScrollableContent for ButtonPage where T: Component + Paginate, - U: StringType, { fn page_count(&self) -> usize { self.page_count @@ -157,10 +154,9 @@ where } } -impl Component for ButtonPage +impl Component for ButtonPage where T: Component + Paginate, - U: StringType + Clone, { type Msg = PageMsg; @@ -224,10 +220,9 @@ where // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for ButtonPage +impl crate::trace::Trace for ButtonPage where T: crate::trace::Trace + Paginate + Component, - U: StringType + Clone, { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("ButtonPage"); diff --git a/core/embed/rust/src/ui/model_tr/component/result_popup.rs b/core/embed/rust/src/ui/model_tr/component/result_popup.rs index 2d3a6eaca..b94c4ca9e 100644 --- a/core/embed/rust/src/ui/model_tr/component/result_popup.rs +++ b/core/embed/rust/src/ui/model_tr/component/result_popup.rs @@ -30,7 +30,7 @@ where result_anim: Child, headline: Option>, text: Child>>, - buttons: Option>>, + buttons: Option>, autoclose: bool, } diff --git a/core/embed/rust/src/ui/model_tr/component/share_words.rs b/core/embed/rust/src/ui/model_tr/component/share_words.rs index 63053f804..1935e32df 100644 --- a/core/embed/rust/src/ui/model_tr/component/share_words.rs +++ b/core/embed/rust/src/ui/model_tr/component/share_words.rs @@ -1,5 +1,6 @@ use crate::{ strutil::StringType, + translations::TR, ui::{ component::{ text::util::text_multiline, Child, Component, Event, EventCtx, Never, Paginate, @@ -69,19 +70,24 @@ where } fn get_final_text(&self) -> String<50> { - build_string!( - 50, - "I wrote down all ", - inttostr!(self.share_words.len() as u8), - " words in order." - ) + TR::share_words__wrote_down_all.map_translated(|wrote_down_all| { + TR::share_words__words_in_order.map_translated(|in_order| { + build_string!( + 50, + wrote_down_all, + inttostr!(self.share_words.len() as u8), + in_order + ) + }) + }) } /// Display the final page with user confirmation. fn paint_final_page(&mut self) { + let final_text = self.get_final_text(); text_multiline( self.area.split_top(INFO_TOP_OFFSET).1, - &self.get_final_text(), + final_text.as_str().into(), Font::NORMAL, theme::FG, theme::BG, @@ -103,7 +109,7 @@ where let baseline = self.area.top_left() + Offset::y(y_offset); let ordinal = build_string!(5, inttostr!(index as u8 + 1), "."); display_left(baseline + Offset::x(NUMBER_X_OFFSET), &ordinal, NUMBER_FONT); - display_left(baseline + Offset::x(WORD_X_OFFSET), &word, WORD_FONT); + display_left(baseline + Offset::x(WORD_X_OFFSET), word, WORD_FONT); } } } @@ -183,6 +189,6 @@ where } content }; - t.string("screen_content", &content); + t.string("screen_content", content.as_str().into()); } } diff --git a/core/embed/rust/src/ui/model_tr/component/show_more.rs b/core/embed/rust/src/ui/model_tr/component/show_more.rs index 03bc91d05..717481d90 100644 --- a/core/embed/rust/src/ui/model_tr/component/show_more.rs +++ b/core/embed/rust/src/ui/model_tr/component/show_more.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::StringType, + strutil::TString, ui::{ component::{Child, Component, Event, EventCtx}, geometry::{Insets, Rect}, @@ -14,20 +14,20 @@ pub enum CancelInfoConfirmMsg { Confirmed, } -pub struct ShowMore -where - U: StringType, -{ +pub struct ShowMore { content: Child, - buttons: Child>, + buttons: Child, } -impl ShowMore +impl ShowMore where T: Component, - U: StringType + Clone, { - pub fn new(content: T, cancel_button: Option, button: U) -> Self { + pub fn new( + content: T, + cancel_button: Option>, + button: TString<'static>, + ) -> Self { let btn_layout = if let Some(cancel_text) = cancel_button { ButtonLayout::text_armed_info(cancel_text, button) } else { @@ -40,10 +40,9 @@ where } } -impl Component for ShowMore +impl Component for ShowMore where T: Component, - U: StringType + Clone, { type Msg = CancelInfoConfirmMsg; @@ -83,10 +82,9 @@ where // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for ShowMore +impl crate::trace::Trace for ShowMore where T: crate::trace::Trace + Component, - U: StringType + Clone, { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("ShowMore"); diff --git a/core/embed/rust/src/ui/model_tr/component/title.rs b/core/embed/rust/src/ui/model_tr/component/title.rs index 0561dd42c..1f1c116c5 100644 --- a/core/embed/rust/src/ui/model_tr/component/title.rs +++ b/core/embed/rust/src/ui/model_tr/component/title.rs @@ -127,6 +127,6 @@ where { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Title"); - t.string("text", self.title.as_ref()); + t.string("text", self.title.as_ref().into()); } } diff --git a/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs b/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs index c38fff454..e9ae5985b 100644 --- a/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs @@ -58,6 +58,6 @@ impl Component for WelcomeScreen { impl crate::trace::Trace for WelcomeScreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("WelcomeScreen"); - t.string("model_name", "Trezor Safe 3"); + t.string("model_name", "Trezor Safe 3".into()); } } diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 8bee3e033..e20fd2ba2 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -16,11 +16,13 @@ use crate::{ qstr::Qstr, util, }, - strutil::StringType, + strutil::{StringType, TString}, + translations::TR, trezorhal::model, ui::{ component::{ base::Component, + connect::Connect, paginated::{PageMsg, Paginate}, text::{ op::OpTextLayout, @@ -62,10 +64,9 @@ impl From for Obj { } } -impl ComponentMsgObj for ShowMore +impl ComponentMsgObj for ShowMore where T: Component, - U: StringType + Clone, { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { match msg { @@ -85,10 +86,9 @@ where } } -impl ComponentMsgObj for ButtonPage +impl ComponentMsgObj for ButtonPage where T: Component + Paginate, - U: StringType + Clone, { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { match msg { @@ -140,10 +140,7 @@ where } } -impl ComponentMsgObj for AddressDetails -where - T: StringType + Clone, -{ +impl ComponentMsgObj for AddressDetails { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result { Ok(CANCELLED.as_obj()) } @@ -158,19 +155,13 @@ where } } -impl ComponentMsgObj for NumberInput -where - T: StringType + Clone, -{ +impl ComponentMsgObj for NumberInput { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { msg.try_into() } } -impl ComponentMsgObj for SimpleChoice -where - T: StringType + Clone, -{ +impl ComponentMsgObj for SimpleChoice { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { if self.return_index { msg.try_into() @@ -181,19 +172,13 @@ where } } -impl ComponentMsgObj for WordlistEntry -where - T: StringType + Clone, -{ +impl ComponentMsgObj for WordlistEntry { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { msg.try_into() } } -impl ComponentMsgObj for PassphraseEntry -where - T: StringType + Clone, -{ +impl ComponentMsgObj for PassphraseEntry { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { match msg { CancelConfirmMsg::Confirmed => self.passphrase().try_into(), @@ -262,9 +247,8 @@ where } } -impl ComponentMsgObj for super::component::bl_confirm::Confirm +impl ComponentMsgObj for super::component::bl_confirm::Confirm where - T: StringType + Clone, U: AsRef, { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { @@ -282,8 +266,8 @@ where fn content_in_button_page( title: StrBuffer, content: T, - verb: StrBuffer, - verb_cancel: Option, + verb: TString<'static>, + verb_cancel: Option>, hold: bool, ) -> Result { // Left button - icon, text or nothing. @@ -319,8 +303,9 @@ extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut M let action: Option = kwargs.get(Qstr::MP_QSTR_action)?.try_into_option()?; let description: Option = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; - let verb: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_verb, "CONFIRM".into())?; - let verb_cancel: Option = kwargs + let verb: TString<'static> = + kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.into())?; + let verb_cancel: Option> = kwargs .get(Qstr::MP_QSTR_verb_cancel) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; @@ -355,8 +340,9 @@ extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map let description: Option = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; let extra: Option = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; - let verb: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_verb, "CONFIRM".into())?; - let verb_cancel: Option = kwargs + let verb: TString<'static> = + kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.into())?; + let verb_cancel: Option> = kwargs .get(Qstr::MP_QSTR_verb_cancel) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; @@ -425,7 +411,7 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m content_in_button_page( title, paragraphs.into_paragraphs(), - "CONFIRM".into(), + TR::buttons__confirm.into(), None, hold, ) @@ -454,14 +440,14 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m extern "C" fn new_confirm_reset_device(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let button: TString<'static> = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let ops = OpTextLayout::::new(theme::TEXT_NORMAL) - .text_normal("By continuing you agree to Trezor Company's terms and conditions.".into()) + .text_normal(TR::reset__by_continuing.try_into()?) .next_page() - .text_normal("More info at".into()) + .text_normal(TR::reset__more_info_at.try_into()?) .newline() - .text_bold("trezor.io/tos".into()); + .text_bold(TR::reset__tos_link.try_into()?); let formatted = FormattedText::new(ops).vertically_centered(); content_in_button_page(title, formatted, button, Some("".into()), false) @@ -471,27 +457,32 @@ extern "C" fn new_confirm_reset_device(n_args: usize, args: *const Obj, kwargs: extern "C" fn new_confirm_backup(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], _kwargs: &Map| { + // cached allocated translations that get_page can reuse + let tr_title_success: StrBuffer = TR::words__title_success.try_into()?; + let tr_new_wallet_created: StrBuffer = TR::backup__new_wallet_created.try_into()?; + let tr_it_should_be_backed_up_now: StrBuffer = + TR::backup__it_should_be_backed_up_now.try_into()?; + let tr_title_backup_wallet: StrBuffer = TR::backup__title_backup_wallet.try_into()?; + let tr_recover_anytime: StrBuffer = TR::backup__recover_anytime.try_into()?; + let get_page = move |page_index| match page_index { 0 => { - let btn_layout = ButtonLayout::text_none_arrow_wide("SKIP".into()); + let btn_layout = ButtonLayout::text_none_arrow_wide(TR::buttons__skip.into()); let btn_actions = ButtonActions::cancel_none_next(); let ops = OpTextLayout::new(theme::TEXT_NORMAL) - .text_normal("New wallet created.".into()) - .newline() + .text_normal(tr_new_wallet_created) .newline() - .text_normal("It should be backed up now!".into()); + .text_normal(tr_it_should_be_backed_up_now); let formatted = FormattedText::new(ops).vertically_centered(); - Page::new(btn_layout, btn_actions, formatted).with_title("SUCCESS".into()) + Page::new(btn_layout, btn_actions, formatted).with_title(tr_title_success) } 1 => { - let btn_layout = ButtonLayout::up_arrow_none_text("BACK UP".into()); + let btn_layout = ButtonLayout::up_arrow_none_text(TR::buttons__back_up.into()); let btn_actions = ButtonActions::prev_none_confirm(); - let ops = OpTextLayout::new(theme::TEXT_NORMAL).text_normal( - "You can use your backup to recover your wallet at any time.".into(), - ); + let ops = OpTextLayout::new(theme::TEXT_NORMAL).text_normal(tr_recover_anytime); let formatted = FormattedText::new(ops).vertically_centered(); Page::::new(btn_layout, btn_actions, formatted) - .with_title("BACK UP WALLET".into()) + .with_title(tr_title_backup_wallet) } _ => unreachable!(), }; @@ -531,7 +522,7 @@ extern "C" fn new_confirm_value(n_args: usize, args: *const Obj, kwargs: *mut Ma let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let value: StrBuffer = kwargs.get(Qstr::MP_QSTR_value)?.try_into()?; - let verb: Option = kwargs + let verb: Option> = kwargs .get(Qstr::MP_QSTR_verb) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; @@ -545,7 +536,7 @@ extern "C" fn new_confirm_value(n_args: usize, args: *const Obj, kwargs: *mut Ma content_in_button_page( title, paragraphs, - verb.unwrap_or_else(|| "CONFIRM".into()), + verb.unwrap_or(TR::buttons__confirm.into()), Some("".into()), hold, ) @@ -559,16 +550,22 @@ extern "C" fn new_confirm_joint_total(n_args: usize, args: *const Obj, kwargs: * let total_amount: StrBuffer = kwargs.get(Qstr::MP_QSTR_total_amount)?.try_into()?; let paragraphs = Paragraphs::new([ - Paragraph::new(&theme::TEXT_BOLD, "You are contributing:".into()), + Paragraph::new( + &theme::TEXT_BOLD, + TR::joint__you_are_contributing.try_into()?, + ), Paragraph::new(&theme::TEXT_MONO, spending_amount), - Paragraph::new(&theme::TEXT_BOLD, "To the total amount:".into()), + Paragraph::new( + &theme::TEXT_BOLD, + TR::joint__to_the_total_amount.try_into()?, + ), Paragraph::new(&theme::TEXT_MONO, total_amount), ]); content_in_button_page( - "JOINT TRANSACTION".into(), + TR::joint__title.try_into()?, paragraphs, - "HOLD TO CONFIRM".into(), + TR::buttons__hold_to_confirm.into(), Some("".into()), true, ) @@ -583,22 +580,22 @@ extern "C" fn new_confirm_modify_output(n_args: usize, args: *const Obj, kwargs: let amount_new: StrBuffer = kwargs.get(Qstr::MP_QSTR_amount_new)?.try_into()?; let description = if sign < 0 { - "Decrease amount by:" + TR::modify_amount__decrease_amount } else { - "Increase amount by:" + TR::modify_amount__increase_amount }; let paragraphs = Paragraphs::new([ - Paragraph::new(&theme::TEXT_NORMAL, description.into()), + Paragraph::new(&theme::TEXT_NORMAL, description.try_into()?), Paragraph::new(&theme::TEXT_MONO, amount_change).break_after(), - Paragraph::new(&theme::TEXT_BOLD, "New amount:".into()), + Paragraph::new(&theme::TEXT_BOLD, TR::modify_amount__new_amount.try_into()?), Paragraph::new(&theme::TEXT_MONO, amount_new), ]); content_in_button_page( - "MODIFY AMOUNT".into(), + TR::modify_amount__title.try_into()?, paragraphs, - "CONFIRM".into(), + TR::buttons__confirm.into(), Some("".into()), false, ) @@ -616,7 +613,7 @@ extern "C" fn new_confirm_output_address(n_args: usize, args: *const Obj, kwargs let get_page = move |page_index| { assert!(page_index == 0); // RECIPIENT + address - let btn_layout = ButtonLayout::cancel_none_text("CONTINUE".into()); + let btn_layout = ButtonLayout::cancel_none_text(TR::buttons__continue.into()); let btn_actions = ButtonActions::cancel_none_confirm(); // Not putting hyphens in the address. // Potentially adding address label in different font. @@ -628,15 +625,15 @@ extern "C" fn new_confirm_output_address(n_args: usize, args: *const Obj, kwargs if chunkify { ops = ops.chunkify_text(None); } - ops = ops.text_normal(address_label.clone()).newline(); + ops = ops.text_normal(address_label).newline(); } if chunkify { // Chunkifying the address into smaller pieces when requested ops = ops.chunkify_text(Some((theme::MONO_CHUNKS, 2))); } - ops = ops.text_mono(address.clone()); + ops = ops.text_mono(address); let formatted = FormattedText::new(ops).vertically_centered(); - Page::new(btn_layout, btn_actions, formatted).with_title(address_title.clone()) + Page::new(btn_layout, btn_actions, formatted).with_title(address_title) }; let pages = FlowPages::new(get_page, 1); @@ -654,11 +651,11 @@ extern "C" fn new_confirm_output_amount(n_args: usize, args: *const Obj, kwargs: let get_page = move |page_index| { assert!(page_index == 0); // AMOUNT + amount - let btn_layout = ButtonLayout::up_arrow_none_text("CONFIRM".into()); + let btn_layout = ButtonLayout::up_arrow_none_text(TR::buttons__confirm.into()); let btn_actions = ButtonActions::cancel_none_confirm(); - let ops = OpTextLayout::new(theme::TEXT_MONO).text_mono(amount.clone()); + let ops = OpTextLayout::new(theme::TEXT_MONO).text_mono(amount); let formatted = FormattedText::new(ops).vertically_centered(); - Page::new(btn_layout, btn_actions, formatted).with_title(amount_title.clone()) + Page::new(btn_layout, btn_actions, formatted).with_title(amount_title) }; let pages = FlowPages::new(get_page, 1); @@ -680,22 +677,28 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma let total_label: StrBuffer = kwargs.get(Qstr::MP_QSTR_total_label)?.try_into()?; let fee_label: StrBuffer = kwargs.get(Qstr::MP_QSTR_fee_label)?.try_into()?; + // cached allocated translated strings that get_page can reuse + let tr_title_fee = TR::confirm_total__title_fee.try_into()?; + let tr_fee_rate = TR::confirm_total__fee_rate.try_into()?; + let tr_title_sending_from = TR::confirm_total__title_sending_from.try_into()?; + let tr_account = TR::words__account_colon.try_into()?; + let get_page = move |page_index| { match page_index { 0 => { // Total amount + fee - let btn_layout = ButtonLayout::cancel_armed_info("CONFIRM".into()); + let btn_layout = ButtonLayout::cancel_armed_info(TR::buttons__confirm.into()); let btn_actions = ButtonActions::cancel_confirm_next(); let ops = OpTextLayout::new(theme::TEXT_MONO) - .text_bold(total_label.clone()) + .text_bold(total_label) .newline() - .text_mono(total_amount.clone()) + .text_mono(total_amount) .newline() .newline() - .text_bold(fee_label.clone()) + .text_bold(fee_label) .newline() - .text_mono(fee_amount.clone()); + .text_mono(fee_amount); let formatted = FormattedText::new(ops); Page::new(btn_layout, btn_actions, formatted) @@ -705,14 +708,14 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma let btn_layout = ButtonLayout::arrow_none_arrow(); let btn_actions = ButtonActions::prev_none_next(); - let fee_rate_amount = fee_rate_amount.clone().unwrap_or_default(); + let fee_rate_amount = fee_rate_amount.unwrap_or_default(); let ops = OpTextLayout::new(theme::TEXT_MONO) - .text_bold("FEE INFORMATION".into()) + .text_bold(tr_title_fee) .newline() .newline() .newline_half() - .text_bold("Fee rate:".into()) + .text_bold(tr_fee_rate) .newline() .text_mono(fee_rate_amount); @@ -724,16 +727,16 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma let btn_layout = ButtonLayout::arrow_none_none(); let btn_actions = ButtonActions::prev_none_none(); - let account_label = account_label.clone().unwrap_or_default(); + let account_label = account_label.unwrap_or_default(); // TODO: include wallet info when available let ops = OpTextLayout::new(theme::TEXT_MONO) - .text_bold("SENDING FROM".into()) + .text_bold(tr_title_sending_from) .newline() .newline() .newline_half() - .text_bold("Account:".into()) + .text_bold(tr_account) .newline() .text_mono(account_label); @@ -760,27 +763,30 @@ extern "C" fn new_altcoin_tx_summary(n_args: usize, args: *const Obj, kwargs: *m let cancel_cross: bool = kwargs.get_or(Qstr::MP_QSTR_cancel_cross, false)?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + // cached allocated translated strings that get_page can reuse + let tr_title_fee = TR::confirm_total__title_fee.try_into()?; + let get_page = move |page_index| { match page_index { 0 => { // Amount + fee let btn_layout = if cancel_cross { - ButtonLayout::cancel_armed_info("CONFIRM".into()) + ButtonLayout::cancel_armed_info(TR::buttons__confirm.into()) } else { - ButtonLayout::up_arrow_armed_info("CONFIRM".into()) + ButtonLayout::up_arrow_armed_info(TR::buttons__confirm.into()) }; let btn_actions = ButtonActions::cancel_confirm_next(); let ops = OpTextLayout::new(theme::TEXT_MONO) - .text_mono(amount_value.clone()) + .text_mono(amount_value) .newline() .newline_half() - .text_bold(fee_title.clone()) + .text_bold(fee_title) .newline() - .text_mono(fee_value.clone()); + .text_mono(fee_value); let formatted = FormattedText::new(ops); - Page::new(btn_layout, btn_actions, formatted).with_title(amount_title.clone()) + Page::new(btn_layout, btn_actions, formatted).with_title(amount_title) } 1 => { // Other information @@ -803,7 +809,7 @@ extern "C" fn new_altcoin_tx_summary(n_args: usize, args: *const Obj, kwargs: *m let formatted = FormattedText::new(ops).vertically_centered(); Page::new(btn_layout, btn_actions, formatted) - .with_title("FEE INFORMATION".into()) + .with_title(tr_title_fee) .with_slim_arrows() } _ => unreachable!(), @@ -821,13 +827,14 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let address: StrBuffer = kwargs.get(Qstr::MP_QSTR_data)?.try_into()?; - let verb: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_verb, "CONFIRM".into())?; + let verb: TString<'static> = + kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.into())?; let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; let get_page = move |page_index| { assert!(page_index == 0); - let btn_layout = ButtonLayout::cancel_armed_info(verb.clone()); + let btn_layout = ButtonLayout::cancel_armed_info(verb); let btn_actions = ButtonActions::cancel_confirm_info(); let style = if chunkify { // Chunkifying the address into smaller pieces when requested @@ -835,9 +842,9 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut } else { theme::TEXT_MONO_DATA }; - let ops = OpTextLayout::new(style).text_mono(address.clone()); + let ops = OpTextLayout::new(style).text_mono(address); let formatted = FormattedText::new(ops).vertically_centered(); - Page::new(btn_layout, btn_actions, formatted).with_title(title.clone()) + Page::new(btn_layout, btn_actions, formatted).with_title(title) }; let pages = FlowPages::new(get_page, 1); @@ -850,21 +857,37 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut /// General pattern of most tutorial screens. /// (title, text, btn_layout, btn_actions, text_y_offset) fn tutorial_screen( - title: &'static str, - text: &'static str, - btn_layout: ButtonLayout, + title: StrBuffer, + text: StrBuffer, + btn_layout: ButtonLayout, btn_actions: ButtonActions, ) -> Page { - let ops = OpTextLayout::::new(theme::TEXT_NORMAL).text_normal(text.into()); + let ops = OpTextLayout::::new(theme::TEXT_NORMAL).text_normal(text); let formatted = FormattedText::new(ops).vertically_centered(); - Page::new(btn_layout, btn_actions, formatted).with_title(title.into()) + Page::new(btn_layout, btn_actions, formatted).with_title(title) } extern "C" fn tutorial(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = |_args: &[Obj], _kwargs: &Map| { const PAGE_COUNT: usize = 7; - let get_page = |page_index| { + // cached allocated translated strings that get_page can reuse + let tr_title_hello: StrBuffer = TR::tutorial__title_hello.try_into()?; + let tr_welcome_press_right: StrBuffer = TR::tutorial__welcome_press_right.try_into()?; + let tr_use_trezor: StrBuffer = TR::tutorial__use_trezor.try_into()?; + let tr_hold_to_confirm: StrBuffer = TR::buttons__hold_to_confirm.try_into()?; + let tr_press_and_hold: StrBuffer = TR::tutorial__press_and_hold.try_into()?; + let tr_title_screen_scroll: StrBuffer = TR::tutorial__title_screen_scroll.try_into()?; + let tr_scroll_down: StrBuffer = TR::tutorial__scroll_down.try_into()?; + let tr_confirm: StrBuffer = TR::buttons__confirm.try_into()?; + let tr_middle_click: StrBuffer = TR::tutorial__middle_click.try_into()?; + let tr_title_tutorial_complete: StrBuffer = + TR::tutorial__title_tutorial_complete.try_into()?; + let tr_ready_to_use: StrBuffer = TR::tutorial__ready_to_use.try_into()?; + let tr_title_skip: StrBuffer = TR::tutorial__title_skip.try_into()?; + let tr_sure_you_want_skip: StrBuffer = TR::tutorial__sure_you_want_skip.try_into()?; + + let get_page = move |page_index| { // Lazy-loaded list of screens to show, with custom content, // buttons and actions triggered by these buttons. // Cancelling the first screen will point to the last one, @@ -872,62 +895,51 @@ extern "C" fn tutorial(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj // really cancel the tutorial. match page_index { // title, text, btn_layout, btn_actions - 0 => { - tutorial_screen( - "HELLO", - "Welcome to Trezor. Press right to continue.", - ButtonLayout::cancel_none_arrow(), - ButtonActions::last_none_next(), - ) - }, - 1 => { - tutorial_screen( - "", - "Use Trezor by\nclicking the left and right buttons.\n\rContinue right.", - ButtonLayout::arrow_none_arrow(), - ButtonActions::prev_none_next(), - ) - }, - 2 => { - tutorial_screen( - "HOLD TO CONFIRM", - "Press and hold the right button to\napprove important operations.", - ButtonLayout::arrow_none_htc("HOLD TO CONFIRM".into()), - ButtonActions::prev_none_next(), - ) - }, - 3 => { - tutorial_screen( - "SCREEN SCROLL", - "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up.", - ButtonLayout::arrow_none_text("CONTINUE".into()), - ButtonActions::prev_none_next(), - ) - }, - 4 => { - tutorial_screen( - "CONFIRM", - "Press both left and right at the same\ntime to confirm.", - ButtonLayout::none_armed_none("CONFIRM".into()), - ButtonActions::none_next_none(), - ) - }, - 5 => { - tutorial_screen( - "TUTORIAL COMPLETE", - "You're ready to\nuse Trezor.", - ButtonLayout::text_none_text("AGAIN".into(), "CONTINUE".into()), - ButtonActions::beginning_none_confirm(), - ) - }, - 6 => { - tutorial_screen( - "SKIP TUTORIAL", - "Are you sure you\nwant to skip the tutorial?", - ButtonLayout::arrow_none_text("SKIP".into()), - ButtonActions::beginning_none_cancel(), - ) - }, + 0 => tutorial_screen( + tr_title_hello, + tr_welcome_press_right, + ButtonLayout::cancel_none_arrow(), + ButtonActions::last_none_next(), + ), + 1 => tutorial_screen( + "".into(), + tr_use_trezor, + ButtonLayout::arrow_none_arrow(), + ButtonActions::prev_none_next(), + ), + 2 => tutorial_screen( + tr_hold_to_confirm, + tr_press_and_hold, + ButtonLayout::arrow_none_htc(TR::buttons__hold_to_confirm.into()), + ButtonActions::prev_none_next(), + ), + 3 => tutorial_screen( + tr_title_screen_scroll, + tr_scroll_down, + ButtonLayout::arrow_none_text(TR::buttons__continue.into()), + ButtonActions::prev_none_next(), + ), + 4 => tutorial_screen( + tr_confirm, + tr_middle_click, + ButtonLayout::none_armed_none(TR::buttons__confirm.into()), + ButtonActions::none_next_none(), + ), + 5 => tutorial_screen( + tr_title_tutorial_complete, + tr_ready_to_use, + ButtonLayout::text_none_text( + TR::buttons__again.into(), + TR::buttons__continue.into(), + ), + ButtonActions::beginning_none_confirm(), + ), + 6 => tutorial_screen( + tr_title_skip, + tr_sure_you_want_skip, + ButtonLayout::arrow_none_text(TR::buttons__skip.into()), + ButtonActions::beginning_none_cancel(), + ), _ => unreachable!(), } }; @@ -957,28 +969,37 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m .try_into_option()?; let (description, change) = match sign { - s if s < 0 => ("Decrease fee by:", user_fee_change), - s if s > 0 => ("Increase fee by:", user_fee_change), - _ => ("Your fee did not change.", StrBuffer::empty()), + s if s < 0 => (TR::modify_fee__decrease_fee, user_fee_change), + s if s > 0 => (TR::modify_fee__increase_fee, user_fee_change), + _ => (TR::modify_fee__no_change, StrBuffer::empty()), }; let mut paragraphs_vec = ParagraphVecShort::new(); paragraphs_vec - .add(Paragraph::new(&theme::TEXT_BOLD, description.into())) + .add(Paragraph::new(&theme::TEXT_BOLD, description.try_into()?)) .add(Paragraph::new(&theme::TEXT_MONO, change)) - .add(Paragraph::new(&theme::TEXT_BOLD, "Transaction fee:".into()).no_break()) + .add( + Paragraph::new( + &theme::TEXT_BOLD, + TR::modify_fee__transaction_fee.try_into()?, + ) + .no_break(), + ) .add(Paragraph::new(&theme::TEXT_MONO, total_fee_new)); if let Some(fee_rate_amount) = fee_rate_amount { paragraphs_vec - .add(Paragraph::new(&theme::TEXT_BOLD, "Fee rate:".into()).no_break()) + .add( + Paragraph::new(&theme::TEXT_BOLD, TR::modify_fee__fee_rate.try_into()?) + .no_break(), + ) .add(Paragraph::new(&theme::TEXT_MONO, fee_rate_amount)); } content_in_button_page( - "MODIFY FEE".into(), + TR::modify_fee__title.try_into()?, paragraphs_vec.into_paragraphs(), - "CONFIRM".into(), + TR::buttons__confirm.into(), Some("".into()), false, ) @@ -989,7 +1010,7 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m extern "C" fn new_multiple_pages_texts(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let verb: StrBuffer = kwargs.get(Qstr::MP_QSTR_verb)?.try_into()?; + let verb: TString<'static> = kwargs.get(Qstr::MP_QSTR_verb)?.try_into()?; let items: Gc = kwargs.get(Qstr::MP_QSTR_items)?.try_into()?; // Cache the page count so that we can move `items` into the closure. @@ -1005,7 +1026,7 @@ extern "C" fn new_multiple_pages_texts(n_args: usize, args: *const Obj, kwargs: let (btn_layout, btn_actions) = if page_count == 1 { // There is only one page ( - ButtonLayout::cancel_none_text(verb.clone()), + ButtonLayout::cancel_none_text(verb), ButtonActions::cancel_none_confirm(), ) } else if page_index == 0 { @@ -1017,7 +1038,7 @@ extern "C" fn new_multiple_pages_texts(n_args: usize, args: *const Obj, kwargs: } else if page_index == page_count - 1 { // Last page ( - ButtonLayout::up_arrow_none_text(verb.clone()), + ButtonLayout::up_arrow_none_text(verb), ButtonActions::prev_none_confirm(), ) } else { @@ -1060,32 +1081,32 @@ extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map let (btn_layout, btn_actions) = if page_count == 1 { // There is only one page ( - ButtonLayout::cancel_none_text("CONFIRM".into()), + ButtonLayout::cancel_none_text(TR::buttons__confirm.into()), ButtonActions::cancel_none_confirm(), ) } else if page_index == 0 { // First page ( - ButtonLayout::cancel_armed_arrow("SELECT".into()), + ButtonLayout::cancel_armed_arrow(TR::buttons__select.into()), ButtonActions::cancel_confirm_next(), ) } else if page_index == page_count - 1 { // Last page ( - ButtonLayout::arrow_armed_none("SELECT".into()), + ButtonLayout::arrow_armed_none(TR::buttons__select.into()), ButtonActions::prev_confirm_none(), ) } else { // Page in the middle ( - ButtonLayout::arrow_armed_arrow("SELECT".into()), + ButtonLayout::arrow_armed_arrow(TR::buttons__select.into()), ButtonActions::prev_confirm_next(), ) }; let ops = OpTextLayout::new(theme::TEXT_NORMAL) .newline() - .text_normal(app_name.clone()) + .text_normal(app_name) .newline() .text_bold(account); let formatted = FormattedText::new(ops); @@ -1107,22 +1128,22 @@ extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let button: TString<'static> = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let warning: StrBuffer = kwargs.get(Qstr::MP_QSTR_warning)?.try_into()?; let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let get_page = move |page_index| { assert!(page_index == 0); - let btn_layout = ButtonLayout::none_armed_none(button.clone()); + let btn_layout = ButtonLayout::none_armed_none(button); let btn_actions = ButtonActions::none_confirm_none(); let mut ops = OpTextLayout::::new(theme::TEXT_NORMAL); ops = ops.alignment(geometry::Alignment::Center); if !warning.is_empty() { - ops = ops.text_bold(warning.clone()).newline().newline(); + ops = ops.text_bold(warning).newline(); } if !description.is_empty() { - ops = ops.text_normal(description.clone()); + ops = ops.text_normal(description); } let formatted = FormattedText::new(ops).vertically_centered(); Page::new(btn_layout, btn_actions, formatted) @@ -1162,7 +1183,18 @@ extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) - extern "C" fn new_show_passphrase() -> Obj { let block = move || { - let text: StrBuffer = "Please enter your passphrase.".into(); + let text: StrBuffer = TR::passphrase__please_enter.try_into()?; + let paragraph = Paragraph::new(&theme::TEXT_NORMAL, text).centered(); + let content = Paragraphs::new([paragraph]); + let obj = LayoutObj::new(content)?; + Ok(obj.into()) + }; + unsafe { util::try_or_raise(block) } +} + +extern "C" fn new_show_waiting_text(message: Obj) -> Obj { + let block = || { + let text: StrBuffer = message.try_into()?; let paragraph = Paragraph::new(&theme::TEXT_NORMAL, text).centered(); let content = Paragraphs::new([paragraph]); let obj = LayoutObj::new(content)?; @@ -1174,18 +1206,23 @@ extern "C" fn new_show_passphrase() -> Obj { extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + + // cached allocated translated strings that get_page can reuse + let tr_contact_support_at = TR::addr_mismatch__contact_support_at.try_into()?; + let tr_support_url = TR::addr_mismatch__support_url.try_into()?; + let get_page = move |page_index| { assert!(page_index == 0); - let btn_layout = ButtonLayout::arrow_none_text("QUIT".into()); + let btn_layout = ButtonLayout::arrow_none_text(TR::buttons__quit.into()); let btn_actions = ButtonActions::cancel_none_confirm(); let ops = OpTextLayout::::new(theme::TEXT_NORMAL) - .text_bold(title.clone()) + .text_bold(title) .newline() .newline_half() - .text_normal("Please contact Trezor support at".into()) + .text_normal(tr_contact_support_at) .newline() - .text_bold("trezor.io/support".into()); + .text_bold(tr_support_url); let formatted = FormattedText::new(ops); Page::new(btn_layout, btn_actions, formatted) }; @@ -1200,8 +1237,8 @@ extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Ma extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let verb_cancel: Option = kwargs + let button: TString<'static> = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let verb_cancel: Option> = kwargs .get(Qstr::MP_QSTR_verb_cancel) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; @@ -1221,7 +1258,7 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu let obj = LayoutObj::new(Frame::new( title, - ShowMore::>, StrBuffer>::new( + ShowMore::>>::new( paragraphs.into_paragraphs(), verb_cancel, button, @@ -1235,7 +1272,7 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu extern "C" fn new_confirm_more(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let button: TString<'static> = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let mut paragraphs = ParagraphVecLong::new(); @@ -1265,18 +1302,19 @@ extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut // Decreasing bottom padding between paragraphs to fit one screen let paragraphs = Paragraphs::new([ - Paragraph::new(&theme::TEXT_BOLD, "Max rounds".into()).with_bottom_padding(2), + Paragraph::new(&theme::TEXT_BOLD, TR::coinjoin__max_rounds.try_into()?) + .with_bottom_padding(2), Paragraph::new(&theme::TEXT_MONO, max_rounds), - Paragraph::new(&theme::TEXT_BOLD, "Max mining fee".into()) + Paragraph::new(&theme::TEXT_BOLD, TR::coinjoin__max_mining_fee.try_into()?) .with_bottom_padding(2) .no_break(), Paragraph::new(&theme::TEXT_MONO, max_feerate).with_bottom_padding(2), ]); content_in_button_page( - "AUTHORIZE COINJOIN".into(), + TR::coinjoin__title.try_into()?, paragraphs, - "HOLD TO CONFIRM".into(), + TR::buttons__hold_to_confirm.into(), None, true, ) @@ -1300,9 +1338,7 @@ extern "C" fn new_request_passphrase(n_args: usize, args: *const Obj, kwargs: *m let block = |_args: &[Obj], kwargs: &Map| { let prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; - let obj = LayoutObj::new( - Frame::new(prompt, PassphraseEntry::::new()).with_title_centered(), - )?; + let obj = LayoutObj::new(Frame::new(prompt, PassphraseEntry::new()).with_title_centered())?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1313,8 +1349,7 @@ extern "C" fn new_request_bip39(n_args: usize, args: *const Obj, kwargs: *mut Ma let prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; let obj = LayoutObj::new( - Frame::new(prompt, WordlistEntry::::new(WordlistType::Bip39)) - .with_title_centered(), + Frame::new(prompt, WordlistEntry::new(WordlistType::Bip39)).with_title_centered(), )?; Ok(obj.into()) }; @@ -1326,11 +1361,7 @@ extern "C" fn new_request_slip39(n_args: usize, args: *const Obj, kwargs: *mut M let prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; let obj = LayoutObj::new( - Frame::new( - prompt, - WordlistEntry::::new(WordlistType::Slip39), - ) - .with_title_centered(), + Frame::new(prompt, WordlistEntry::new(WordlistType::Slip39)).with_title_centered(), )?; Ok(obj.into()) }; @@ -1343,7 +1374,7 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let words_iterable: Obj = kwargs.get(Qstr::MP_QSTR_words)?; // There are only 3 words, but SimpleChoice requires 5 elements - let words: Vec = iter_into_vec(words_iterable)?; + let words: Vec, 5> = util::iter_into_vec(words_iterable)?; // Returning the index of the selected word, not the word itself let obj = LayoutObj::new( @@ -1363,12 +1394,11 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = |_args: &[Obj], kwargs: &Map| { let share_words_obj: Obj = kwargs.get(Qstr::MP_QSTR_share_words)?; - let share_words: Vec = iter_into_vec(share_words_obj)?; + let share_words: Vec = util::iter_into_vec(share_words_obj)?; let cancel_btn = Some(ButtonDetails::up_arrow_icon()); - let confirm_btn = Some( - ButtonDetails::::text("HOLD TO CONFIRM".into()).with_default_duration(), - ); + let confirm_btn = + Some(ButtonDetails::text(TR::buttons__hold_to_confirm.into()).with_default_duration()); let obj = LayoutObj::new( ButtonPage::new(ShareWords::new(share_words), theme::BG) @@ -1388,11 +1418,7 @@ extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut M let count: u32 = kwargs.get(Qstr::MP_QSTR_count)?.try_into()?; let obj = LayoutObj::new( - Frame::new( - title, - NumberInput::::new(min_count, max_count, count), - ) - .with_title_centered(), + Frame::new(title, NumberInput::new(min_count, max_count, count)).with_title_centered(), )?; Ok(obj.into()) }; @@ -1401,7 +1427,7 @@ extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut M extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let button: TString<'static> = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let active: usize = kwargs.get(Qstr::MP_QSTR_active)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; @@ -1442,29 +1468,32 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let button: TString<'static> = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; let show_info: bool = kwargs.get(Qstr::MP_QSTR_show_info)?.try_into()?; let mut paragraphs = ParagraphVecShort::new(); paragraphs.add(Paragraph::new(&theme::TEXT_NORMAL, description)); if show_info { - let first = "You'll only have to select the first 2-4 letters of each word."; - let second = - "Position of the cursor will change between entries for enhanced security."; paragraphs - .add(Paragraph::new(&theme::TEXT_NORMAL, first.into())) - .add(Paragraph::new(&theme::TEXT_NORMAL, second.into())); + .add(Paragraph::new( + &theme::TEXT_NORMAL, + TR::recovery__only_first_n_letters.try_into()?, + )) + .add(Paragraph::new( + &theme::TEXT_NORMAL, + TR::recovery__cursor_will_change.try_into()?, + )); } let title = if dry_run { - "BACKUP CHECK" + TR::recovery__title_dry_run } else { - "RECOVER WALLET" + TR::recovery__title }; content_in_button_page( - title.into(), + title.try_into()?, paragraphs.into_paragraphs(), button, Some("".into()), @@ -1476,9 +1505,9 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = |_args: &[Obj], _kwargs: &Map| { - let title: StrBuffer = "NUMBER OF WORDS".into(); + let title: StrBuffer = TR::word_count__title.try_into()?; - let choices: Vec = ["12", "18", "20", "24", "33"] + let choices: Vec, 5> = ["12", "18", "20", "24", "33"] .map(|num| num.into()) .into_iter() .collect(); @@ -1509,7 +1538,13 @@ extern "C" fn new_show_group_share_success( Paragraph::new(&theme::TEXT_BOLD, l3), ]); - content_in_button_page("".into(), paragraphs, "CONTINUE".into(), None, false) + content_in_button_page( + "".into(), + paragraphs, + TR::buttons__continue.into(), + None, + false, + ) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -1589,7 +1624,7 @@ extern "C" fn new_show_lockscreen(n_args: usize, args: *const Obj, kwargs: *mut let coinjoin_authorized: bool = kwargs.get_or(Qstr::MP_QSTR_coinjoin_authorized, false)?; let skip_first_paint: bool = kwargs.get(Qstr::MP_QSTR_skip_first_paint)?.try_into()?; - let obj = LayoutObj::new(Lockscreen::new(label, bootscreen, coinjoin_authorized))?; + let obj = LayoutObj::new(Lockscreen::new(label, bootscreen, coinjoin_authorized)?)?; if skip_first_paint { obj.skip_first_paint(); } @@ -1608,7 +1643,7 @@ extern "C" fn new_confirm_firmware_update( let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let fingerprint: StrBuffer = kwargs.get(Qstr::MP_QSTR_fingerprint)?.try_into()?; - let title = "UPDATE FIRMWARE"; + let title = TR::firmware_update__title; let message = Label::left_aligned(description, theme::TEXT_NORMAL).vertically_centered(); let fingerprint = Label::left_aligned( fingerprint, @@ -1617,8 +1652,8 @@ extern "C" fn new_confirm_firmware_update( .vertically_centered(); let obj = LayoutObj::new( - Confirm::new(theme::BG, title, message, None, "INSTALL".into(), false) - .with_info_screen(StrBuffer::from("FW FINGERPRINT"), fingerprint), + Confirm::new(theme::BG, title, message, None, TR::buttons__install, false) + .with_info_screen(TR::firmware_update__title_fingerprint, fingerprint), )?; Ok(obj.into()) }; @@ -1639,6 +1674,16 @@ pub extern "C" fn upy_check_homescreen_format(data: Obj) -> Obj { unsafe { util::try_or_raise(block) } } +extern "C" fn new_show_wait_text(message: Obj) -> Obj { + let block = || { + let message: TString<'static> = message.try_into()?; + let obj = LayoutObj::new(Connect::new(message, theme::FG, theme::BG))?; + Ok(obj.into()) + }; + + unsafe { util::try_or_raise(block) } +} + #[no_mangle] pub static mp_module_trezorui2: Module = obj_module! { Qstr::MP_QSTR___name__ => Qstr::MP_QSTR_trezorui2.to_obj(), @@ -2053,4 +2098,8 @@ pub static mp_module_trezorui2: Module = obj_module! { /// ) -> None: /// """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" Qstr::MP_QSTR_confirm_firmware_update => obj_fn_kw!(0, new_confirm_firmware_update).as_obj(), + + /// def show_wait_text(/, message: str) -> None: + /// """Show single-line text in the middle of the screen.""" + Qstr::MP_QSTR_show_wait_text => obj_fn_1!(new_show_wait_text).as_obj(), }; diff --git a/core/embed/rust/src/ui/model_tt/component/address_details.rs b/core/embed/rust/src/ui/model_tt/component/address_details.rs index c563c2c2f..e9ec605d8 100644 --- a/core/embed/rust/src/ui/model_tt/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tt/component/address_details.rs @@ -2,7 +2,9 @@ use heapless::Vec; use crate::{ error::Error, + micropython::buffer::StrBuffer, strutil::StringType, + translations::TR, ui::{ component::{ text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, @@ -18,7 +20,7 @@ const MAX_XPUBS: usize = 16; pub struct AddressDetails { qr_code: Frame, - details: Frame>, T>, + details: Frame>, T>, xpub_view: Frame>, T>, xpubs: Vec<(T, T), MAX_XPUBS>, xpub_page_count: Vec, @@ -34,21 +36,24 @@ where qr_address: T, case_sensitive: bool, details_title: T, - account: Option, - path: Option, + account: Option, + path: Option, ) -> Result where T: From<&'static str>, { let mut para = ParagraphVecShort::new(); if let Some(a) = account { - para.add(Paragraph::new(&theme::TEXT_NORMAL, "Account:".into())); + para.add(Paragraph::new( + &theme::TEXT_NORMAL, + TR::words__account_colon.try_into()?, + )); para.add(Paragraph::new(&theme::TEXT_MONO, a)); } if let Some(p) = path { para.add(Paragraph::new( &theme::TEXT_NORMAL, - "Derivation path:".into(), + TR::address_details__derivation_path.try_into()?, )); para.add(Paragraph::new(&theme::TEXT_MONO, p)); } diff --git a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs b/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs index 4f1091aba..0f79bb790 100644 --- a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs @@ -50,8 +50,8 @@ pub struct Confirm { title: ConfirmTitle, message: Child>, alert: Option>>, - left_button: Child>, - right_button: Child>, + left_button: Child>, + right_button: Child>, info: Option>, show_info: bool, } @@ -62,8 +62,8 @@ where { pub fn new( bg_color: Color, - left_button: Button<&'static str>, - right_button: Button<&'static str>, + left_button: Button, + right_button: Button, title: ConfirmTitle, message: Label, ) -> Self { diff --git a/core/embed/rust/src/ui/model_tt/component/button.rs b/core/embed/rust/src/ui/model_tt/component/button.rs index e8e31ebdc..4a319070e 100644 --- a/core/embed/rust/src/ui/model_tt/component/button.rs +++ b/core/embed/rust/src/ui/model_tt/component/button.rs @@ -329,10 +329,10 @@ where t.component("Button"); match &self.content { ButtonContent::Empty => {} - ButtonContent::Text(text) => t.string("text", text.as_ref()), + ButtonContent::Text(text) => t.string("text", text.as_ref().into()), ButtonContent::Icon(_) => t.bool("icon", true), ButtonContent::IconAndText(content) => { - t.string("text", content.text); + t.string("text", content.text.into()); t.bool("icon", true); } ButtonContent::IconBlend(_, _, _) => t.bool("icon", true), diff --git a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs index 1bde6d975..5a615328f 100644 --- a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs @@ -1,7 +1,10 @@ use core::mem; use crate::{ + error::Error, maybe_trace::MaybeTrace, + micropython::buffer::StrBuffer, + translations::TR, ui::{ component::{ base::Never, painter, Child, Component, ComponentExt, Empty, Event, EventCtx, Label, @@ -25,7 +28,7 @@ const LOADER_SPEED: u16 = 5; pub struct CoinJoinProgress { value: u16, indeterminate: bool, - content: Child, &'static str>>, + content: Child, StrBuffer>>, // Label is not a child since circular loader paints large black rectangle which overlaps it. // To work around this, draw label every time loader is drawn. label: Label, @@ -38,12 +41,16 @@ where pub fn new( text: T, indeterminate: bool, - ) -> CoinJoinProgress + MaybeTrace> + ) -> Result + MaybeTrace>, Error> where T: AsRef, { let style = theme::label_coinjoin_progress(); - let label = Label::centered("DO NOT DISCONNECT YOUR TREZOR!", style).vertically_centered(); + let label = Label::centered( + TryInto::::try_into(TR::coinjoin__title_do_not_disconnect)?, + style, + ) + .vertically_centered(); let bg = painter::rect_painter(style.background_color, theme::BG); let inner = (bg, label); CoinJoinProgress::with_background(text, inner, indeterminate) @@ -55,18 +62,18 @@ where T: AsRef, U: Component, { - pub fn with_background(text: T, inner: U, indeterminate: bool) -> Self { - Self { + pub fn with_background(text: T, inner: U, indeterminate: bool) -> Result { + Ok(Self { value: 0, indeterminate, content: Frame::centered( theme::label_title(), - "COINJOIN IN PROGRESS", + TR::coinjoin__title_progress.try_into()?, Split::bottom(RECTANGLE_HEIGHT, 0, Empty, inner), ) .into_child(), label: Label::centered(text, theme::TEXT_NORMAL), - } + }) } } diff --git a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs index 47922aa52..ed188815e 100644 --- a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs @@ -1,7 +1,9 @@ mod render; use crate::{ + strutil::TString, time::{Duration, Instant}, + translations::TR, trezorhal::usb::usb_configured, ui::{ component::{Component, Event, EventCtx, Pad, TimerToken}, @@ -44,9 +46,9 @@ const LOADER_OFFSET: Offset = Offset::y(-10); const LOADER_DELAY: Duration = Duration::from_millis(500); const LOADER_DURATION: Duration = Duration::from_millis(2000); -pub struct Homescreen { - label: T, - notification: Option<(T, u8)>, +pub struct Homescreen { + label: TString<'static>, + notification: Option<(TString<'static>, u8)>, hold_to_lock: bool, loader: Loader, pad: Pad, @@ -58,11 +60,12 @@ pub enum HomescreenMsg { Dismissed, } -impl Homescreen -where - T: AsRef, -{ - pub fn new(label: T, notification: Option<(T, u8)>, hold_to_lock: bool) -> Self { +impl Homescreen { + pub fn new( + label: TString<'static>, + notification: Option<(TString<'static>, u8)>, + hold_to_lock: bool, + ) -> Self { Self { label, notification, @@ -87,14 +90,14 @@ where if !usb_configured() { let (color, icon) = Self::level_to_style(0); Some(HomescreenNotification { - text: "NO USB CONNECTION", + text: TR::homescreen__title_no_usb_connection.into(), icon, color, }) - } else if let Some((notification, level)) = &self.notification { - let (color, icon) = Self::level_to_style(*level); + } else if let Some((notification, level)) = self.notification { + let (color, icon) = Self::level_to_style(level); Some(HomescreenNotification { - text: notification.as_ref(), + text: notification, icon, color, }) @@ -104,13 +107,15 @@ where } fn paint_loader(&mut self) { - display::text_center( - TOP_CENTER + Offset::y(HOLD_Y), - "Locking the device...", - Font::NORMAL, - theme::FG, - theme::BG, - ); + TR::progress__locking_device.map_translated(|t| { + display::text_center( + TOP_CENTER + Offset::y(HOLD_Y), + t, + Font::NORMAL, + theme::FG, + theme::BG, + ) + }); self.loader.paint() } @@ -170,10 +175,7 @@ where } } -impl Component for Homescreen -where - T: AsRef, -{ +impl Component for Homescreen { type Msg = HomescreenMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -200,7 +202,7 @@ where label_style.text_color = theme::FG; let text = HomescreenText { - text: self.label.as_ref(), + text: self.label, style: label_style, offset: Offset::y(LABEL_Y), icon: None, @@ -260,21 +262,21 @@ where } #[cfg(feature = "ui_debug")] -impl> crate::trace::Trace for Homescreen { +impl crate::trace::Trace for Homescreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Homescreen"); - t.string("label", self.label.as_ref()); + t.string("label", self.label); } } -pub struct Lockscreen { - label: T, +pub struct Lockscreen { + label: TString<'static>, bootscreen: bool, coinjoin_authorized: bool, } -impl Lockscreen { - pub fn new(label: T, bootscreen: bool, coinjoin_authorized: bool) -> Self { +impl Lockscreen { + pub fn new(label: TString<'static>, bootscreen: bool, coinjoin_authorized: bool) -> Self { Lockscreen { label, bootscreen, @@ -283,10 +285,7 @@ impl Lockscreen { } } -impl Component for Lockscreen -where - T: AsRef, -{ +impl Component for Lockscreen { type Msg = HomescreenMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -302,9 +301,12 @@ where fn paint(&mut self) { let (locked, tap) = if self.bootscreen { - ("NOT CONNECTED", "Tap to connect") + ( + TR::lockscreen__title_not_connected, + TR::lockscreen__tap_to_connect, + ) } else { - ("LOCKED", "Tap to unlock") + (TR::lockscreen__title_locked, TR::lockscreen__tap_to_unlock) }; let mut label_style = theme::TEXT_DEMIBOLD; @@ -312,25 +314,25 @@ where let mut texts: &[HomescreenText] = &[ HomescreenText { - text: "", + text: "".into(), style: theme::TEXT_NORMAL, offset: Offset::new(2, COINJOIN_Y), icon: Some(theme::ICON_COINJOIN), }, HomescreenText { - text: locked, + text: locked.into(), style: theme::TEXT_BOLD, offset: Offset::y(LOCKED_Y), icon: Some(theme::ICON_LOCK), }, HomescreenText { - text: tap, + text: tap.into(), style: theme::TEXT_NORMAL, offset: Offset::y(TAP_Y), icon: None, }, HomescreenText { - text: self.label.as_ref(), + text: self.label, style: label_style, offset: Offset::y(LABEL_Y), icon: None, @@ -399,7 +401,7 @@ fn is_image_toif(buffer: &[u8]) -> bool { } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for Lockscreen { +impl crate::trace::Trace for Lockscreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Lockscreen"); } diff --git a/core/embed/rust/src/ui/model_tt/component/homescreen/render.rs b/core/embed/rust/src/ui/model_tt/component/homescreen/render.rs index bcf3afec3..f14649a8a 100644 --- a/core/embed/rust/src/ui/model_tt/component/homescreen/render.rs +++ b/core/embed/rust/src/ui/model_tt/component/homescreen/render.rs @@ -1,4 +1,5 @@ use crate::{ + strutil::TString, trezorhal::{ buffers::{ BufferBlurring, BufferBlurringTotals, BufferJpeg, BufferLine16bpp, BufferLine4bpp, @@ -24,15 +25,15 @@ use crate::{ #[derive(Clone, Copy)] pub struct HomescreenText<'a> { - pub text: &'a str, + pub text: TString<'a>, pub style: TextStyle, pub offset: Offset, pub icon: Option, } #[derive(Clone, Copy)] -pub struct HomescreenNotification<'a> { - pub text: &'a str, +pub struct HomescreenNotification { + pub text: TString<'static>, pub icon: Icon, pub color: Color, } @@ -216,7 +217,9 @@ fn homescreen_position_text( buffer: &mut BufferText, icon_buffer: &mut [u8], ) -> HomescreenTextInfo { - let text_width = display::text_width(text.text, text.style.text_font.into()); + let text_width = text + .text + .map(|t| display::text_width(t, text.style.text_font.into())); let font_max_height = display::text_max_height(text.style.text_font.into()); let font_baseline = display::text_baseline(text.style.text_font.into()); let text_width_clamped = text_width.clamp(0, screen().width()); @@ -253,7 +256,8 @@ fn homescreen_position_text( None }; - display::text_into_buffer(text.text, text.style.text_font.into(), buffer, 0); + text.text + .map(|t| display::text_into_buffer(t, text.style.text_font.into(), buffer, 0)); HomescreenTextInfo { text_area, diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs index d574cad5e..133c55b92 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs @@ -385,6 +385,6 @@ impl Component for Input { impl crate::trace::Trace for PassphraseKeyboard { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("PassphraseKeyboard"); - t.string("passphrase", self.passphrase()); + t.string("passphrase", self.passphrase().into()); } } diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs index 9f2ccde6e..82a76081d 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs @@ -475,8 +475,8 @@ where unwrap!(digits_order.push_str(text)); } } - t.string("digits_order", &digits_order); - t.string("pin", self.textbox.inner().pin()); + t.string("digits_order", digits_order.as_str().into()); + t.string("pin", self.textbox.inner().pin().into()); t.bool("display_digits", self.textbox.inner().display_digits); } } diff --git a/core/embed/rust/src/ui/model_tt/component/mod.rs b/core/embed/rust/src/ui/model_tt/component/mod.rs index 4a9daaa06..ec6d1b0b7 100644 --- a/core/embed/rust/src/ui/model_tt/component/mod.rs +++ b/core/embed/rust/src/ui/model_tt/component/mod.rs @@ -1,6 +1,8 @@ +#[cfg(feature = "translations")] mod address_details; pub mod bl_confirm; mod button; +#[cfg(feature = "translations")] mod coinjoin_progress; mod dialog; mod fido; @@ -12,7 +14,9 @@ mod frame; mod homescreen; mod keyboard; mod loader; +#[cfg(feature = "translations")] mod number_input; +#[cfg(feature = "translations")] mod page; mod progress; mod result; @@ -21,11 +25,13 @@ mod simple_page; mod swipe; mod welcome_screen; +#[cfg(feature = "translations")] pub use address_details::AddressDetails; pub use button::{ Button, ButtonContent, ButtonMsg, ButtonStyle, ButtonStyleSheet, CancelConfirmMsg, CancelInfoConfirmMsg, IconText, SelectWordMsg, }; +#[cfg(feature = "translations")] pub use coinjoin_progress::CoinJoinProgress; pub use dialog::{Dialog, DialogMsg, IconDialog}; pub use error::ErrorScreen; @@ -42,7 +48,9 @@ pub use keyboard::{ word_count::{SelectWordCount, SelectWordCountMsg}, }; pub use loader::{Loader, LoaderMsg, LoaderStyle, LoaderStyleSheet}; +#[cfg(feature = "translations")] pub use number_input::{NumberInputDialog, NumberInputDialogMsg}; +#[cfg(feature = "translations")] pub use page::ButtonPage; pub use progress::Progress; pub use result::{ResultFooter, ResultScreen, ResultStyle}; diff --git a/core/embed/rust/src/ui/model_tt/component/number_input.rs b/core/embed/rust/src/ui/model_tt/component/number_input.rs index 8edb37bbc..e5745870a 100644 --- a/core/embed/rust/src/ui/model_tt/component/number_input.rs +++ b/core/embed/rust/src/ui/model_tt/component/number_input.rs @@ -1,5 +1,8 @@ use crate::{ + error::Error, + micropython::buffer::StrBuffer, strutil::{self, StringType}, + translations::TR, ui::{ component::{ base::ComponentExt, @@ -28,8 +31,8 @@ where input: Child, paragraphs: Child>>, paragraphs_pad: Pad, - info_button: Child>, - confirm_button: Child>, + info_button: Child>, + confirm_button: Child>, } impl NumberInputDialog @@ -37,19 +40,19 @@ where F: Fn(u32) -> T, T: StringType, { - pub fn new(min: u32, max: u32, init_value: u32, description_func: F) -> Self { + pub fn new(min: u32, max: u32, init_value: u32, description_func: F) -> Result { let text = description_func(init_value); - Self { + Ok(Self { area: Rect::zero(), description_func, input: NumberInput::new(min, max, init_value).into_child(), paragraphs: Paragraphs::new(Paragraph::new(&theme::TEXT_NORMAL, text)).into_child(), paragraphs_pad: Pad::with_background(theme::BG), - info_button: Button::with_text("INFO").into_child(), - confirm_button: Button::with_text("CONTINUE") + info_button: Button::with_text(TR::buttons__info.try_into()?).into_child(), + confirm_button: Button::with_text(TR::buttons__continue.try_into()?) .styled(theme::button_confirm()) .into_child(), - } + }) } fn update_text(&mut self, ctx: &mut EventCtx, value: u32) { diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/model_tt/component/page.rs index f2b3be19e..5b874d6c9 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/model_tt/component/page.rs @@ -1,5 +1,8 @@ use crate::{ + error::Error, + micropython::buffer::StrBuffer, time::Instant, + translations::TR, ui::{ component::{paginated::PageMsg, Component, ComponentExt, Event, EventCtx, Pad, Paginate}, constant, @@ -40,6 +43,19 @@ pub struct ButtonPage { fade: Option, } +impl ButtonPage +where + T: Paginate, + T: Component, +{ + pub fn with_hold(mut self) -> Result { + self.button_confirm = Button::with_text(TR::buttons__hold_to_confirm.try_into()?) + .styled(theme::button_confirm()); + self.loader = Some(Loader::new()); + Ok(self) + } +} + impl ButtonPage where T: Paginate, @@ -87,13 +103,6 @@ where self } - pub fn with_hold(mut self) -> Self { - self.button_confirm = - Button::with_text("HOLD TO CONFIRM".into()).styled(theme::button_confirm()); - self.loader = Some(Loader::new()); - self - } - pub fn with_back_button(mut self) -> Self { self.cancel_from_any_page = true; self.button_prev = Button::with_icon(theme::ICON_BACK).initially_enabled(false); diff --git a/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs b/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs index cf6e789b6..b0526f8aa 100644 --- a/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs @@ -74,6 +74,6 @@ impl crate::trace::Trace for WelcomeScreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("WelcomeScreen"); #[cfg(not(feature = "bootloader"))] - t.string("model", model::FULL_NAME); + t.string("model", model::FULL_NAME.into()); } } diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 6a4a50075..6590b476f 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -13,11 +13,13 @@ use crate::{ qstr::Qstr, util, }, - strutil::StringType, + strutil::{StringType, TString}, + translations::TR, trezorhal::model, ui::{ component::{ base::ComponentExt, + connect::Connect, image::BlendedImage, paginated::{PageMsg, Paginate}, painter, @@ -279,10 +281,7 @@ where } } -impl ComponentMsgObj for Homescreen -where - T: AsRef, -{ +impl ComponentMsgObj for Homescreen { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { match msg { HomescreenMsg::Dismissed => Ok(CANCELLED.as_obj()), @@ -290,10 +289,7 @@ where } } -impl ComponentMsgObj for Lockscreen -where - T: AsRef, -{ +impl ComponentMsgObj for Lockscreen { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result { match msg { HomescreenMsg::Dismissed => Ok(CANCELLED.as_obj()), @@ -407,7 +403,7 @@ extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut M }; let mut page = if hold { - ButtonPage::new(paragraphs, theme::BG).with_hold() + ButtonPage::new(paragraphs, theme::BG).with_hold()? } else { ButtonPage::new(paragraphs, theme::BG).with_cancel_confirm(verb_cancel, verb) }; @@ -532,7 +528,7 @@ impl ConfirmBlobParams { page = page.with_cancel_confirm(self.verb_cancel, Some(verb)) } if self.hold { - page = page.with_hold() + page = page.with_hold()? } let mut frame = Frame::left_aligned(theme::label_title(), self.title, page); if let Some(subtitle) = self.subtitle { @@ -577,7 +573,8 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: Option = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; - let verb: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_verb, "CONFIRM".into())?; + let verb: StrBuffer = + kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.try_into()?)?; let extra: Option = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; let data: Obj = kwargs.get(Qstr::MP_QSTR_data)?; let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; @@ -627,10 +624,10 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m &theme::TEXT_MONO, )?; let page: ButtonPage<_, StrBuffer> = if hold { - ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold() + ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold()? } else { ButtonPage::new(paragraphs.into_paragraphs(), theme::BG) - .with_cancel_confirm(None, Some("CONFIRM".into())) + .with_cancel_confirm(None, Some(TR::buttons__confirm.try_into()?)) }; let obj = LayoutObj::new(Frame::left_aligned(theme::label_title(), title, page))?; Ok(obj.into()) @@ -663,7 +660,8 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m _ => return Err(value_error!("Invalid image.")), }; - let buttons = Button::cancel_confirm_text(None, Some("CHANGE")); + let tr_change: StrBuffer = TR::buttons__change.try_into()?; + let buttons = Button::cancel_confirm_text(None, Some(tr_change)); let obj = LayoutObj::new(Frame::centered( theme::label_title(), title, @@ -680,16 +678,13 @@ extern "C" fn new_confirm_reset_device(n_args: usize, args: *const Obj, kwargs: let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let paragraphs = Paragraphs::new([ - Paragraph::new( - &theme::TEXT_NORMAL, - StrBuffer::from( - "By continuing you agree\nto Trezor Company's\nterms and conditions.\r", - ), - ), - Paragraph::new(&theme::TEXT_NORMAL, StrBuffer::from("More info at")), - Paragraph::new(&theme::TEXT_DEMIBOLD, StrBuffer::from("trezor.io/tos")), - ]); + let par_array: [Paragraph; 3] = [ + Paragraph::new(&theme::TEXT_NORMAL, TR::reset__by_continuing.try_into()?) + .with_bottom_padding(17), // simulating a carriage return + Paragraph::new(&theme::TEXT_NORMAL, TR::reset__more_info_at.try_into()?), + Paragraph::new(&theme::TEXT_DEMIBOLD, TR::reset__tos_link.try_into()?), + ]; + let paragraphs = Paragraphs::new(par_array); let buttons = Button::cancel_confirm( Button::with_icon(theme::ICON_CANCEL), Button::with_text(button).styled(theme::button_confirm()), @@ -816,7 +811,7 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma paragraphs.add(Paragraph::new(&theme::TEXT_MONO, value)); } let mut page: ButtonPage<_, StrBuffer> = - ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold(); + ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold()?; if cancel_arrow { page = page.with_cancel_arrow() } @@ -840,23 +835,27 @@ extern "C" fn new_confirm_modify_output(n_args: usize, args: *const Obj, kwargs: let amount_new: StrBuffer = kwargs.get(Qstr::MP_QSTR_amount_new)?.try_into()?; let description = if sign < 0 { - "Decrease amount by:" + TR::modify_amount__decrease_amount.try_into()? } else { - "Increase amount by:" + TR::modify_amount__increase_amount.try_into()? }; let paragraphs = Paragraphs::new([ - Paragraph::new(&theme::TEXT_NORMAL, description.into()), + Paragraph::new(&theme::TEXT_NORMAL, description), Paragraph::new(&theme::TEXT_MONO, amount_change), - Paragraph::new(&theme::TEXT_NORMAL, "New amount:".into()), + Paragraph::new( + &theme::TEXT_NORMAL, + TR::modify_amount__new_amount.try_into()?, + ), Paragraph::new(&theme::TEXT_MONO, amount_new), ]); + let tr_title: StrBuffer = TR::modify_amount__title.try_into()?; let obj = LayoutObj::new(Frame::left_aligned( theme::label_title(), - "MODIFY AMOUNT", + tr_title, ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG) - .with_cancel_confirm(Some("^".into()), Some("CONTINUE".into())), + .with_cancel_confirm(Some("^".into()), Some(TR::buttons__continue.try_into()?)), ))?; Ok(obj.into()) }; @@ -871,19 +870,27 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m let total_fee_new: StrBuffer = kwargs.get(Qstr::MP_QSTR_total_fee_new)?.try_into()?; let (description, change, total_label) = match sign { - s if s < 0 => ("Decrease fee by:", user_fee_change, "New transaction fee:"), - s if s > 0 => ("Increase fee by:", user_fee_change, "New transaction fee:"), + s if s < 0 => ( + TR::modify_fee__decrease_fee.try_into()?, + user_fee_change, + TR::modify_fee__new_transaction_fee.try_into()?, + ), + s if s > 0 => ( + TR::modify_fee__increase_fee.try_into()?, + user_fee_change, + TR::modify_fee__new_transaction_fee.try_into()?, + ), _ => ( - "Fee did not change.\r", + TR::modify_fee__no_change.try_into()?, StrBuffer::empty(), - "Transaction fee:", + TR::modify_fee__transaction_fee.try_into()?, ), }; let paragraphs = Paragraphs::new([ - Paragraph::new(&theme::TEXT_NORMAL, description.into()), + Paragraph::new(&theme::TEXT_NORMAL, description), Paragraph::new(&theme::TEXT_MONO, change), - Paragraph::new(&theme::TEXT_NORMAL, total_label.into()), + Paragraph::new(&theme::TEXT_NORMAL, total_label), Paragraph::new(&theme::TEXT_MONO, total_fee_new), ]); @@ -892,7 +899,7 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m theme::label_title(), title, ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG) - .with_hold() + .with_hold()? .with_swipe_left(), ) .with_info_button(), @@ -910,7 +917,8 @@ fn new_show_modal( let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let value: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_value, StrBuffer::empty())?; let description: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_description, StrBuffer::empty())?; - let button: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_button, "CONTINUE".into())?; + let button: StrBuffer = + kwargs.get_or(Qstr::MP_QSTR_button, TR::buttons__continue.try_into()?)?; let allow_cancel: bool = kwargs.get_or(Qstr::MP_QSTR_allow_cancel, true)?; let time_ms: u32 = kwargs.get_or(Qstr::MP_QSTR_time_ms, 0)?; @@ -1004,7 +1012,8 @@ extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map let controls = Button::cancel_confirm( Button::with_icon(theme::ICON_CANCEL), - Button::with_text("CONFIRM").styled(theme::button_confirm()), + Button::::with_text(TR::buttons__confirm.try_into()?) + .styled(theme::button_confirm()), true, ); @@ -1061,9 +1070,9 @@ extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) - extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let description: StrBuffer = "Please contact Trezor support at".into(); - let url: StrBuffer = "trezor.io/support".into(); - let button = "QUIT"; + let description: StrBuffer = TR::addr_mismatch__contact_support_at.try_into()?; + let url: StrBuffer = TR::addr_mismatch__support_url.try_into()?; + let button: StrBuffer = TR::buttons__quit.try_into()?; let icon = BlendedImage::new( theme::IMAGE_BG_OCTAGON, @@ -1211,16 +1220,20 @@ extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut let max_feerate: StrBuffer = kwargs.get(Qstr::MP_QSTR_max_feerate)?.try_into()?; let paragraphs = Paragraphs::new([ - Paragraph::new(&theme::TEXT_NORMAL, "Max rounds".into()), + Paragraph::new(&theme::TEXT_NORMAL, TR::coinjoin__max_rounds.try_into()?), Paragraph::new(&theme::TEXT_MONO, max_rounds), - Paragraph::new(&theme::TEXT_NORMAL, "Max mining fee".into()), + Paragraph::new( + &theme::TEXT_NORMAL, + TR::coinjoin__max_mining_fee.try_into()?, + ), Paragraph::new(&theme::TEXT_MONO, max_feerate), ]); + let tr_title: StrBuffer = TR::coinjoin__title.try_into()?; let obj = LayoutObj::new(Frame::left_aligned( theme::label_title(), - "AUTHORIZE COINJOIN", - ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG).with_hold(), + tr_title, + ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG).with_hold()?, ))?; Ok(obj.into()) }; @@ -1234,7 +1247,7 @@ extern "C" fn new_request_pin(n_args: usize, args: *const Obj, kwargs: *mut Map) let allow_cancel: bool = kwargs.get_or(Qstr::MP_QSTR_allow_cancel, true)?; let warning: bool = kwargs.get_or(Qstr::MP_QSTR_wrong_pin, false)?; let warning = if warning { - Some("Wrong PIN".into()) + Some(TR::pin__wrong_pin.try_into()?) } else { None }; @@ -1305,7 +1318,7 @@ extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut theme::label_title(), title, ButtonPage::<_, StrBuffer>::new(paragraphs.into_paragraphs(), theme::BG) - .with_hold() + .with_hold()? .without_cancel(), ))?; Ok(obj.into()) @@ -1334,7 +1347,7 @@ extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut M let obj = LayoutObj::new(Frame::left_aligned( theme::label_title(), title, - NumberInputDialog::new(min_count, max_count, count, callback), + NumberInputDialog::new(min_count, max_count, count, callback)?, ))?; Ok(obj.into()) }; @@ -1398,10 +1411,10 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut ]) .with_spacing(theme::RECOVERY_SPACING); - let notification = if dry_run { - "BACKUP CHECK" + let notification: StrBuffer = if dry_run { + TR::recovery__title_dry_run.try_into()? } else { - "RECOVER WALLET" + TR::recovery__title.try_into()? }; let obj = if info_button { @@ -1410,7 +1423,10 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut notification, Dialog::new( paragraphs, - Button::cancel_info_confirm("CONTINUE", "MORE INFO"), + Button::::cancel_info_confirm( + TR::buttons__continue.try_into()?, + TR::buttons__more_info.try_into()?, + ), ), ))? } else { @@ -1428,15 +1444,15 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; - let title = if dry_run { - "BACKUP CHECK" + let title: StrBuffer = if dry_run { + TR::recovery__title_dry_run.try_into()? } else { - "RECOVER WALLET" + TR::recovery__title.try_into()? }; - let paragraphs = Paragraphs::new(Paragraph::new( + let paragraphs = Paragraphs::new(Paragraph::::new( &theme::TEXT_DEMIBOLD, - StrBuffer::from("Select the number of words in your backup."), + TR::recovery__select_num_of_words.try_into()?, )); let obj = LayoutObj::new(Frame::left_aligned( @@ -1460,9 +1476,11 @@ extern "C" fn new_show_group_share_success( let obj = LayoutObj::new(IconDialog::new_shares( lines, - theme::button_bar(Button::with_text("CONTINUE").map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) - })), + theme::button_bar( + Button::::with_text(TR::buttons__continue.try_into()?).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + }), + ), ))?; Ok(obj.into()) }; @@ -1481,11 +1499,12 @@ extern "C" fn new_show_remaining_shares(n_args: usize, args: *const Obj, kwargs: .add(Paragraph::new(&theme::TEXT_NORMAL, description).break_after()); } + let tr_title: StrBuffer = TR::recovery__title_remaining_shares.try_into()?; let obj = LayoutObj::new(Frame::left_aligned( theme::label_title(), - "REMAINING SHARES", + tr_title, ButtonPage::<_, StrBuffer>::new(paragraphs.into_paragraphs(), theme::BG) - .with_cancel_confirm(None, Some("CONTINUE".into())) + .with_cancel_confirm(None, Some(TR::buttons__continue.try_into()?)) .with_confirm_style(theme::button_default()) .without_cancel(), ))?; @@ -1523,7 +1542,7 @@ extern "C" fn new_show_progress_coinjoin(n_args: usize, args: *const Obj, kwargs // The second type parameter is actually not used in `new()` but we need to // provide it. - let progress = CoinJoinProgress::<_, Never>::new(title, indeterminate); + let progress = CoinJoinProgress::<_, Never>::new(title, indeterminate)?; let obj = if time_ms > 0 && indeterminate { let timeout = Timeout::new(time_ms); LayoutObj::new((timeout, progress.map(|_msg| None)))? @@ -1540,11 +1559,11 @@ extern "C" fn new_show_progress_coinjoin(n_args: usize, args: *const Obj, kwargs extern "C" fn new_show_homescreen(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let label: StrBuffer = kwargs + let label: TString<'static> = kwargs .get(Qstr::MP_QSTR_label)? .try_into_option()? .unwrap_or_else(|| model::FULL_NAME.into()); - let notification: Option = + let notification: Option> = kwargs.get(Qstr::MP_QSTR_notification)?.try_into_option()?; let notification_level: u8 = kwargs.get_or(Qstr::MP_QSTR_notification_level, 0)?; let hold: bool = kwargs.get(Qstr::MP_QSTR_hold)?.try_into()?; @@ -1562,7 +1581,7 @@ extern "C" fn new_show_homescreen(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_show_lockscreen(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let label: StrBuffer = kwargs + let label: TString<'static> = kwargs .get(Qstr::MP_QSTR_label)? .try_into_option()? .unwrap_or_else(|| model::FULL_NAME.into()); @@ -1600,16 +1619,18 @@ extern "C" fn new_confirm_firmware_update( let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let fingerprint: StrBuffer = kwargs.get(Qstr::MP_QSTR_fingerprint)?.try_into()?; - let title_str = StrBuffer::from("UPDATE FIRMWARE"); + let title_str = TR::firmware_update__title.try_into()?; let title = Label::left_aligned(title_str, theme::TEXT_BOLD).vertically_centered(); let msg = Label::left_aligned(description, theme::TEXT_NORMAL); - let left = Button::with_text("CANCEL").styled(theme::button_default()); - let right = Button::with_text("INSTALL").styled(theme::button_confirm()); + let left = + Button::with_text(TR::buttons__cancel.try_into()?).styled(theme::button_default()); + let right = + Button::with_text(TR::buttons__install.try_into()?).styled(theme::button_confirm()); let obj = LayoutObj::new( Confirm::new(theme::BG, left, right, ConfirmTitle::Text(title), msg).with_info( - "FW FINGERPRINT".into(), + TR::firmware_update__title_fingerprint.try_into()?, fingerprint, theme::button_moreinfo(), ), @@ -1619,6 +1640,16 @@ extern "C" fn new_confirm_firmware_update( unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } +extern "C" fn new_show_wait_text(message: Obj) -> Obj { + let block = || { + let message: TString<'static> = message.try_into()?; + let obj = LayoutObj::new(Connect::new(message, theme::FG, theme::BG))?; + Ok(obj.into()) + }; + + unsafe { util::try_or_raise(block) } +} + #[no_mangle] pub static mp_module_trezorui2: Module = obj_module! { Qstr::MP_QSTR___name__ => Qstr::MP_QSTR_trezorui2.to_obj(), @@ -2038,6 +2069,10 @@ pub static mp_module_trezorui2: Module = obj_module! { /// ) -> None: /// """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" Qstr::MP_QSTR_confirm_firmware_update => obj_fn_kw!(0, new_confirm_firmware_update).as_obj(), + + /// def show_wait_text(/, message: str) -> None: + /// """Show single-line text in the middle of the screen.""" + Qstr::MP_QSTR_show_wait_text => obj_fn_1!(new_show_wait_text).as_obj(), }; #[cfg(test)] diff --git a/core/embed/rust/src/ui/util.rs b/core/embed/rust/src/ui/util.rs index 4bba2cb2b..d4f997fb3 100644 --- a/core/embed/rust/src/ui/util.rs +++ b/core/embed/rust/src/ui/util.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::ShortString, + strutil::{ShortString, TString}, ui::{ component::text::TextStyle, display, @@ -102,29 +102,31 @@ pub fn icon_text_center( baseline: Point, icon: Icon, space: i16, - text: &str, + text: TString<'_>, style: TextStyle, text_offset: Offset, ) { - let icon_width = icon.toif.width(); - let text_width = style.text_font.text_width(text); - let text_height = style.text_font.text_height(); - let text_center = baseline + Offset::new((icon_width + space) / 2, text_height / 2); - let icon_center = baseline - Offset::x((text_width + space) / 2); - - display::text_center( - text_center + text_offset, - text, - style.text_font, - style.text_color, - style.background_color, - ); - icon.draw( - icon_center, - Alignment2D::CENTER, - style.text_color, - style.background_color, - ); + text.map(|t| { + let icon_width = icon.toif.width(); + let text_width = style.text_font.text_width(t); + let text_height = style.text_font.text_height(); + let text_center = baseline + Offset::new((icon_width + space) / 2, text_height / 2); + let icon_center = baseline - Offset::x((text_width + space) / 2); + + display::text_center( + text_center + text_offset, + t, + style.text_font, + style.text_color, + style.background_color, + ); + icon.draw( + icon_center, + Alignment2D::CENTER, + style.text_color, + style.background_color, + ); + }); } /// Convert char to a ShortString. diff --git a/core/embed/rust/trezorhal.h b/core/embed/rust/trezorhal.h index e34711d70..fd64ba5b8 100644 --- a/core/embed/rust/trezorhal.h +++ b/core/embed/rust/trezorhal.h @@ -12,6 +12,7 @@ #include "secbool.h" #include "storage.h" #include "touch.h" +#include "translations.h" #include "usb.h" #include "bip39.h" diff --git a/core/embed/trezorhal/stm32f4/mpu.c b/core/embed/trezorhal/stm32f4/mpu.c index 483eb780c..98de82371 100644 --- a/core/embed/trezorhal/stm32f4/mpu.c +++ b/core/embed/trezorhal/stm32f4/mpu.c @@ -125,12 +125,24 @@ void mpu_config_firmware(void) { MPU->RASR = MPU_RASR_ENABLE_Msk | MPU_RASR_ATTR_FLASH | LL_MPU_REGION_SIZE_64KB | LL_MPU_REGION_FULL_ACCESS | MPU_RASR_XN_Msk; - // Storage#2 (0x08110000 - 0x0811FFFF, 64 KiB, read-write, execute never) + +#ifdef USE_OPTIGA + // Translations + Storage#2 - secret (0x08104000 - 0x0811FFFF, 112 KiB, + // read-write, execute never) MPU->RNR = MPU_REGION_NUMBER2; - MPU->RBAR = FLASH_BASE + 0x110000; + MPU->RBAR = FLASH_BASE + 0x100000; MPU->RASR = MPU_RASR_ENABLE_Msk | MPU_RASR_ATTR_FLASH | - LL_MPU_REGION_SIZE_64KB | LL_MPU_REGION_FULL_ACCESS | + LL_MPU_REGION_SIZE_128KB | LL_MPU_REGION_FULL_ACCESS | + MPU_RASR_XN_Msk | MPU_SUBREGION_DISABLE(0x01); +#else + // Translations + Storage#2 (0x08100000 - 0x0811FFFF, 128 KiB, read-write, + // execute never) + MPU->RNR = MPU_REGION_NUMBER2; + MPU->RBAR = FLASH_BASE + 0x100000; + MPU->RASR = MPU_RASR_ENABLE_Msk | MPU_RASR_ATTR_FLASH | + LL_MPU_REGION_SIZE_128KB | LL_MPU_REGION_FULL_ACCESS | MPU_RASR_XN_Msk; +#endif // Firmware (0x08040000 - 0x080FFFFF, 6 * 128 KiB = 1024 KiB except 2/8 at // start = 768 KiB, read-only) diff --git a/core/embed/trezorhal/stm32f4/translations.c b/core/embed/trezorhal/stm32f4/translations.c new file mode 100644 index 000000000..d01debbf4 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/translations.c @@ -0,0 +1,39 @@ +#include "translations.h" +#include +#include +#include +#include "common.h" +#include "flash.h" +#include "model.h" + +bool translations_write(const uint8_t* data, uint32_t offset, uint32_t len) { + uint32_t size = translations_area_bytesize(); + if (offset > size || size - offset < len) { + return false; + } + + ensure(flash_unlock_write(), "translations_write unlock"); + for (int i = 0; i < len; i++) { + // TODO optimize by writing by (quad)words + ensure(flash_area_write_byte(&TRANSLATIONS_AREA, offset + i, data[i]), + "translations_write write"); + } + ensure(flash_lock_write(), "translations_write lock"); + return true; +} + +const uint8_t* translations_read(uint32_t* len, uint32_t offset) { + // TODO: _Static_assert was not happy with TRANSLATIONS_AREA.num_subareas == 1 + // error: expression in static assertion is not constant + assert(TRANSLATIONS_AREA.num_subareas == 1); + *len = flash_area_get_size(&TRANSLATIONS_AREA) - offset; + return flash_area_get_address(&TRANSLATIONS_AREA, offset, 0); +} + +void translations_erase(void) { + ensure(flash_area_erase(&TRANSLATIONS_AREA, NULL), "translations erase"); +} + +uint32_t translations_area_bytesize(void) { + return flash_area_get_size(&TRANSLATIONS_AREA); +} diff --git a/core/embed/trezorhal/translations.h b/core/embed/trezorhal/translations.h new file mode 100644 index 000000000..6fede56ce --- /dev/null +++ b/core/embed/trezorhal/translations.h @@ -0,0 +1,10 @@ +#include +#include + +bool translations_write(const uint8_t* data, uint32_t offset, uint32_t len); + +const uint8_t* translations_read(uint32_t* len, uint32_t offset); + +void translations_erase(void); + +uint32_t translations_area_bytesize(void); diff --git a/core/embed/trezorhal/unix/translations.c b/core/embed/trezorhal/unix/translations.c new file mode 120000 index 000000000..21b03004c --- /dev/null +++ b/core/embed/trezorhal/unix/translations.c @@ -0,0 +1 @@ +../stm32f4/translations.c \ No newline at end of file diff --git a/core/embed/unix/mpconfigport.h b/core/embed/unix/mpconfigport.h index af15fe645..2cc4b7d9e 100644 --- a/core/embed/unix/mpconfigport.h +++ b/core/embed/unix/mpconfigport.h @@ -212,6 +212,7 @@ extern const struct _mp_print_t mp_stderr_print; #define MICROPY_PY_TREZORUI (1) #define MICROPY_PY_TREZORUTILS (1) #define MICROPY_PY_TREZORPROTO (1) +#define MICROPY_PY_TREZORTRANSLATE (1) #define MICROPY_PY_TREZORUI2 (1) #define MP_STATE_PORT MP_STATE_VM diff --git a/core/mocks/generated/trezortranslate.pyi b/core/mocks/generated/trezortranslate.pyi new file mode 100644 index 000000000..6ff45e800 --- /dev/null +++ b/core/mocks/generated/trezortranslate.pyi @@ -0,0 +1,60 @@ +from typing import * +from trezortranslate_keys import TR as TR # noqa: F401 +"""Translation object with attributes.""" + + +# rust/src/translations/obj.rs +def area_bytesize() -> int: + """Maximum size of the translation blob that can be stored.""" + + +# rust/src/translations/obj.rs +def get_language() -> str: + """Get the current language.""" + + +# rust/src/translations/obj.rs +def init() -> None: + """Initialize the translations system. + Loads and verifies translation data from flash. If the verification passes, + Trezor UI is translated from that point forward. + """ + + +# rust/src/translations/obj.rs +def deinit() -> None: + """Deinitialize the translations system. + Translations must be deinitialized before erasing or writing to flash. + """ + + +# rust/src/translations/obj.rs +def erase() -> None: + """Erase the translations blob from flash.""" + + +# rust/src/translations/obj.rs +def write(data: bytes, offset: int) -> None: + """Write data to the translations blob in flash.""" + + +# rust/src/translations/obj.rs +def verify(data: bytes) -> None: + """Verify the translations blob.""" + + +# rust/src/translations/obj.rs +class TranslationsHeader: + """Metadata about the translations blob.""" + language: str + version: tuple[int, int, int, int] + data_len: int + data_hash: bytes + total_len: int + def __init__(self, header_bytes: bytes) -> None: + """Parse header from bytes. + The header has variable length. + """ + @staticmethod + def load_from_flash() -> TranslationsHeader | None: + """Load translations from flash.""" diff --git a/core/mocks/generated/trezortranslate_keys.pyi b/core/mocks/generated/trezortranslate_keys.pyi new file mode 120000 index 000000000..d6e28a4ff --- /dev/null +++ b/core/mocks/generated/trezortranslate_keys.pyi @@ -0,0 +1 @@ +../trezortranslate_keys.pyi \ No newline at end of file diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index afcd5ea7b..33d29d4c2 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -446,6 +446,11 @@ def confirm_firmware_update( fingerprint: str, ) -> None: """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" + + +# rust/src/ui/model_tr/layout.rs +def show_wait_text(/, message: str) -> None: + """Show single-line text in the middle of the screen.""" CONFIRMED: object CANCELLED: object INFO: object @@ -897,3 +902,8 @@ def confirm_firmware_update( fingerprint: str, ) -> None: """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" + + +# rust/src/ui/model_tt/layout.rs +def show_wait_text(/, message: str) -> None: + """Show single-line text in the middle of the screen.""" diff --git a/core/mocks/generated/trezorutils.pyi b/core/mocks/generated/trezorutils.pyi index 73d9bda80..4ba9cdbf2 100644 --- a/core/mocks/generated/trezorutils.pyi +++ b/core/mocks/generated/trezorutils.pyi @@ -82,20 +82,20 @@ def reboot_to_bootloader( """ Reboots to bootloader. """ +VersionTuple = Tuple[int, int, int, int] # extmod/modtrezorutils/modtrezorutils.c -def check_firmware_header( - header : bytes -) -> dict: - """ - Checks firmware image and vendor header and returns - { "version": (major, minor, patch), - "vendor": string, - "fingerprint": bytes, - "hash": bytes - } - """ +class FirmwareHeaderInfo(NamedTuple): + version: VersionTuple + vendor: str + fingerprint: bytes + hash: bytes + + +# extmod/modtrezorutils/modtrezorutils.c +def check_firmware_header(header : bytes) -> FirmwareHeaderInfo: + """Parses incoming firmware header and returns information about it.""" # extmod/modtrezorutils/modtrezorutils.c @@ -106,12 +106,8 @@ def bootloader_locked() -> bool | None: """ SCM_REVISION: bytes """Git commit hash of the firmware.""" -VERSION_MAJOR: int -"""Major version.""" -VERSION_MINOR: int -"""Minor version.""" -VERSION_PATCH: int -"""Patch version.""" +VERSION: VersionTuple +"""Firmware version as a tuple (major, minor, patch, build).""" USE_SD_CARD: bool """Whether the hardware supports SD card.""" USE_BACKLIGHT: bool diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi new file mode 100644 index 000000000..149785345 --- /dev/null +++ b/core/mocks/trezortranslate_keys.pyi @@ -0,0 +1,838 @@ +# generated from trezortranslate_keys.pyi.mako +# (by running `make templates` in `core`) +# do not edit manually! +class TR: + addr_mismatch__contact_support_at: str = "Please contact Trezor support at" + addr_mismatch__key_mismatch: str = "Key mismatch?" + addr_mismatch__mismatch: str = "Address mismatch?" + addr_mismatch__support_url: str = "trezor.io/support" + addr_mismatch__wrong_derivation_path: str = "Wrong derivation path for selected account." + addr_mismatch__xpub_mismatch: str = "XPUB mismatch?" + address__public_key: str = "Public key" + address__title_cosigner: str = "COSIGNER" + address__title_receive_address: str = "RECEIVE ADDRESS" + address__title_yours: str = "YOURS" + address_details__derivation_path: str = "Derivation path:" + address_details__title_receive_address: str = "RECEIVE ADDRESS" + address_details__title_receiving_to: str = "RECEIVING TO" + authenticate__confirm_template: str = "Allow connected computer to confirm your {} is genuine?" + authenticate__header: str = "Authenticate device" + auto_lock__change_template: str = "Auto-lock your Trezor after {} of inactivity?" + auto_lock__title: str = "AUTO-LOCK DELAY" + backup__can_back_up_anytime: str = "You can back up your Trezor once, at any time." + backup__it_should_be_backed_up: str = "You should back up your new wallet right now." + backup__it_should_be_backed_up_now: str = "It should be backed up now!" + backup__new_wallet_created: str = "New wallet created.\n" + backup__new_wallet_successfully_created: str = "New wallet created successfully." + backup__recover_anytime: str = "You can use your backup to recover your wallet at any time." + backup__title_backup_wallet: str = "BACK UP WALLET" + backup__title_skip: str = "SKIP BACKUP" + backup__want_to_skip: str = "Are you sure you want to skip the backup?" + binance__buy: str = "Buy" + binance__confirm_cancel: str = "Confirm cancel" + binance__confirm_input: str = "Confirm input" + binance__confirm_order: str = "Confirm order" + binance__confirm_output: str = "Confirm output" + binance__order_id: str = "Order ID:" + binance__pair: str = "Pair:" + binance__price: str = "Price:" + binance__quantity: str = "Quantity:" + binance__sell: str = "Sell" + binance__sender_address: str = "Sender address:" + binance__side: str = "Side:" + bitcoin__commitment_data: str = "Commitment data:" + bitcoin__confirm_locktime: str = "Confirm locktime" + bitcoin__create_proof_of_ownership: str = "Do you want to create a proof of ownership?" + bitcoin__high_mining_fee_template: str = "The mining fee of\n{}\nis unexpectedly high." + bitcoin__locktime_no_effect: str = "Locktime is set but will have no effect." + bitcoin__locktime_set_to: str = "Locktime set to:" + bitcoin__locktime_set_to_blockheight: str = "Locktime set to blockheight:" + bitcoin__lot_of_change_outputs: str = "A lot of change-outputs." + bitcoin__multiple_accounts: str = "Multiple accounts" + bitcoin__new_fee_rate: str = "New fee rate:" + bitcoin__simple_send_of: str = "Simple send of" + bitcoin__ticket_amount: str = "Ticket amount:" + bitcoin__title_confirm_details: str = "CONFIRM DETAILS" + bitcoin__title_finalize_transaction: str = "FINALIZE TRANSACTION" + bitcoin__title_high_mining_fee: str = "HIGH MINING FEE" + bitcoin__title_meld_transaction: str = "MELD TRANSACTIONS" + bitcoin__title_modify_amount: str = "MODIFY AMOUNT" + bitcoin__title_payjoin: str = "PAYJOIN" + bitcoin__title_proof_of_ownership: str = "PROOF OF OWNERSHIP" + bitcoin__title_purchase_ticket: str = "PURCHASE TICKET" + bitcoin__title_update_transaction: str = "UPDATE TRANSACTION" + bitcoin__unknown_path: str = "Unknown path" + bitcoin__unknown_transaction: str = "Unknown transaction" + bitcoin__unusually_high_fee: str = "Unusually high fee." + bitcoin__unverified_external_inputs: str = "The transaction contains unverified external inputs." + bitcoin__valid_signature: str = "The signature is valid." + bitcoin__voting_rights: str = "Voting rights to:" + buttons__abort: str = "ABORT" + buttons__access: str = "ACCESS" + buttons__again: str = "AGAIN" + buttons__allow: str = "ALLOW" + buttons__back: str = "BACK" + buttons__back_up: str = "BACK UP" + buttons__cancel: str = "CANCEL" + buttons__change: str = "CHANGE" + buttons__check: str = "CHECK" + buttons__check_again: str = "CHECK AGAIN" + buttons__close: str = "CLOSE" + buttons__confirm: str = "CONFIRM" + buttons__continue: str = "CONTINUE" + buttons__details: str = "DETAILS" + buttons__enable: str = "ENABLE" + buttons__enter: str = "ENTER" + buttons__enter_share: str = "ENTER SHARE" + buttons__export: str = "EXPORT" + buttons__format: str = "FORMAT" + buttons__go_back: str = "GO BACK" + buttons__hold_to_confirm: str = "HOLD TO CONFIRM" + buttons__info: str = "INFO" + buttons__install: str = "INSTALL" + buttons__more_info: str = "MORE INFO" + buttons__ok_i_understand: str = "OK, I UNDERSTAND" + buttons__purchase: str = "PURCHASE" + buttons__quit: str = "QUIT" + buttons__restart: str = "RESTART" + buttons__retry: str = "RETRY" + buttons__select: str = "SELECT" + buttons__set: str = "SET" + buttons__show_all: str = "SHOW ALL" + buttons__show_details: str = "SHOW DETAILS" + buttons__show_words: str = "SHOW WORDS" + buttons__skip: str = "SKIP" + buttons__try_again: str = "TRY AGAIN" + buttons__turn_off: str = "TURN OFF" + buttons__turn_on: str = "TURN ON" + cardano__addr_base: str = "Base" + cardano__addr_enterprise: str = "Enterprise" + cardano__addr_legacy: str = "Legacy" + cardano__addr_pointer: str = "Pointer" + cardano__addr_reward: str = "Reward" + cardano__address_no_staking: str = "address - no staking rewards." + cardano__amount_burned_decimals_unknown: str = "Amount burned (decimals unknown):" + cardano__amount_minted_decimals_unknown: str = "Amount minted (decimals unknown):" + cardano__amount_sent_decimals_unknown: str = "Amount sent (decimals unknown):" + cardano__anonymous_pool: str = "Pool has no metadata (anonymous pool)" + cardano__asset_fingerprint: str = "Asset fingerprint:" + cardano__auxiliary_data_hash: str = "Auxiliary data hash:" + cardano__block: str = "Block" + cardano__catalyst: str = "Catalyst" + cardano__certificate: str = "Certificate" + cardano__change_output: str = "Change output" + cardano__check_all_items: str = "Check all items carefully." + cardano__choose_level_of_details: str = "Choose level of details:" + cardano__collateral_input_id: str = "Collateral input ID:" + cardano__collateral_input_index: str = "Collateral input index:" + cardano__collateral_output_contains_tokens: str = "The collateral return output contains tokens." + cardano__collateral_return: str = "Collateral return" + cardano__confirm: str = "Confirm:" + cardano__confirm_signing_stake_pool: str = "Confirm signing the stake pool registration as an owner." + cardano__confirm_transaction: str = "Confirm transaction" + cardano__confirming_a_multisig_transaction: str = "Confirming a multisig transaction." + cardano__confirming_a_plutus_transaction: str = "Confirming a Plutus transaction." + cardano__confirming_pool_registration: str = "Confirming pool registration as owner." + cardano__confirming_transction: str = "Confirming a transaction." + cardano__cost: str = "Cost" + cardano__credential_mismatch: str = "Credential doesn't match payment credential." + cardano__datum_hash: str = "Datum hash:" + cardano__delegating_to: str = "Delegating to:" + cardano__for_account_and_index_template: str = "for account {} and index {}:" + cardano__for_account_template: str = "for account {}:" + cardano__for_key_hash: str = "for key hash:" + cardano__for_script: str = "for script:" + cardano__inline_datum: str = "Inline datum" + cardano__input_id: str = "Input ID:" + cardano__input_index: str = "Input index:" + cardano__intro_text_change: str = "The following address is a change address. Its" + cardano__intro_text_owned_by_device: str = "The following address is owned by this device. Its" + cardano__intro_text_registration_payment: str = "The vote key registration payment address is owned by this device. Its" + cardano__key_hash: str = "key hash" + cardano__margin: str = "Margin" + cardano__multisig_path: str = "multi-sig path" + cardano__nested_scripts_template: str = "Contains {} nested scripts." + cardano__network: str = "Network:" + cardano__no_output_tx: str = "Transaction has no outputs, network cannot be verified." + cardano__nonce: str = "Nonce:" + cardano__other: str = "other" + cardano__path: str = "path" + cardano__pledge: str = "Pledge" + cardano__pointer: str = "pointer" + cardano__policy_id: str = "Policy ID:" + cardano__pool_metadata_hash: str = "Pool metadata hash:" + cardano__pool_metadata_url: str = "Pool metadata url:" + cardano__pool_owner: str = "Pool owner:" + cardano__pool_reward_account: str = "Pool reward account:" + cardano__reference_input_id: str = "Reference input ID:" + cardano__reference_input_index: str = "Reference input index:" + cardano__reference_script: str = "Reference script" + cardano__required_signer: str = "Required signer" + cardano__reward: str = "reward" + cardano__reward_address: str = "Address is a reward address." + cardano__reward_eligibility_warning: str = "Warning: The address is not a payment address, it is not eligible for rewards." + cardano__rewards_go_to: str = "Rewards go to:" + cardano__script: str = "script" + cardano__script_all: str = "All" + cardano__script_any: str = "Any" + cardano__script_data_hash: str = "Script data hash:" + cardano__script_hash: str = "Script hash:" + cardano__script_invalid_before: str = "Invalid before" + cardano__script_invalid_hereafter: str = "Invalid hereafter" + cardano__script_key: str = "Key" + cardano__script_n_of_k: str = "N of K" + cardano__script_reward: str = "script reward" + cardano__sending: str = "Sending" + cardano__show_simple: str = "Show Simple" + cardano__sign_tx_path_template: str = "Sign transaction with {}:" + cardano__stake_delegation: str = "Stake delegation" + cardano__stake_deregistration: str = "Stake key deregistration" + cardano__stake_pool_registration: str = "Stakepool registration" + cardano__stake_pool_registration_pool_id: str = "Stake pool registration\nPool ID:" + cardano__stake_registration: str = "Stake key registration" + cardano__staking_key_for_account: str = "Staking key for account" + cardano__to_pool: str = "to pool:" + cardano__token_minting_path: str = "token minting path" + cardano__total_collateral: str = "Total collateral:" + cardano__transaction: str = "Transaction" + cardano__transaction_contains_minting_or_burning: str = "The transaction contains minting or burning of tokens." + cardano__transaction_contains_script_address_no_datum: str = "The following transaction output contains a script address, but does not contain a datum." + cardano__transaction_fee: str = "Transaction fee:" + cardano__transaction_id: str = "Transaction ID:" + cardano__transaction_no_collateral_input: str = "The transaction contains no collateral inputs. Plutus script will not be able to run." + cardano__transaction_no_script_data_hash: str = "The transaction contains no script data hash. Plutus script will not be able to run." + cardano__transaction_output_contains_tokens: str = "The following transaction output contains tokens." + cardano__ttl: str = "TTL:" + cardano__unknown_collateral_amount: str = "Unknown collateral amount." + cardano__unusual_path: str = "Path is unusual." + cardano__valid_since: str = "Valid since:" + cardano__verify_script: str = "Verify script" + cardano__vote_key_registration: str = "Vote key registration (CIP-36)" + cardano__vote_public_key: str = "Vote public key:" + cardano__voting_purpose: str = "Voting purpose:" + cardano__warning: str = "Warning" + cardano__weight: str = "Weight:" + cardano__withdrawal_for_address_template: str = "Confirm withdrawal for {} address:" + cardano__x_of_y_signatures_template: str = "Requires {} out of {} signatures." + coinjoin__access_account: str = "Access your coinjoin account?" + coinjoin__do_not_disconnect: str = "Do not disconnect your Trezor!" + coinjoin__max_mining_fee: str = "Max mining fee" + coinjoin__max_rounds: str = "Max rounds" + coinjoin__title: str = "AUTHORIZE COINJOIN" + coinjoin__title_do_not_disconnect: str = "DO NOT DISCONNECT YOUR TREZOR!" + coinjoin__title_progress: str = "COINJOIN IN PROGRESS" + coinjoin__waiting_for_others: str = "Waiting for others" + confirm_total__fee_rate: str = "Fee rate:" + confirm_total__sending_from_account: str = "Sending from account:" + confirm_total__title_fee: str = "FEE INFORMATION" + confirm_total__title_sending_from: str = "SENDING FROM" + debug__loading_seed: str = "Loading seed" + debug__loading_seed_not_recommended: str = "Loading private seed is not recommended." + device_name__change_template: str = "Change device name to {}?" + device_name__title: str = "DEVICE NAME" + entropy__send: str = "Do you really want to send entropy?" + entropy__title: str = "INTERNAL ENTROPY" + entropy__title_confirm: str = "CONFIRM ENTROPY" + eos__about_to_sign_template: str = "You are about to sign {}." + eos__action_name: str = "Action Name:" + eos__arbitrary_data: str = "Arbitrary data" + eos__buy_ram: str = "Buy RAM" + eos__bytes: str = "Bytes:" + eos__cancel_vote: str = "Cancel vote" + eos__checksum: str = "Checksum:" + eos__code: str = "Code:" + eos__contract: str = "Contract:" + eos__cpu: str = "CPU:" + eos__creator: str = "Creator:" + eos__delegate: str = "Delegate" + eos__delete_auth: str = "Delete Auth" + eos__from: str = "From:" + eos__link_auth: str = "Link Auth" + eos__memo: str = "Memo" + eos__name: str = "Name:" + eos__net: str = "NET:" + eos__new_account: str = "New account" + eos__owner: str = "Owner:" + eos__parent: str = "Parent:" + eos__payer: str = "Payer:" + eos__permission: str = "Permission:" + eos__proxy: str = "Proxy:" + eos__receiver: str = "Receiver:" + eos__refund: str = "Refund" + eos__requirement: str = "Requirement:" + eos__sell_ram: str = "Sell RAM" + eos__sender: str = "Sender:" + eos__sign_transaction: str = "Sign transaction" + eos__threshold: str = "Threshold:" + eos__to: str = "To:" + eos__transfer: str = "Transfer:" + eos__type: str = "Type:" + eos__undelegate: str = "Undelegate" + eos__unlink_auth: str = "Unlink Auth" + eos__update_auth: str = "Update Auth" + eos__vote_for_producers: str = "Vote for producers" + eos__vote_for_proxy: str = "Vote for proxy" + eos__voter: str = "Voter:" + ethereum__amount_sent: str = "Amount sent:" + ethereum__contract: str = "Contract:" + ethereum__data_size_template: str = "Size: {} bytes" + ethereum__gas_limit: str = "Gas limit:" + ethereum__gas_price: str = "Gas price:" + ethereum__max_gas_price: str = "Max gas price:" + ethereum__name_and_version: str = "Name and version" + ethereum__new_contract: str = "new contract?" + ethereum__no_message_field: str = "No message field" + ethereum__priority_fee: str = "Priority fee:" + ethereum__show_full_array: str = "Show full array" + ethereum__show_full_domain: str = "Show full domain" + ethereum__show_full_message: str = "Show full message" + ethereum__show_full_struct: str = "Show full struct" + ethereum__sign_eip712: str = "Really sign EIP-712 typed data?" + ethereum__title_confirm_data: str = "CONFIRM DATA" + ethereum__title_confirm_domain: str = "CONFIRM DOMAIN" + ethereum__title_confirm_message: str = "CONFIRM MESSAGE" + ethereum__title_confirm_struct: str = "CONFIRM STRUCT" + ethereum__title_confirm_typed_data: str = "CONFIRM TYPED DATA" + ethereum__title_signing_address: str = "SIGNING ADDRESS" + ethereum__units_template: str = "{} units" + ethereum__unknown_token: str = "Unknown token" + ethereum__valid_signature: str = "The signature is valid." + experimental_mode__enable: str = "Enable experimental features?" + experimental_mode__only_for_dev: str = "Only for development and beta testing!" + experimental_mode__title: str = "EXPERIMENTAL MODE" + fido__already_registered: str = "Already registered" + fido__device_already_registered: str = "This device is already registered with this application." + fido__device_already_registered_with_template: str = "This device is already registered with {}." + fido__device_not_registered: str = "This device is not registered with this application." + fido__does_not_belong: str = "The credential you are trying to import does\nnot belong to this authenticator." + fido__erase_credentials: str = "erase all credentials?" + fido__export_credentials: str = "Export information about the credentials stored on this device?" + fido__not_registered: str = "Not registered" + fido__not_registered_with_template: str = "This device is not registered with\n{}." + fido__please_enable_pin_protection: str = "Please enable PIN protection." + fido__title_authenticate: str = "FIDO2 AUTHENTICATE" + fido__title_import_credential: str = "IMPORT CREDENTIAL" + fido__title_list_credentials: str = "LIST CREDENTIALS" + fido__title_register: str = "FIDO2 REGISTER" + fido__title_remove_credential: str = "REMOVE CREDENTIAL" + fido__title_reset: str = "FIDO2 RESET" + fido__title_u2f_auth: str = "U2F AUTHENTICATE" + fido__title_u2f_register: str = "U2F REGISTER" + fido__title_verify_user: str = "FIDO2 VERIFY USER" + fido__unable_to_verify_user: str = "Unable to verify user." + fido__wanna_erase_credentials: str = "Do you really want to erase all credentials?" + firmware_update__title: str = "UPDATE FIRMWARE" + firmware_update__title_fingerprint: str = "FW FINGERPRINT" + homescreen__click_to_connect: str = "Click to Connect" + homescreen__click_to_unlock: str = "Click to Unlock" + homescreen__title_backup_failed: str = "BACKUP FAILED" + homescreen__title_backup_needed: str = "BACKUP NEEDED" + homescreen__title_coinjoin_authorized: str = "COINJOIN AUTHORIZED" + homescreen__title_experimental_mode: str = "EXPERIMENTAL MODE" + homescreen__title_no_usb_connection: str = "NO USB CONNECTION" + homescreen__title_pin_not_set: str = "PIN NOT SET" + homescreen__title_seedless: str = "SEEDLESS" + homescreen__title_set: str = "CHANGE HOMESCREEN?" + inputs__back: str = "BACK" + inputs__cancel: str = "CANCEL" + inputs__delete: str = "DELETE" + inputs__enter: str = "ENTER" + inputs__return: str = "RETURN" + inputs__show: str = "SHOW" + inputs__space: str = "SPACE" + joint__title: str = "JOINT TRANSACTION" + joint__to_the_total_amount: str = "To the total amount:" + joint__you_are_contributing: str = "You are contributing:" + language__change_to: str = "Change language to {}?" + language__changed: str = "Language changed successfully" + language__progress: str = "Changing language" + language__title: str = "LANGUAGE SETTINGS" + lockscreen__tap_to_connect: str = "Tap to connect" + lockscreen__tap_to_unlock: str = "Tap to unlock" + lockscreen__title_locked: str = "LOCKED" + lockscreen__title_not_connected: str = "NOT CONNECTED" + misc__decrypt_value: str = "Decrypt value" + misc__encrypt_value: str = "Encrypt value" + misc__title_suite_labeling: str = "SUITE LABELING" + modify_amount__decrease_amount: str = "Decrease amount by:" + modify_amount__increase_amount: str = "Increase amount by:" + modify_amount__new_amount: str = "New amount:" + modify_amount__title: str = "MODIFY AMOUNT" + modify_fee__decrease_fee: str = "Decrease fee by:" + modify_fee__fee_rate: str = "Fee rate:" + modify_fee__increase_fee: str = "Increase fee by:" + modify_fee__new_transaction_fee: str = "New transaction fee:" + modify_fee__no_change: str = "Fee did not change.\n" + modify_fee__title: str = "MODIFY FEE" + modify_fee__transaction_fee: str = "Transaction fee:" + monero__confirm_export: str = "Confirm export" + monero__confirm_ki_sync: str = "Confirm ki sync" + monero__confirm_refresh: str = "Confirm refresh" + monero__confirm_unlock_time: str = "Confirm unlock time" + monero__hashing_inputs: str = "Hashing inputs" + monero__payment_id: str = "Payment ID" + monero__postprocessing: str = "Postprocessing..." + monero__processing: str = "Processing..." + monero__processing_inputs: str = "Processing inputs" + monero__processing_outputs: str = "Processing outputs" + monero__signing: str = "Signing..." + monero__signing_inputs: str = "Signing inputs" + monero__unlock_time_set_template: str = "Unlock time for this transaction is set to {}" + monero__wanna_export_tx_der: str = "Do you really want to export tx_der\nfor tx_proof?" + monero__wanna_export_tx_key: str = "Do you really want to export tx_key?" + monero__wanna_export_watchkey: str = "Do you really want to export watch-only credentials?" + monero__wanna_start_refresh: str = "Do you really want to\nstart refresh?" + monero__wanna_sync_key_images: str = "Do you really want to\nsync key images?" + nem__absolute: str = "absolute" + nem__activate: str = "Activate" + nem__add: str = "Add" + nem__confirm_action: str = "Confirm action" + nem__confirm_address: str = "Confirm address" + nem__confirm_creation_fee: str = "Confirm creation fee" + nem__confirm_mosaic: str = "Confirm mosaic" + nem__confirm_multisig_fee: str = "Confirm multisig fee" + nem__confirm_namespace: str = "Confirm namespace" + nem__confirm_payload: str = "Confirm payload" + nem__confirm_properties: str = "Confirm properties" + nem__confirm_rental_fee: str = "Confirm rental fee" + nem__confirm_transfer_of: str = "Confirm transfer of" + nem__convert_account_to_multisig: str = "Convert account to multisig account?" + nem__cosign_transaction_for: str = "Cosign transaction for" + nem__cosignatory: str = " cosignatory" + nem__create_mosaic: str = "Create mosaic" + nem__create_namespace: str = "Create namespace" + nem__deactivate: str = "Deactivate" + nem__decrease: str = "Decrease" + nem__description: str = "Description:" + nem__divisibility_and_levy_cannot_be_shown: str = "Divisibility and levy cannot be shown for unknown mosaics" + nem__encrypted: str = "Encrypted:" + nem__final_confirm: str = "Final confirm" + nem__immutable: str = "immutable" + nem__increase: str = "Increase" + nem__initial_supply: str = "Initial supply:" + nem__initiate_transaction_for: str = "Initiate transaction for" + nem__levy_divisibility: str = "Levy divisibility:" + nem__levy_fee: str = "Levy fee:" + nem__levy_fee_of: str = "Confirm mosaic levy fee of" + nem__levy_mosaic: str = "Levy mosaic:" + nem__levy_namespace: str = "Levy namespace:" + nem__levy_recipient: str = "Levy recipient:" + nem__levy_type: str = "Levy type:" + nem__modify_supply_for: str = "Modify supply for" + nem__modify_the_number_of_cosignatories_by: str = "Modify the number of cosignatories by " + nem__mutable: str = "mutable" + nem__of: str = "of" + nem__percentile: str = "percentile" + nem__raw_units_template: str = "{} raw units" + nem__remote_harvesting: str = " remote harvesting?" + nem__remove: str = "Remove" + nem__set_minimum_cosignatories_to: str = "Set minimum cosignatories to " + nem__sign_tx_fee_template: str = "Sign this transaction\nand pay {}\nfor network fee?" + nem__supply_change: str = "Supply change" + nem__supply_units_template: str = "{} supply by {} whole units?" + nem__transferable: str = "Transferable?" + nem__under_namespace: str = "under namespace" + nem__unencrypted: str = "Unencrypted:" + nem__unknown_mosaic: str = "Unknown mosaic!" + passphrase__access_hidden_wallet: str = "Access hidden wallet?" + passphrase__always_on_device: str = "Do you really want to enter passphrase always on the device?" + passphrase__from_host_not_shown: str = "Passphrase provided by host will be used but will not be displayed due to the device settings." + passphrase__hidden_wallet: str = "Hidden wallet" + passphrase__hide: str = "Hide passphrase coming from host?" + passphrase__next_screen_will_show_passphrase: str = "Next screen will show the passphrase." + passphrase__please_enter: str = "Please enter your passphrase." + passphrase__revoke_on_device: str = "Do you want to revoke the passphrase on device setting?" + passphrase__title_confirm: str = "CONFIRM PASSPHRASE" + passphrase__title_enter: str = "ENTER PASSPHRASE" + passphrase__title_hide: str = "HIDE PASSPHRASE" + passphrase__title_settings: str = "PASSPHRASE SETTINGS" + passphrase__title_source: str = "PASSPHRASE SOURCE" + passphrase__turn_off: str = "Turn off passphrase protection?" + passphrase__turn_on: str = "Turn on passphrase protection?" + pin__change: str = "Change PIN?" + pin__changed: str = "PIN changed." + pin__cursor_will_change: str = "Position of the cursor will change between entries for enhanced security." + pin__diff_from_wipe_code: str = "The new PIN must be different from your wipe code." + pin__disabled: str = "PIN protection\nturned off." + pin__enabled: str = "PIN protection\nturned on." + pin__enter: str = "Enter PIN" + pin__enter_new: str = "Enter new PIN" + pin__entered_not_valid: str = "The PIN you have entered is not valid." + pin__info: str = "PIN will be required to access this device." + pin__invalid_pin: str = "Invalid PIN" + pin__last_attempt: str = "Last attempt" + pin__mismatch: str = "Entered PINs do not match!" + pin__pin_mismatch: str = "PIN mismatch" + pin__please_check_again: str = "Please check again." + pin__reenter_new: str = "Re-enter new PIN" + pin__reenter_to_confirm: str = "Please re-enter PIN to confirm." + pin__should_be_long: str = "PIN should be 4-50 digits long." + pin__title_check_pin: str = "CHECK PIN" + pin__title_settings: str = "PIN SETTINGS" + pin__title_wrong_pin: str = "WRONG PIN" + pin__tries_left: str = "tries left" + pin__turn_off: str = "Are you sure you want to turn off PIN protection?" + pin__turn_on: str = "Turn on PIN protection?" + pin__wrong_pin: str = "Wrong PIN" + plurals__contains_x_keys: str = "key|keys" + plurals__lock_after_x_hours: str = "hour|hours" + plurals__lock_after_x_milliseconds: str = "millisecond|milliseconds" + plurals__lock_after_x_minutes: str = "minute|minutes" + plurals__lock_after_x_seconds: str = "second|seconds" + plurals__sign_x_actions: str = "action|actions" + plurals__transaction_of_x_operations: str = "operation|operations" + plurals__x_groups_needed: str = "group|groups" + plurals__x_shares_needed: str = "share|shares" + progress__authenticity_check: str = "Checking authenticity..." + progress__done: str = "Done" + progress__loading_transaction: str = "Loading transaction..." + progress__locking_device: str = "Locking the device..." + progress__one_second_left: str = "1 second left" + progress__please_wait: str = "PLEASE WAIT" + progress__processing: str = "PROCESSING" + progress__refreshing: str = "Refreshing..." + progress__signing_transaction: str = "Signing transaction..." + progress__syncing: str = "Syncing..." + progress__x_seconds_left_template: str = "{} seconds left" + reboot_to_bootloader__just_a_moment: str = "Just a moment..." + reboot_to_bootloader__restart: str = "Trezor will restart in bootloader mode." + reboot_to_bootloader__title: str = "GO TO BOOTLOADER" + reboot_to_bootloader__version_by_template: str = "Firmware version {}\nby {}" + recovery__cancel_dry_run: str = "Cancel backup check" + recovery__check_dry_run: str = "Check your backup?" + recovery__cursor_will_change: str = "Position of the cursor will change between entries for enhanced security." + recovery__dry_run_bip39_valid_match: str = "The entered recovery seed is valid and matches the one in the device." + recovery__dry_run_bip39_valid_mismatch: str = "The entered recovery seed is valid but does not match the one in the device." + recovery__dry_run_slip39_valid_match: str = "The entered recovery shares are valid and match what is currently in the device." + recovery__dry_run_slip39_valid_mismatch: str = "The entered recovery shares are valid but do not match what is currently in the device." + recovery__enter_any_share: str = "Enter any share" + recovery__enter_backup: str = "Enter your backup." + recovery__enter_different_share: str = "Please enter a different share." + recovery__enter_share_from_diff_group: str = "Enter share from a different group." + recovery__group_num_template: str = "Group {}" + recovery__group_threshold_reached: str = "Group threshold reached." + recovery__invalid_seed_entered: str = "Invalid recovery seed entered." + recovery__invalid_share_entered: str = "Invalid recovery share entered." + recovery__more_shares_needed: str = "More shares needed" + recovery__num_of_words: str = "Select the number of words in your backup." + recovery__only_first_n_letters: str = "You'll only have to select the first 2-4 letters of each word." + recovery__progress_will_be_lost: str = "All progress will be lost." + recovery__select_num_of_words: str = "Select the number of words in your backup." + recovery__share_already_entered: str = "Share already entered" + recovery__share_from_another_shamir: str = "You have entered a share from another Shamir Backup." + recovery__share_num_template: str = "Share {}" + recovery__title: str = "RECOVER WALLET" + recovery__title_cancel_dry_run: str = "CANCEL BACKUP CHECK" + recovery__title_cancel_recovery: str = "CANCEL RECOVERY" + recovery__title_dry_run: str = "BACKUP CHECK" + recovery__title_recover: str = "RECOVER WALLET" + recovery__title_remaining_shares: str = "REMAINING SHARES" + recovery__type_word_x_of_y_template: str = "Type word {} of {}" + recovery__wallet_recovered: str = "Wallet recovered successfully" + recovery__wanna_cancel_dry_run: str = "Are you sure you want to cancel the backup check?" + recovery__wanna_cancel_recovery: str = "Are you sure you want to cancel the recovery process?" + recovery__word_count_template: str = "({} words)" + recovery__word_x_of_y_template: str = "WORD {} OF {}" + recovery__x_more_items_starting_template_plural: str = "{count} more {plural} starting" + recovery__x_more_shares_needed_template_plural: str = "{count} more {plural} needed." + recovery__x_of_y_entered_template: str = "{} of {} shares entered successfully." + recovery__you_have_entered: str = "You have entered" + reset__advanced_group_threshold_info: str = "The group threshold specifies the number of groups required to recover your wallet." + reset__all_x_of_y_template: str = "all {} of {} shares" + reset__any_x_of_y_template: str = "any {} of {} shares" + reset__button_create: str = "CREATE WALLET" + reset__button_recover: str = "RECOVER WALLET" + reset__by_continuing: str = "By continuing you agree to Trezor Company's terms and conditions." + reset__check_backup_title: str = "CHECK BACKUP" + reset__check_group_share_title_template: str = "CHECK G{} - SHARE {}" + reset__check_seed_title: str = "CHECK SEED" + reset__check_share_title_template: str = "CHECK SHARE #{}" + reset__continue_with_next_share: str = "Continue with the next share." + reset__continue_with_share_template: str = "Continue with share #{}." + reset__finished_verifying_group_template: str = "You have finished verifying your recovery shares for group {}." + reset__finished_verifying_seed: str = "You have finished verifying your recovery seed." + reset__finished_verifying_shares: str = "You have finished verifying your recovery shares." + reset__group_description: str = "A group is made up of recovery shares." + reset__group_info: str = "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds." + reset__group_share_checked_successfully_template: str = "Group {} - Share {} checked successfully." + reset__group_share_title_template: str = "GROUP {} - SHARE {}" + reset__more_info_at: str = "More info at" + reset__need_all_share_template: str = "For recovery you need all {} of the shares." + reset__need_any_share_template: str = "For recovery you need any {} of the shares." + reset__needed_to_form_a_group: str = "needed to form a group. " + reset__needed_to_recover_your_wallet: str = "needed to recover your wallet. " + reset__never_make_digital_copy: str = "Never make a digital copy of your backup or upload it online!" + reset__num_of_share_holders_template: str = "{} people or locations will each hold one share." + reset__num_of_shares_advanced_info_template: str = "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {}." + reset__num_of_shares_basic_info: str = "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet." + reset__num_shares_for_group_template: str = "The required number of shares to form Group {}." + reset__number_of_shares_info: str = "= total number of unique word lists used for wallet backup." + reset__one_share: str = "1 share" + reset__only_one_share_will_be_created: str = "Only one share will be created." + reset__recovery_seed_title: str = "RECOVERY SEED" + reset__recovery_share_title_template: str = "RECOVERY SHARE #{}" + reset__required_number_of_groups: str = "The required number of groups for recovery." + reset__select_correct_word: str = "Select the correct word for each position." + reset__select_word_template: str = "SELECT {} WORD" + reset__select_word_x_of_y_template: str = "Select word {} of {}:" + reset__set_it_to_count_template: str = "Set it to {} and you will need " + reset__share_checked_successfully_template: str = "Recovery share #{} checked successfully." + reset__share_words_title: str = "STANDARD BACKUP" + reset__slip39_checklist_num_groups: str = "Number of groups" + reset__slip39_checklist_num_shares: str = "Number of shares" + reset__slip39_checklist_set_num_groups: str = "Set number of groups" + reset__slip39_checklist_set_num_shares: str = "Set number of shares" + reset__slip39_checklist_set_sizes: str = "Set sizes and thresholds" + reset__slip39_checklist_set_sizes_longer: str = "Set size and threshold for each group" + reset__slip39_checklist_set_threshold: str = "Set threshold" + reset__slip39_checklist_title: str = "BACKUP CHECKLIST" + reset__slip39_checklist_write_down: str = "Write down and check all shares" + reset__slip39_checklist_write_down_recovery: str = "Write down and check all recovery shares" + reset__the_threshold_sets_the_number_of_shares: str = "The threshold sets the number of shares " + reset__threshold_info: str = "= minimum number of unique word lists used for recovery." + reset__title_backup_is_done: str = "BACKUP IS DONE" + reset__title_create_wallet: str = "CREATE WALLET" + reset__title_create_wallet_shamir: str = "CREATE WALLET (SHAMIR)" + reset__title_group_threshold: str = "GROUP THRESHOLD" + reset__title_number_of_groups: str = "NUMBER OF GROUPS" + reset__title_number_of_shares: str = "NUMBER OF SHARES" + reset__title_set_group_threshold: str = "SET GROUP THRESHOLD" + reset__title_set_number_of_groups: str = "SET NUMBER OF GROUPS" + reset__title_set_number_of_shares: str = "SET NUMBER OF SHARES" + reset__title_set_threshold: str = "SET THRESHOLD" + reset__to_form_group_template: str = "to form Group {}." + reset__tos_link: str = "trezor.io/tos" + reset__total_number_of_shares_in_group_template: str = "Set the total number of shares in Group {}." + reset__use_your_backup: str = "Use your backup when you need to recover your wallet." + reset__write_down_words_template: str = "Write down all {} words in order." + reset__wrong_word_selected: str = "Wrong word selected!" + reset__you_need_one_share: str = "For recovery you need 1 share." + reset__your_backup_is_done: str = "Your backup is done." + ripple__confirm_tag: str = "Confirm tag" + ripple__destination_tag_template: str = "Destination tag:\n{}" + rotation__change_template: str = "Do you want to change device rotation to {}?" + rotation__east: str = "east" + rotation__north: str = "north" + rotation__south: str = "south" + rotation__title_change: str = "CHANGE ROTATION" + rotation__west: str = "west" + safety_checks__approve_unsafe_always: str = "Trezor will allow you to approve some actions which might be unsafe." + safety_checks__approve_unsafe_temporary: str = "Trezor will temporarily allow you to approve some actions which might be unsafe." + safety_checks__enforce_strict: str = "Do you really want to enforce strict safety checks (recommended)?" + safety_checks__title: str = "SAFETY CHECKS" + safety_checks__title_safety_override: str = "SAFETY OVERRIDE" + sd_card__all_data_will_be_lost: str = "All data on the SD card will be lost." + sd_card__card_required: str = "SD card required." + sd_card__disable: str = "Do you really want to remove SD card protection from your device?" + sd_card__disabled: str = "You have successfully disabled SD protection." + sd_card__enable: str = "Do you really want to secure your device with SD card protection?" + sd_card__enabled: str = "You have successfully enabled SD protection." + sd_card__error: str = "SD card error" + sd_card__format_card: str = "Format SD card" + sd_card__insert_correct_card: str = "Please insert the correct SD card for this device." + sd_card__please_insert: str = "Please insert your SD card." + sd_card__please_unplug_and_insert: str = "Please unplug the device and insert your SD card." + sd_card__problem_accessing: str = "There was a problem accessing the SD card." + sd_card__refresh: str = "Do you really want to replace the current SD card secret with a newly generated one?" + sd_card__refreshed: str = "You have successfully refreshed SD protection." + sd_card__restart: str = "Do you want to restart Trezor in bootloader mode?" + sd_card__title: str = "SD CARD PROTECTION" + sd_card__title_problem: str = "SD CARD PROBLEM" + sd_card__unknown_filesystem: str = "Unknown filesystem." + sd_card__unplug_and_insert_correct: str = "Please unplug the device and insert the correct SD card." + sd_card__use_different_card: str = "Use a different card or format the SD card to the FAT32 filesystem." + sd_card__wanna_format: str = "Do you really want to format the SD card?" + sd_card__wrong_sd_card: str = "Wrong SD card." + send__address_path: str = "address path" + send__confirm_sending: str = "SENDING AMOUNT" + send__from_multiple_accounts: str = "Sending from multiple accounts." + send__including_fee: str = "Including fee:" + send__maximum_fee: str = "Maximum fee:" + send__receiving_to_multisig: str = "Receiving to a multisig address." + send__title_confirm_sending: str = "CONFIRM SENDING" + send__title_joint_transaction: str = "JOINT TRANSACTION" + send__title_receiving_to: str = "RECEIVING TO" + send__title_sending: str = "SENDING" + send__title_sending_amount: str = "SENDING AMOUNT" + send__title_sending_to: str = "SENDING TO" + send__to_the_total_amount: str = "To the total amount:" + send__total_amount: str = "Total amount:" + send__transaction_id: str = "Transaction ID:" + send__you_are_contributing: str = "You are contributing:" + share_words__words_in_order: str = " words in order." + share_words__wrote_down_all: str = "I wrote down all " + sign_message__bytes_template: str = "{} Bytes" + sign_message__confirm_address: str = "SIGNING ADDRESS" + sign_message__confirm_message: str = "CONFIRM MESSAGE" + sign_message__message_size: str = "Message size:" + sign_message__verify_address: str = "VERIFY ADDRESS" + solana__account_index: str = "Account index" + solana__associated_token_account: str = "Associated token account" + solana__confirm_multisig: str = "Confirm multisig" + solana__expected_fee: str = "Expected fee" + solana__instruction_accounts_template: str = "Instruction contains {} accounts and its data is {} bytes long." + solana__instruction_data: str = "Instruction data" + solana__instruction_is_multisig: str = "The following instruction is a multisig instruction." + solana__is_provided_via_lookup_table_template: str = "{} is provided via a lookup table." + solana__lookup_table_address: str = "Lookup table address" + solana__multiple_signers: str = "Multiple signers" + solana__token_address: str = "Token address" + solana__transaction_contains_unknown_instructions: str = "Transaction contains unknown instructions." + solana__transaction_requires_x_signers_template: str = "Transaction requires {} signers which increases the fee." + stellar__account_merge: str = "Account Merge" + stellar__account_thresholds: str = "Account Thresholds" + stellar__add_signer: str = "Add Signer" + stellar__add_trust: str = "Add trust" + stellar__all_will_be_sent_to: str = "All XLM will be sent to:" + stellar__allow_trust: str = "Allow trust" + stellar__asset: str = "Asset" + stellar__balance_id: str = "Balance ID" + stellar__bump_sequence: str = "Bump Sequence" + stellar__buying: str = "Buying:" + stellar__claim_claimable_balance: str = "Claim Claimable Balance" + stellar__clear_data: str = "Clear data" + stellar__clear_flags: str = "Clear flags" + stellar__confirm_issuer: str = "Confirm Issuer" + stellar__confirm_memo: str = "Confirm memo" + stellar__confirm_network: str = "Confirm network" + stellar__confirm_operation: str = "Confirm operation" + stellar__confirm_stellar: str = "Confirm Stellar" + stellar__confirm_timebounds: str = "Confirm timebounds" + stellar__create_account: str = "Create Account" + stellar__debited_amount: str = "Debited amount" + stellar__delete: str = "Delete" + stellar__delete_passive_offer: str = "Delete Passive Offer" + stellar__delete_trust: str = "Delete trust" + stellar__destination: str = "Destination:" + stellar__exchanges_require_memo: str = "Important: Many exchanges require a memo when depositing" + stellar__final_confirm: str = "Final confirm" + stellar__hash: str = "Hash:" + stellar__high: str = "High:" + stellar__home_domain: str = "Home Domain" + stellar__inflation: str = "Inflation" + stellar__initial_balance: str = "Initial Balance" + stellar__initialize_signing_with: str = "Initialize signing with" + stellar__issuer_template: str = "{} issuer:" + stellar__key: str = "Key:" + stellar__limit: str = "Limit:" + stellar__low: str = "Low:" + stellar__master_weight: str = "Master Weight:" + stellar__medium: str = "Medium:" + stellar__new_offer: str = "New Offer" + stellar__new_passive_offer: str = "New Passive Offer" + stellar__no_memo_set: str = "No memo set!" + stellar__no_restriction: str = "[no restriction]" + stellar__on_network_template: str = "Transaction is on {}" + stellar__path_pay: str = "Path Pay" + stellar__path_pay_at_least: str = "Path Pay at least" + stellar__pay: str = "Pay:" + stellar__pay_at_most: str = "Pay at most:" + stellar__preauth_transaction: str = "Pre-auth transaction:" + stellar__price_per_template: str = "Price per {}:" + stellar__private_network: str = "private network" + stellar__remove_signer: str = "Remove Signer" + stellar__revoke_trust: str = "Revoke trust" + stellar__selling: str = "Selling:" + stellar__set_data: str = "Set data" + stellar__set_flags: str = "Set flags" + stellar__set_sequence_to_template: str = "Set sequence to {}?" + stellar__sign_tx_count_template: str = "Sign this transaction made up of {}" + stellar__sign_tx_fee_template: str = "and pay {}\nfor fee?" + stellar__source_account: str = "Source account:" + stellar__testnet_network: str = "testnet network" + stellar__trusted_account: str = "Trusted Account" + stellar__update: str = "Update" + stellar__valid_from: str = "Valid from (UTC)" + stellar__valid_to: str = "Valid to (UTC)" + stellar__value_sha256: str = "Value (SHA-256):" + stellar__wanna_clean_value_key_template: str = "Do you want to clear value key {}?" + stellar__your_account: str = " your account" + tezos__baker_address: str = "Baker address:" + tezos__balance: str = "Balance:" + tezos__ballot: str = "Ballot:" + tezos__confirm_delegation: str = "Confirm delegation" + tezos__confirm_origination: str = "Confirm origination" + tezos__delegator: str = "Delegator:" + tezos__proposal: str = "Proposal" + tezos__register_delegate: str = "Register delegate" + tezos__remove_delegation: str = "Remove delegation" + tezos__submit_ballot: str = "Submit ballot" + tezos__submit_proposal: str = "Submit proposal" + tezos__submit_proposals: str = "Submit proposals" + tutorial__middle_click: str = "Press both left and right at the same\ntime to confirm." + tutorial__press_and_hold: str = "Press and hold the right button to\napprove important operations." + tutorial__ready_to_use: str = "You're ready to\nuse Trezor." + tutorial__scroll_down: str = "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up." + tutorial__sure_you_want_skip: str = "Are you sure you\nwant to skip the tutorial?" + tutorial__title_hello: str = "HELLO" + tutorial__title_screen_scroll: str = "SCREEN SCROLL" + tutorial__title_skip: str = "SKIP TUTORIAL" + tutorial__title_tutorial_complete: str = "TUTORIAL COMPLETE" + tutorial__use_trezor: str = "Use Trezor by\nclicking the left and right buttons.\n\rContinue right." + tutorial__welcome_press_right: str = "Welcome to Trezor. Press right to continue." + u2f__get: str = "Increase and retrieve the U2F counter?" + u2f__set_template: str = "Set the U2F counter to {}?" + u2f__title_get: str = "GET U2F COUNTER" + u2f__title_set: str = "SET U2F COUNTER" + wipe__info: str = "All data will be erased." + wipe__title: str = "WIPE DEVICE" + wipe__want_to_wipe: str = "Do you really want to wipe the device?\n" + wipe_code__change: str = "Change wipe code?" + wipe_code__changed: str = "Wipe code changed." + wipe_code__diff_from_pin: str = "The wipe code must be different from your PIN." + wipe_code__disabled: str = "Wipe code disabled." + wipe_code__enabled: str = "Wipe code enabled." + wipe_code__enter_new: str = "Enter new wipe code" + wipe_code__info: str = "Wipe code can be used to erase all data from this device." + wipe_code__invalid: str = "Invalid wipe code" + wipe_code__mismatch: str = "The wipe codes you entered do not match." + wipe_code__reenter: str = "Re-enter wipe code" + wipe_code__reenter_to_confirm: str = "Please re-enter wipe code to confirm." + wipe_code__title_check: str = "CHECK WIPE CODE" + wipe_code__title_invalid: str = "INVALID WIPE CODE" + wipe_code__title_settings: str = "WIPE CODE SETTINGS" + wipe_code__turn_off: str = "Turn off wipe code protection?" + wipe_code__turn_on: str = "Turn on wipe code protection?" + wipe_code__wipe_code_mismatch: str = "Wipe code mismatch" + word_count__title: str = "NUMBER OF WORDS" + words__account: str = "Account" + words__account_colon: str = "Account:" + words__address: str = "Address" + words__amount: str = "Amount" + words__are_you_sure: str = "Are you sure?" + words__array_of: str = "Array of" + words__blockhash: str = "Blockhash" + words__buying: str = "Buying" + words__confirm: str = "Confirm" + words__confirm_fee: str = "Confirm fee" + words__contains: str = "Contains" + words__continue_anyway: str = "Continue anyway?" + words__continue_with: str = "Continue with" + words__error: str = "Error" + words__fee: str = "Fee" + words__from: str = "from" + words__keep_it_safe: str = "Keep it safe!" + words__know_what_your_doing: str = "Continue only if you know what you are doing!" + words__my_trezor: str = "My Trezor" + words__no: str = "No" + words__outputs: str = "outputs" + words__please_check_again: str = "Please check again" + words__please_try_again: str = "Please try again" + words__really_wanna: str = "Do you really want to" + words__recipient: str = "Recipient" + words__sign: str = "Sign" + words__signer: str = "Signer" + words__title_check: str = "CHECK" + words__title_group: str = "GROUP" + words__title_information: str = "INFORMATION" + words__title_remember: str = "REMEMBER" + words__title_share: str = "SHARE" + words__title_shares: str = "SHARES" + words__title_success: str = "SUCCESS" + words__title_summary: str = "SUMMARY" + words__title_threshold: str = "THRESHOLD" + words__unknown: str = "Unknown" + words__warning: str = "Warning" + words__writable: str = "Writable" + words__yes: str = "Yes" + diff --git a/core/mocks/trezortranslate_keys.pyi.mako b/core/mocks/trezortranslate_keys.pyi.mako new file mode 100644 index 000000000..96e042b9e --- /dev/null +++ b/core/mocks/trezortranslate_keys.pyi.mako @@ -0,0 +1,19 @@ +# generated from trezortranslate_keys.pyi.mako +# (by running `make templates` in `core`) +# do not edit manually! +<% +import json +from pathlib import Path + +THIS = Path(local.filename).resolve() +CORE_DIR = THIS.parent.parent + +en_file = CORE_DIR / "embed" / "rust" / "src" / "translations" / "en.json" +en_data = json.loads(en_file.read_text())["translations"] + +%>\ +class TR: +% for name, text in sorted(en_data.items()): + ${name}: str = ${json.dumps(text)} +% endfor + diff --git a/core/site_scons/boards/stm32f4_common.py b/core/site_scons/boards/stm32f4_common.py index b47e45c8f..e6a435636 100644 --- a/core/site_scons/boards/stm32f4_common.py +++ b/core/site_scons/boards/stm32f4_common.py @@ -47,6 +47,7 @@ def stm32f4_common_files(env, defines, sources, paths): "embed/trezorhal/stm32f4/random_delays.c", "embed/trezorhal/stm32f4/rng.c", "embed/trezorhal/stm32f4/vectortable.s", + "embed/trezorhal/stm32f4/translations.c", ] # boardloader needs separate assembler for some function unencumbered by various FW+bootloader hacks diff --git a/core/src/all_modules.py b/core/src/all_modules.py index aba9d6a11..89d54c72c 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -321,6 +321,8 @@ apps.management.backup_device import apps.management.backup_device apps.management.backup_types import apps.management.backup_types +apps.management.change_language +import apps.management.change_language apps.management.change_pin import apps.management.change_pin apps.management.change_wipe_code diff --git a/core/src/apps/base.py b/core/src/apps/base.py index 627909cc0..931427c99 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -2,9 +2,10 @@ from typing import TYPE_CHECKING import storage.cache as storage_cache import storage.device as storage_device -from trezor import config, utils, wire, workflow +from trezor import TR, config, utils, wire, workflow from trezor.enums import HomescreenFormat, MessageType from trezor.messages import Success, UnlockPath +from trezor.ui.layouts import confirm_action from . import workflow_handlers @@ -44,19 +45,22 @@ def busy_expiry_ms() -> int: def get_features() -> Features: import storage.recovery as storage_recovery + from trezor import translations from trezor.enums import Capability from trezor.messages import Features from trezor.ui import HEIGHT, WIDTH from apps.common import mnemonic, safety_checks + v_major, v_minor, v_patch, _v_build = utils.VERSION + f = Features( vendor="trezor.io", fw_vendor=utils.firmware_vendor(), - language="en-US", - major_version=utils.VERSION_MAJOR, - minor_version=utils.VERSION_MINOR, - patch_version=utils.VERSION_PATCH, + language=translations.get_language(), + major_version=v_major, + minor_version=v_minor, + patch_version=v_patch, revision=utils.SCM_REVISION, model=utils.MODEL, internal_model=utils.INTERNAL_MODEL, @@ -221,7 +225,7 @@ async def handle_Ping(msg: Ping) -> Success: from trezor.enums import ButtonRequestType as B from trezor.ui.layouts import confirm_action - await confirm_action("ping", "Confirm", "ping", br_code=B.ProtectCall) + await confirm_action("ping", TR.words__confirm, "ping", br_code=B.ProtectCall) return Success(message=msg.message) @@ -252,7 +256,6 @@ async def handle_DoPreauthorized(msg: DoPreauthorized) -> protobuf.MessageType: async def handle_UnlockPath(msg: UnlockPath) -> protobuf.MessageType: from trezor.crypto import hmac from trezor.messages import UnlockedPathRequest - from trezor.ui.layouts import confirm_action from trezor.wire.context import call_any, get_context from apps.common.paths import SLIP25_PURPOSE @@ -285,8 +288,8 @@ async def handle_UnlockPath(msg: UnlockPath) -> protobuf.MessageType: await confirm_action( "confirm_coinjoin_access", title="Coinjoin", - description="Access your coinjoin account?", - verb="ACCESS", + description=TR.coinjoin__access_account, + verb=TR.buttons__access, ) wire_types = (MessageType.GetAddress, MessageType.GetPublicKey, MessageType.SignTx) diff --git a/core/src/apps/binance/layout.py b/core/src/apps/binance/layout.py index 115f59eeb..f4ad400d6 100644 --- a/core/src/apps/binance/layout.py +++ b/core/src/apps/binance/layout.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING, Sequence +from trezor import TR from trezor.enums import ButtonRequestType from trezor.strings import format_amount from trezor.ui.layouts import confirm_properties @@ -29,10 +30,10 @@ async def require_confirm_transfer(msg: BinanceTransferMsg) -> None: ) for txinput in msg.inputs: - make_input_output_pages(txinput, "Confirm input") + make_input_output_pages(txinput, TR.binance__confirm_input) for txoutput in msg.outputs: - make_input_output_pages(txoutput, "Confirm output") + make_input_output_pages(txoutput, TR.binance__confirm_output) await _confirm_transfer(items, chunkify=bool(msg.chunkify)) @@ -51,11 +52,11 @@ async def _confirm_transfer( async def require_confirm_cancel(msg: BinanceCancelMsg) -> None: await confirm_properties( "confirm_cancel", - "Confirm cancel", + TR.binance__confirm_cancel, ( - ("Sender address:", str(msg.sender)), - ("Pair:", str(msg.symbol)), - ("Order ID:", str(msg.refid)), + (TR.binance__sender_address, str(msg.sender)), + (TR.binance__pair, str(msg.symbol)), + (TR.binance__order_id, str(msg.refid)), ), hold=True, br_code=ButtonRequestType.SignTx, @@ -66,21 +67,21 @@ async def require_confirm_order(msg: BinanceOrderMsg) -> None: from trezor.enums import BinanceOrderSide if msg.side == BinanceOrderSide.BUY: - side = "Buy" + side = TR.binance__buy elif msg.side == BinanceOrderSide.SELL: - side = "Sell" + side = TR.binance__sell else: - side = "Unknown" + side = TR.words__unknown await confirm_properties( "confirm_order", - "Confirm order", + TR.binance__confirm_order, ( - ("Sender address:", str(msg.sender)), - ("Pair:", str(msg.symbol)), - ("Side:", side), - ("Quantity:", format_amount(msg.quantity, DECIMALS)), - ("Price:", format_amount(msg.price, DECIMALS)), + (TR.binance__sender_address, str(msg.sender)), + (TR.binance__pair, str(msg.symbol)), + (TR.binance__side, side), + (TR.binance__quantity, format_amount(msg.quantity, DECIMALS)), + (TR.binance__price, format_amount(msg.price, DECIMALS)), ), hold=True, br_code=ButtonRequestType.SignTx, diff --git a/core/src/apps/bitcoin/authorize_coinjoin.py b/core/src/apps/bitcoin/authorize_coinjoin.py index 2833d2bf6..cc43f2589 100644 --- a/core/src/apps/bitcoin/authorize_coinjoin.py +++ b/core/src/apps/bitcoin/authorize_coinjoin.py @@ -19,6 +19,7 @@ _MAX_COORDINATOR_FEE_RATE = 5 * pow(10, FEE_RATE_DECIMALS) # 5 % async def authorize_coinjoin( msg: AuthorizeCoinJoin, keychain: Keychain, coin: CoinInfo ) -> Success: + from trezor import TR from trezor.enums import ButtonRequestType from trezor.messages import Success from trezor.ui.layouts import confirm_coinjoin, confirm_metadata @@ -79,8 +80,8 @@ async def authorize_coinjoin( if msg.max_fee_per_kvbyte > coin.maxfee_kb: await confirm_metadata( "fee_over_threshold", - "High mining fee", - "The mining fee of\n{}\nis unexpectedly high.", + TR.bitcoin__title_high_mining_fee, + TR.bitcoin__high_mining_fee_template, max_fee_per_vbyte, ButtonRequestType.FeeOverThreshold, ) diff --git a/core/src/apps/bitcoin/get_address.py b/core/src/apps/bitcoin/get_address.py index caeb990ed..51faec437 100644 --- a/core/src/apps/bitcoin/get_address.py +++ b/core/src/apps/bitcoin/get_address.py @@ -31,6 +31,7 @@ def _get_xpubs( @with_keychain async def get_address(msg: GetAddress, keychain: Keychain, coin: CoinInfo) -> Address: + from trezor import TR from trezor.enums import InputScriptType from trezor.messages import Address from trezor.ui.layouts import show_address, show_warning @@ -105,8 +106,8 @@ async def get_address(msg: GetAddress, keychain: Keychain, coin: CoinInfo) -> Ad await show_warning( "warning_multisig", - "Receiving to a multisig address.", - "Continue anyway?", + TR.send__receiving_to_multisig, + TR.words__continue_anyway, ) await show_address( diff --git a/core/src/apps/bitcoin/get_ownership_proof.py b/core/src/apps/bitcoin/get_ownership_proof.py index 187d5a4f1..1bb2fe27c 100644 --- a/core/src/apps/bitcoin/get_ownership_proof.py +++ b/core/src/apps/bitcoin/get_ownership_proof.py @@ -18,6 +18,7 @@ async def get_ownership_proof( coin: CoinInfo, authorization: CoinJoinAuthorization | None = None, ) -> OwnershipProof: + from trezor import TR from trezor.enums import InputScriptType from trezor.messages import OwnershipProof from trezor.ui.layouts import confirm_action, confirm_blob @@ -71,15 +72,15 @@ async def get_ownership_proof( if msg.user_confirmation and not authorization: await confirm_action( "confirm_ownership_proof", - "Proof of ownership", - description="Do you want to create a proof of ownership?", + TR.bitcoin__title_proof_of_ownership, + description=TR.bitcoin__create_proof_of_ownership, ) if msg.commitment_data: await confirm_blob( "confirm_ownership_proof", - "Proof of ownership", + TR.bitcoin__title_proof_of_ownership, msg.commitment_data, - "Commitment data:", + TR.bitcoin__commitment_data, ) ownership_proof, signature = generate_proof( diff --git a/core/src/apps/bitcoin/get_public_key.py b/core/src/apps/bitcoin/get_public_key.py index d1f60ec74..3658a8b81 100644 --- a/core/src/apps/bitcoin/get_public_key.py +++ b/core/src/apps/bitcoin/get_public_key.py @@ -9,7 +9,7 @@ if TYPE_CHECKING: async def get_public_key( msg: GetPublicKey, auth_msg: MessageType | None = None ) -> PublicKey: - from trezor import wire + from trezor import TR, wire from trezor.enums import InputScriptType from trezor.messages import HDNodeType, PublicKey, UnlockPath @@ -107,7 +107,7 @@ async def get_public_key( "XPUB", account=account, path=path, - mismatch_title="XPUB mismatch?", + mismatch_title=TR.addr_mismatch__xpub_mismatch, br_type="show_xpub", ) diff --git a/core/src/apps/bitcoin/keychain.py b/core/src/apps/bitcoin/keychain.py index 653f4dbe2..136fb9b01 100644 --- a/core/src/apps/bitcoin/keychain.py +++ b/core/src/apps/bitcoin/keychain.py @@ -464,9 +464,11 @@ def address_n_to_name_or_unknown( account_level: bool = False, show_account_str: bool = False, ) -> str: + from trezor import TR + account_name = address_n_to_name(coin, address_n, script_type) if account_name is None: - return "Unknown path" + return TR.bitcoin__unknown_path elif account_name == "": return coin.coin_shortcut else: diff --git a/core/src/apps/bitcoin/sign_tx/approvers.py b/core/src/apps/bitcoin/sign_tx/approvers.py index 27ac1cebc..b6656f70d 100644 --- a/core/src/apps/bitcoin/sign_tx/approvers.py +++ b/core/src/apps/bitcoin/sign_tx/approvers.py @@ -257,16 +257,18 @@ class BasicApprover(Approver): def _replacement_title( self, tx_info: TxInfo, orig_txs: list[OriginalTxInfo] ) -> str: + from trezor import TR + if self.is_payjoin(): - return "PayJoin" + return TR.bitcoin__title_payjoin elif tx_info.rbf_disabled() and any( not orig.rbf_disabled() for orig in orig_txs ): - return "Finalize transaction" + return TR.bitcoin__title_finalize_transaction elif len(orig_txs) > 1: - return "Meld transactions" + return TR.bitcoin__title_meld_transaction else: - return "Update transaction" + return TR.bitcoin__title_update_transaction async def approve_tx(self, tx_info: TxInfo, orig_txs: list[OriginalTxInfo]) -> None: from trezor.wire import NotEnoughFunds diff --git a/core/src/apps/bitcoin/sign_tx/layout.py b/core/src/apps/bitcoin/sign_tx/layout.py index 4323cc410..73874063b 100644 --- a/core/src/apps/bitcoin/sign_tx/layout.py +++ b/core/src/apps/bitcoin/sign_tx/layout.py @@ -1,6 +1,7 @@ from micropython import const from typing import TYPE_CHECKING +from trezor import TR from trezor.enums import ButtonRequestType from trezor.strings import format_amount from trezor.ui import layouts @@ -50,7 +51,7 @@ def format_coin_amount(amount: int, coin: CoinInfo, amount_unit: AmountUnit) -> def account_label(coin: CoinInfo, address_n: Bip32Path | None) -> str: return ( - "Multiple accounts" + TR.bitcoin__multiple_accounts if address_n is None else address_n_to_name(coin, list(address_n) + [0] * BIP32_WALLET_DEPTH) or f"Path {address_n_to_str(address_n)}" @@ -77,7 +78,7 @@ async def confirm_output( "omni_transaction", "OMNI transaction", omni.parse(data), - verb="Confirm", + verb=TR.buttons__confirm, br_code=ButtonRequestType.ConfirmOutput, ) else: @@ -92,7 +93,7 @@ async def confirm_output( assert output.address is not None address_short = addresses.address_short(coin, output.address) if output.payment_req_index is not None: - title = "Confirm details" + title = TR.bitcoin__title_confirm_details else: title = None @@ -110,7 +111,7 @@ async def confirm_output( script_type, show_account_str=show_account_str, ) - or f"address path {address_n_to_str(output.address_n)}" + or f"{TR.send__address_path} {address_n_to_str(output.address_n)}" ) layout = layouts.confirm_output( @@ -133,21 +134,21 @@ async def confirm_decred_sstx_submission( amount = format_coin_amount(output.amount, coin, amount_unit) await layouts.confirm_value( - "Purchase ticket", + TR.bitcoin__title_purchase_ticket, amount, - "Ticket amount:", + TR.bitcoin__ticket_amount, "confirm_decred_sstx_submission", ButtonRequestType.ConfirmOutput, - verb="CONFIRM", + verb=TR.buttons__confirm, ) await layouts.confirm_value( - "Purchase ticket", + TR.bitcoin__title_purchase_ticket, address_short, - "Voting rights to:", + TR.bitcoin__voting_rights, "confirm_decred_sstx_submission", ButtonRequestType.ConfirmOutput, - verb="PURCHASE", + verb=TR.buttons__purchase, ) @@ -165,7 +166,7 @@ async def confirm_payment_request( elif m.refund_memo is not None: pass elif m.coin_purchase_memo is not None: - memo_texts.append(f"Buying {m.coin_purchase_memo.amount}.") + memo_texts.append(f"{TR.words__buying} {m.coin_purchase_memo.amount}.") else: raise wire.DataError("Unrecognized memo type in payment request memo.") @@ -256,7 +257,7 @@ async def confirm_feeoverthreshold( fee_amount = format_coin_amount(fee, coin, amount_unit) await layouts.show_warning( "fee_over_threshold", - "Unusually high fee.", + TR.bitcoin__unusually_high_fee, fee_amount, br_code=ButtonRequestType.FeeOverThreshold, ) @@ -265,8 +266,8 @@ async def confirm_feeoverthreshold( async def confirm_change_count_over_threshold(change_count: int) -> None: await layouts.show_warning( "change_count_over_threshold", - "A lot of change-outputs.", - f"{str(change_count)} outputs", + TR.bitcoin__lot_of_change_outputs, + f"{str(change_count)} {TR.words__outputs}", br_code=ButtonRequestType.SignTx, ) @@ -274,9 +275,9 @@ async def confirm_change_count_over_threshold(change_count: int) -> None: async def confirm_unverified_external_input() -> None: await layouts.show_warning( "unverified_external_input", - "The transaction contains unverified external inputs.", - "Continue anyway?", - button="Continue", + TR.bitcoin__unverified_external_inputs, + TR.words__continue_anyway, + button=TR.buttons__continue, br_code=ButtonRequestType.SignTx, ) @@ -284,9 +285,9 @@ async def confirm_unverified_external_input() -> None: async def confirm_multiple_accounts() -> None: await layouts.show_warning( "sending_from_multiple_accounts", - "Sending from multiple accounts.", - "Continue anyway?", - button="Continue", + TR.send__from_multiple_accounts, + TR.words__continue_anyway, + button=TR.buttons__continue, br_code=ButtonRequestType.SignTx, ) @@ -297,23 +298,23 @@ async def confirm_nondefault_locktime(lock_time: int, lock_time_disabled: bool) if lock_time_disabled: await layouts.show_warning( "nondefault_locktime", - "Locktime is set but will have no effect.", - "Continue anyway?", - button="Continue", + TR.bitcoin__locktime_no_effect, + TR.words__continue_anyway, + button=TR.buttons__continue, br_code=ButtonRequestType.SignTx, ) else: if lock_time < _LOCKTIME_TIMESTAMP_MIN_VALUE: - text = "Locktime set to blockheight:" + text = TR.bitcoin__locktime_set_to_blockheight value = str(lock_time) else: - text = "Locktime set to:" + text = TR.bitcoin__locktime_set_to value = format_timestamp(lock_time) await layouts.confirm_value( - "Confirm locktime", + TR.bitcoin__confirm_locktime, value, text, "nondefault_locktime", br_code=ButtonRequestType.SignTx, - verb="Confirm", + verb=TR.buttons__confirm, ) diff --git a/core/src/apps/bitcoin/sign_tx/omni.py b/core/src/apps/bitcoin/sign_tx/omni.py index ef5dfcd12..476a3b57b 100644 --- a/core/src/apps/bitcoin/sign_tx/omni.py +++ b/core/src/apps/bitcoin/sign_tx/omni.py @@ -17,6 +17,7 @@ def is_valid(data: bytes) -> bool: def parse(data: bytes) -> str: from ustruct import unpack + from trezor import TR from trezor.strings import format_amount if not is_valid(data): @@ -25,7 +26,9 @@ def parse(data: bytes) -> str: if tx_version == 0 and tx_type == 0 and len(data) == 20: # OMNI simple send currency, amount = unpack(">IQ", data[8:20]) suffix, decimals = currencies.get(currency, ("UNKN", 0)) - return f"Simple send of {format_amount(amount, decimals)} {suffix}" + return ( + f"{TR.bitcoin__simple_send_of} {format_amount(amount, decimals)} {suffix}" + ) else: # unknown OMNI transaction - return "Unknown transaction" + return TR.bitcoin__unknown_transaction diff --git a/core/src/apps/bitcoin/sign_tx/progress.py b/core/src/apps/bitcoin/sign_tx/progress.py index af8dc3683..e94e3a136 100644 --- a/core/src/apps/bitcoin/sign_tx/progress.py +++ b/core/src/apps/bitcoin/sign_tx/progress.py @@ -112,12 +112,16 @@ class Progress: self.report() def report_init(self) -> None: - from trezor import workflow + from trezor import TR, workflow from trezor.ui.layouts.progress import bitcoin_progress, coinjoin_progress progress_layout = coinjoin_progress if self.is_coinjoin else bitcoin_progress workflow.close_others() - text = "Signing transaction..." if self.signing else "Loading transaction..." + text = ( + TR.progress__signing_transaction + if self.signing + else TR.progress__loading_transaction + ) self.progress_layout = progress_layout(text) def report(self) -> None: diff --git a/core/src/apps/bitcoin/verify_message.py b/core/src/apps/bitcoin/verify_message.py index c90e608bc..2c301db42 100644 --- a/core/src/apps/bitcoin/verify_message.py +++ b/core/src/apps/bitcoin/verify_message.py @@ -51,7 +51,7 @@ def _address_to_script_type(address: str, coin: CoinInfo) -> InputScriptType: async def verify_message(msg: VerifyMessage) -> Success: - from trezor import utils + from trezor import TR, utils from trezor.crypto.curve import secp256k1 from trezor.enums import InputScriptType from trezor.messages import Success @@ -116,5 +116,5 @@ async def verify_message(msg: VerifyMessage) -> Success: verify=True, ) - await show_success("verify_message", "The signature is valid.") + await show_success("verify_message", TR.bitcoin__valid_signature) return Success(message="Message verified") diff --git a/core/src/apps/cardano/get_public_key.py b/core/src/apps/cardano/get_public_key.py index 5d637fe78..8b2856e87 100644 --- a/core/src/apps/cardano/get_public_key.py +++ b/core/src/apps/cardano/get_public_key.py @@ -1,6 +1,8 @@ from typing import TYPE_CHECKING from ubinascii import hexlify +from trezor import TR + from . import seed if TYPE_CHECKING: @@ -38,7 +40,7 @@ async def get_public_key( from apps.common.paths import address_n_to_str path = address_n_to_str(address_n) - await show_pubkey(key.xpub, "Public key", path=path) + await show_pubkey(key.xpub, TR.address__public_key, path=path) return key diff --git a/core/src/apps/cardano/helpers/credential.py b/core/src/apps/cardano/helpers/credential.py index 540498b88..b951c83fd 100644 --- a/core/src/apps/cardano/helpers/credential.py +++ b/core/src/apps/cardano/helpers/credential.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import TR from trezor.enums import CardanoAddressType from .paths import SCHEMA_PAYMENT @@ -163,13 +164,13 @@ class Credential: def get_title(self) -> str: if self.path: - return "path" + return TR.cardano__path elif self.key_hash: - return "key hash" + return TR.cardano__key_hash elif self.script_hash: - return "script" + return TR.cardano__script elif self.pointer: - return "pointer" + return TR.cardano__pointer else: return "" @@ -192,9 +193,9 @@ class Credential: return [(None, bech32.encode(bech32.HRP_SCRIPT_HASH, self.script_hash))] elif pointer: return [ - (f"Block: {pointer.block_index}", None), - (f"Transaction: {pointer.tx_index}", None), - (f"Certificate: {pointer.certificate_index}", None), + (f"{TR.cardano__block}: {pointer.block_index}", None), + (f"{TR.cardano__transaction}: {pointer.tx_index}", None), + (f"{TR.cardano__certificate}: {pointer.certificate_index}", None), ] else: return [] diff --git a/core/src/apps/cardano/helpers/paths.py b/core/src/apps/cardano/helpers/paths.py index cfcf300d3..9fade5b70 100644 --- a/core/src/apps/cardano/helpers/paths.py +++ b/core/src/apps/cardano/helpers/paths.py @@ -25,9 +25,3 @@ CHAIN_STAKING_KEY = const(2) ADDRESS_INDEX_PATH_INDEX = const(4) RECOMMENDED_ADDRESS_INDEX = const(0) # https://cips.cardano.org/cips/cip11/ - -CHANGE_OUTPUT_PATH_NAME = "Change output path" -CHANGE_OUTPUT_STAKING_PATH_NAME = "Change output staking path" -CERTIFICATE_PATH_NAME = "Certificate path" -POOL_OWNER_STAKING_PATH_NAME = "Pool owner staking path" -WITNESS_PATH_NAME = "Witness path" diff --git a/core/src/apps/cardano/helpers/protocol_magics.py b/core/src/apps/cardano/helpers/protocol_magics.py index 513c73b98..47f1ef937 100644 --- a/core/src/apps/cardano/helpers/protocol_magics.py +++ b/core/src/apps/cardano/helpers/protocol_magics.py @@ -1,5 +1,7 @@ from micropython import const +from trezor import TR + # https://book.world.dev.cardano.org/environments.html MAINNET = const(764824073) TESTNET_PREPROD = const(1) @@ -19,4 +21,4 @@ def is_mainnet(protocol_magic: int) -> bool: def to_ui_string(value: int) -> str: - return NAMES.get(value, "Unknown") + return NAMES.get(value, TR.words__unknown) diff --git a/core/src/apps/cardano/layout.py b/core/src/apps/cardano/layout.py index 4b7c69aeb..8d9b5c1b3 100644 --- a/core/src/apps/cardano/layout.py +++ b/core/src/apps/cardano/layout.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING -from trezor import ui +from trezor import TR, ui from trezor.enums import ( ButtonRequestType, CardanoAddressType, @@ -34,40 +34,38 @@ if TYPE_CHECKING: ADDRESS_TYPE_NAMES = { - CardanoAddressType.BYRON: "Legacy", - CardanoAddressType.BASE: "Base", - CardanoAddressType.BASE_SCRIPT_KEY: "Base", - CardanoAddressType.BASE_KEY_SCRIPT: "Base", - CardanoAddressType.BASE_SCRIPT_SCRIPT: "Base", - CardanoAddressType.POINTER: "Pointer", - CardanoAddressType.POINTER_SCRIPT: "Pointer", - CardanoAddressType.ENTERPRISE: "Enterprise", - CardanoAddressType.ENTERPRISE_SCRIPT: "Enterprise", - CardanoAddressType.REWARD: "Reward", - CardanoAddressType.REWARD_SCRIPT: "Reward", + CardanoAddressType.BYRON: TR.cardano__addr_legacy, + CardanoAddressType.BASE: TR.cardano__addr_base, + CardanoAddressType.BASE_SCRIPT_KEY: TR.cardano__addr_base, + CardanoAddressType.BASE_KEY_SCRIPT: TR.cardano__addr_base, + CardanoAddressType.BASE_SCRIPT_SCRIPT: TR.cardano__addr_base, + CardanoAddressType.POINTER: TR.cardano__addr_pointer, + CardanoAddressType.POINTER_SCRIPT: TR.cardano__addr_pointer, + CardanoAddressType.ENTERPRISE: TR.cardano__addr_enterprise, + CardanoAddressType.ENTERPRISE_SCRIPT: TR.cardano__addr_enterprise, + CardanoAddressType.REWARD: TR.cardano__addr_reward, + CardanoAddressType.REWARD_SCRIPT: TR.cardano__addr_reward, } SCRIPT_TYPE_NAMES = { - CardanoNativeScriptType.PUB_KEY: "Key", - CardanoNativeScriptType.ALL: "All", - CardanoNativeScriptType.ANY: "Any", - CardanoNativeScriptType.N_OF_K: "N of K", - CardanoNativeScriptType.INVALID_BEFORE: "Invalid before", - CardanoNativeScriptType.INVALID_HEREAFTER: "Invalid hereafter", + CardanoNativeScriptType.PUB_KEY: TR.cardano__script_key, + CardanoNativeScriptType.ALL: TR.cardano__script_all, + CardanoNativeScriptType.ANY: TR.cardano__script_any, + CardanoNativeScriptType.N_OF_K: TR.cardano__script_n_of_k, + CardanoNativeScriptType.INVALID_BEFORE: TR.cardano__script_invalid_before, + CardanoNativeScriptType.INVALID_HEREAFTER: TR.cardano__script_invalid_hereafter, } CERTIFICATE_TYPE_NAMES = { - CardanoCertificateType.STAKE_REGISTRATION: "Stake key registration", - CardanoCertificateType.STAKE_DEREGISTRATION: "Stake key deregistration", - CardanoCertificateType.STAKE_DELEGATION: "Stake delegation", - CardanoCertificateType.STAKE_POOL_REGISTRATION: "Stakepool registration", + CardanoCertificateType.STAKE_REGISTRATION: TR.cardano__stake_registration, + CardanoCertificateType.STAKE_DEREGISTRATION: TR.cardano__stake_deregistration, + CardanoCertificateType.STAKE_DELEGATION: TR.cardano__stake_delegation, + CardanoCertificateType.STAKE_POOL_REGISTRATION: TR.cardano__stake_pool_registration, } BRT_Other = ButtonRequestType.Other # global_import_cache -CVOTE_REWARD_ELIGIBILITY_WARNING = ( - "Warning: The address is not a payment address, it is not eligible for rewards." -) +CVOTE_REWARD_ELIGIBILITY_WARNING = TR.cardano__reward_eligibility_warning def format_coin_amount(amount: int, network_id: int) -> str: @@ -118,7 +116,9 @@ async def show_native_script( assert script.required_signatures_count is not None # validate_script append( ( - f"Requires {script.required_signatures_count} out of {len(scripts)} signatures.", + TR.cardano__x_of_y_signatures_template.format( + script.required_signatures_count, len(scripts) + ), None, ) ) @@ -135,11 +135,11 @@ async def show_native_script( CNST.N_OF_K, ): assert scripts # validate_script - append((f"Contains {len(scripts)} nested scripts.", None)) + append((TR.cardano__nested_scripts_template.format(len(scripts)), None)) await confirm_properties( "verify_script", - "Verify script", + TR.cardano__verify_script, props, br_code=BRT_Other, ) @@ -162,32 +162,37 @@ async def show_script_hash( if display_format == CardanoNativeScriptHashDisplayFormat.BECH32: await confirm_properties( "verify_script", - "Verify script", - (("Script hash:", bech32.encode(bech32.HRP_SCRIPT_HASH, script_hash)),), + TR.cardano__verify_script, + ( + ( + TR.cardano__script_hash, + bech32.encode(bech32.HRP_SCRIPT_HASH, script_hash), + ), + ), br_code=BRT_Other, ) elif display_format == CardanoNativeScriptHashDisplayFormat.POLICY_ID: await layouts.confirm_blob( "verify_script", - "Verify script", + TR.cardano__verify_script, script_hash, - "Policy ID:", + TR.cardano__policy_id, br_code=BRT_Other, ) async def show_tx_init(title: str) -> bool: should_show_details = await layouts.should_show_more( - "Confirm transaction", + TR.cardano__confirm_transaction, ( ( ui.DEMIBOLD, title, ), - (ui.NORMAL, "Choose level of details:"), + (ui.NORMAL, TR.cardano__choose_level_of_details), ), - "Show All", - confirm="Show Simple", + TR.buttons__show_all, + confirm=TR.cardano__show_simple, ) return should_show_details @@ -196,10 +201,10 @@ async def show_tx_init(title: str) -> bool: async def confirm_input(input: messages.CardanoTxInput) -> None: await confirm_properties( "confirm_input", - "Confirm transaction", + TR.cardano__confirm_transaction, ( - ("Input ID:", input.prev_hash), - ("Input index:", str(input.prev_index)), + (TR.cardano__input_id, input.prev_hash), + (TR.cardano__input_index, str(input.prev_index)), ), br_code=BRT_Other, ) @@ -213,11 +218,11 @@ async def confirm_sending( chunkify: bool, ) -> None: if output_type == "address": - title = "Sending" + title = TR.cardano__sending elif output_type == "change": - title = "Change output" + title = TR.cardano__change_output elif output_type == "collateral-return": - title = "Collateral return" + title = TR.cardano__collateral_return else: raise RuntimeError # should be unreachable @@ -235,16 +240,16 @@ async def confirm_sending_token(policy_id: bytes, token: messages.CardanoToken) await confirm_properties( "confirm_token", - "Confirm transaction", + TR.cardano__confirm_transaction, ( ( - "Asset fingerprint:", + TR.cardano__asset_fingerprint, format_asset_fingerprint( policy_id=policy_id, asset_name_bytes=token.asset_name_bytes, ), ), - ("Amount sent (decimals unknown):", format_amount(token.amount, 0)), + (TR.cardano__amount_sent_decimals_unknown, format_amount(token.amount, 0)), ), br_code=BRT_Other, ) @@ -253,10 +258,10 @@ async def confirm_sending_token(policy_id: bytes, token: messages.CardanoToken) async def confirm_datum_hash(datum_hash: bytes) -> None: await confirm_properties( "confirm_datum_hash", - "Confirm transaction", + TR.cardano__confirm_transaction, ( ( - "Datum hash:", + TR.cardano__datum_hash, bech32.encode(bech32.HRP_OUTPUT_DATUM_HASH, datum_hash), ), ), @@ -267,7 +272,7 @@ async def confirm_datum_hash(datum_hash: bytes) -> None: async def confirm_inline_datum(first_chunk: bytes, inline_datum_size: int) -> None: await _confirm_data_chunk( "confirm_inline_datum", - "Inline datum", + TR.cardano__inline_datum, first_chunk, inline_datum_size, ) @@ -278,7 +283,7 @@ async def confirm_reference_script( ) -> None: await _confirm_data_chunk( "confirm_reference_script", - "Reference script", + TR.cardano__reference_script, first_chunk, reference_script_size, ) @@ -300,7 +305,7 @@ async def _confirm_data_chunk( props.append(("...", None)) await confirm_properties( br_type, - title="Confirm transaction", + title=TR.cardano__confirm_transaction, props=props, br_code=BRT_Other, ) @@ -310,7 +315,7 @@ async def show_credentials( payment_credential: Credential, stake_credential: Credential, ) -> None: - intro_text = "Address" + intro_text = TR.words__address await _show_credential(payment_credential, intro_text, purpose="address") await _show_credential(stake_credential, intro_text, purpose="address") @@ -319,7 +324,7 @@ async def show_change_output_credentials( payment_credential: Credential, stake_credential: Credential, ) -> None: - intro_text = "The following address is a change address. Its" + intro_text = TR.cardano__intro_text_change await _show_credential(payment_credential, intro_text, purpose="output") await _show_credential(stake_credential, intro_text, purpose="output") @@ -329,7 +334,7 @@ async def show_device_owned_output_credentials( stake_credential: Credential, show_both_credentials: bool, ) -> None: - intro_text = "The following address is owned by this device. Its" + intro_text = TR.cardano__intro_text_owned_by_device await _show_credential(payment_credential, intro_text, purpose="output") if show_both_credentials: await _show_credential(stake_credential, intro_text, purpose="output") @@ -341,9 +346,8 @@ async def show_cvote_registration_payment_credentials( show_both_credentials: bool, show_payment_warning: bool, ) -> None: - intro_text = ( - "The vote key registration payment address is owned by this device. Its" - ) + intro_text = TR.cardano__intro_text_registration_payment + await _show_credential( payment_credential, intro_text, purpose="cvote_reg_payment_address" ) @@ -365,8 +369,8 @@ async def _show_credential( ) -> None: title = { "address": f"{ADDRESS_TYPE_NAMES[credential.address_type]} address", - "output": "Confirm transaction", - "cvote_reg_payment_address": "Confirm transaction", + "output": TR.cardano__confirm_transaction, + "cvote_reg_payment_address": TR.cardano__confirm_transaction, }[purpose] props: list[PropertyType] = [] @@ -377,6 +381,7 @@ async def _show_credential( # show some of the "props". if credential.is_set(): credential_title = credential.get_title() + # TODO: handle translation append( ( f"{intro_text} {credential.type_name} credential is a {credential_title}:", @@ -386,16 +391,16 @@ async def _show_credential( props.extend(credential.format()) if credential.is_unusual_path: - append((None, "Path is unusual.")) + append((None, TR.cardano__unusual_path)) if credential.is_mismatch: - append((None, "Credential doesn't match payment credential.")) + append((None, TR.cardano__credential_mismatch)) if credential.is_reward and purpose != "cvote_reg_payment_address": # for cvote registrations, this is handled by extra_text at the end - append(("Address is a reward address.", None)) + append((TR.cardano__reward_address, None)) if credential.is_no_staking: append( ( - f"{ADDRESS_TYPE_NAMES[credential.address_type]} address - no staking rewards.", + f"{ADDRESS_TYPE_NAMES[credential.address_type]} {TR.cardano__address_no_staking}", None, ) ) @@ -418,13 +423,13 @@ async def warn_path(path: list[int], title: str) -> None: async def warn_tx_output_contains_tokens(is_collateral_return: bool = False) -> None: content = ( - "The collateral return output contains tokens." + TR.cardano__collateral_output_contains_tokens if is_collateral_return - else "The following transaction output contains tokens." + else TR.cardano__transaction_output_contains_tokens ) await confirm_metadata( "confirm_tokens", - "Confirm transaction", + TR.cardano__confirm_transaction, content, br_code=BRT_Other, ) @@ -433,8 +438,8 @@ async def warn_tx_output_contains_tokens(is_collateral_return: bool = False) -> async def warn_tx_contains_mint() -> None: await confirm_metadata( "confirm_tokens", - "Confirm transaction", - "The transaction contains minting or burning of tokens.", + TR.cardano__confirm_transaction, + TR.cardano__transaction_contains_minting_or_burning, br_code=BRT_Other, ) @@ -442,8 +447,8 @@ async def warn_tx_contains_mint() -> None: async def warn_tx_output_no_datum() -> None: await confirm_metadata( "confirm_no_datum_hash", - "Confirm transaction", - "The following transaction output contains a script address, but does not contain a datum.", + TR.cardano__confirm_transaction, + TR.cardano__transaction_contains_script_address_no_datum, br_code=BRT_Other, ) @@ -451,8 +456,8 @@ async def warn_tx_output_no_datum() -> None: async def warn_no_script_data_hash() -> None: await confirm_metadata( "confirm_no_script_data_hash", - "Confirm transaction", - "The transaction contains no script data hash. Plutus script will not be able to run.", + TR.cardano__confirm_transaction, + TR.cardano__transaction_no_script_data_hash, br_code=BRT_Other, ) @@ -460,8 +465,8 @@ async def warn_no_script_data_hash() -> None: async def warn_no_collateral_inputs() -> None: await confirm_metadata( "confirm_no_collateral_inputs", - "Confirm transaction", - "The transaction contains no collateral inputs. Plutus script will not be able to run.", + TR.cardano__confirm_transaction, + TR.cardano__transaction_no_collateral_input, br_code=BRT_Other, ) @@ -469,8 +474,8 @@ async def warn_no_collateral_inputs() -> None: async def warn_unknown_total_collateral() -> None: await layouts.show_warning( "confirm_unknown_total_collateral", - "Unknown collateral amount.", - "Check all items carefully.", + TR.cardano__unknown_collateral_amount, + TR.cardano__check_all_items, br_code=BRT_Other, ) @@ -481,17 +486,17 @@ async def confirm_witness_request( from . import seed if seed.is_multisig_path(witness_path): - path_title = "multi-sig path" + path_title = TR.cardano__multisig_path elif seed.is_minting_path(witness_path): - path_title = "token minting path" + path_title = TR.cardano__token_minting_path else: - path_title = "path" + path_title = TR.cardano__path await layouts.confirm_text( "confirm_total", - "Confirm transaction", + TR.cardano__confirm_transaction, address_n_to_str(witness_path), - f"Sign transaction with {path_title}:", + TR.cardano__sign_tx_path_template.format(path_title), BRT_Other, ) @@ -507,25 +512,40 @@ async def confirm_tx( tx_hash: bytes | None, ) -> None: props: list[PropertyType] = [ - ("Transaction fee:", format_coin_amount(fee, network_id)), + (TR.cardano__transaction_fee, format_coin_amount(fee, network_id)), ] append = props.append # local_cache_attribute if total_collateral is not None: - append(("Total collateral:", format_coin_amount(total_collateral, network_id))) + append( + ( + TR.cardano__total_collateral, + format_coin_amount(total_collateral, network_id), + ) + ) if is_network_id_verifiable: - append((f"Network: {protocol_magics.to_ui_string(protocol_magic)}", None)) + append( + ( + f"{TR.cardano__network} {protocol_magics.to_ui_string(protocol_magic)}", + None, + ) + ) - append((f"Valid since: {format_optional_int(validity_interval_start)}", None)) - append((f"TTL: {format_optional_int(ttl)}", None)) + append( + ( + f"{TR.cardano__valid_since} {format_optional_int(validity_interval_start)}", + None, + ) + ) + append((f"{TR.cardano__ttl} {format_optional_int(ttl)}", None)) if tx_hash: - append(("Transaction ID:", tx_hash)) + append((TR.cardano__transaction_id, tx_hash)) await confirm_properties( "confirm_total", - "Confirm transaction", + TR.cardano__confirm_transaction, props, hold=True, br_code=BRT_Other, @@ -538,7 +558,7 @@ async def confirm_certificate(certificate: messages.CardanoTxCertificate) -> Non assert certificate.type != CardanoCertificateType.STAKE_POOL_REGISTRATION props: list[PropertyType] = [ - ("Confirm:", CERTIFICATE_TYPE_NAMES[certificate.type]), + (TR.cardano__confirm, CERTIFICATE_TYPE_NAMES[certificate.type]), _format_stake_credential( certificate.path, certificate.script_hash, certificate.key_hash ), @@ -546,11 +566,11 @@ async def confirm_certificate(certificate: messages.CardanoTxCertificate) -> Non if certificate.type == CardanoCertificateType.STAKE_DELEGATION: assert certificate.pool is not None # validate_certificate - props.append(("to pool:", format_stake_pool_id(certificate.pool))) + props.append((TR.cardano__to_pool, format_stake_pool_id(certificate.pool))) await confirm_properties( "confirm_certificate", - "Confirm transaction", + TR.cardano__confirm_transaction, props, br_code=BRT_Other, ) @@ -566,17 +586,17 @@ async def confirm_stake_pool_parameters( percentage_formatted = str(float(margin_percentage)).rstrip("0").rstrip(".") await confirm_properties( "confirm_pool_registration", - "Confirm transaction", + TR.cardano__confirm_transaction, ( ( - "Stake pool registration\nPool ID:", + TR.cardano__stake_pool_registration_pool_id, format_stake_pool_id(pool_parameters.pool_id), ), - ("Pool reward account:", pool_parameters.reward_account), + (TR.cardano__pool_reward_account, pool_parameters.reward_account), ( - f"Pledge: {format_coin_amount(pool_parameters.pledge, network_id)}\n" - + f"Cost: {format_coin_amount(pool_parameters.cost, network_id)}\n" - + f"Margin: {percentage_formatted}%", + f"{TR.cardano__pledge}: {format_coin_amount(pool_parameters.pledge, network_id)}\n" + + f"{TR.cardano__cost}: {format_coin_amount(pool_parameters.cost, network_id)}\n" + + f"{TR.cardano__margin}: {percentage_formatted}%", None, ), ), @@ -594,7 +614,7 @@ async def confirm_stake_pool_owner( props: list[tuple[str, str | None]] = [] if owner.staking_key_path: - props.append(("Pool owner:", address_n_to_str(owner.staking_key_path))) + props.append((TR.cardano__pool_owner, address_n_to_str(owner.staking_key_path))) props.append( ( addresses.derive_human_readable( @@ -613,7 +633,7 @@ async def confirm_stake_pool_owner( assert owner.staking_key_hash is not None # validate_pool_owners props.append( ( - "Pool owner:", + TR.cardano__pool_owner, addresses.derive_human_readable( keychain, messages.CardanoAddressParametersType( @@ -628,7 +648,7 @@ async def confirm_stake_pool_owner( await confirm_properties( "confirm_pool_owners", - "Confirm transaction", + TR.cardano__confirm_transaction, props, br_code=BRT_Other, ) @@ -640,18 +660,18 @@ async def confirm_stake_pool_metadata( if metadata is None: await confirm_properties( "confirm_pool_metadata", - "Confirm transaction", - (("Pool has no metadata (anonymous pool)", None),), + TR.cardano__confirm_transaction, + ((TR.cardano__anonymous_pool, None),), br_code=BRT_Other, ) return await confirm_properties( "confirm_pool_metadata", - "Confirm transaction", + TR.cardano__confirm_transaction, ( - ("Pool metadata url:", metadata.url), - ("Pool metadata hash:", metadata.hash), + (TR.cardano__pool_metadata_url, metadata.url), + (TR.cardano__pool_metadata_hash, metadata.hash), ), br_code=BRT_Other, ) @@ -664,12 +684,15 @@ async def confirm_stake_pool_registration_final( ) -> None: await confirm_properties( "confirm_pool_final", - "Confirm transaction", + TR.cardano__confirm_transaction, ( - ("Confirm signing the stake pool registration as an owner.", None), - ("Network:", protocol_magics.to_ui_string(protocol_magic)), - ("Valid since:", format_optional_int(validity_interval_start)), - ("TTL:", format_optional_int(ttl)), + (TR.cardano__confirm_signing_stake_pool, None), + (TR.cardano__network, protocol_magics.to_ui_string(protocol_magic)), + ( + TR.cardano__valid_since, + format_optional_int(validity_interval_start), + ), + (TR.cardano__ttl, format_optional_int(ttl)), ), hold=True, br_code=BRT_Other, @@ -681,10 +704,15 @@ async def confirm_withdrawal( address_bytes: bytes, network_id: int, ) -> None: - address_type_name = "script reward" if withdrawal.script_hash else "reward" + address_type_name = ( + TR.cardano__script_reward if withdrawal.script_hash else TR.cardano__reward + ) address = addresses.encode_human_readable(address_bytes) props: list[PropertyType] = [ - (f"Confirm withdrawal for {address_type_name} address:", address), + ( + TR.cardano__withdrawal_for_address_template.format(address_type_name), + address, + ), ] if withdrawal.path: @@ -694,11 +722,13 @@ async def confirm_withdrawal( ) ) - props.append(("Amount:", format_coin_amount(withdrawal.amount, network_id))) + props.append( + (f"{TR.words__amount}:", format_coin_amount(withdrawal.amount, network_id)) + ) await confirm_properties( "confirm_withdrawal", - "Confirm transaction", + TR.cardano__confirm_transaction, props, br_code=BRT_Other, ) @@ -714,17 +744,25 @@ def _format_stake_credential( address_index = path[ADDRESS_INDEX_PATH_INDEX] if address_index == RECOMMENDED_ADDRESS_INDEX: return ( - f"for account {account_number}:", + TR.cardano__for_account_template.format(account_number), address_n_to_str(path), ) return ( - f"for account {account_number} and index {address_index}:", + TR.cardano__for_account_and_index_template.format( + account_number, address_index + ), address_n_to_str(path), ) elif key_hash: - return ("for key hash:", bech32.encode(bech32.HRP_STAKE_KEY_HASH, key_hash)) + return ( + TR.cardano__for_key_hash, + bech32.encode(bech32.HRP_STAKE_KEY_HASH, key_hash), + ) elif script_hash: - return ("for script:", bech32.encode(bech32.HRP_SCRIPT_HASH, script_hash)) + return ( + TR.cardano__for_script, + bech32.encode(bech32.HRP_SCRIPT_HASH, script_hash), + ) else: # should be unreachable unless there's a bug in validation raise ValueError @@ -735,15 +773,15 @@ async def confirm_cvote_registration_delegation( weight: int, ) -> None: props: list[PropertyType] = [ - ("Vote key registration (CIP-36)", None), - ("Delegating to:", public_key), + (TR.cardano__vote_key_registration, None), + (TR.cardano__delegating_to, public_key), ] if weight is not None: - props.append(("Weight:", str(weight))) + props.append((TR.cardano__weight, str(weight))) await confirm_properties( "confirm_cvote_registration_delegation", - title="Confirm transaction", + title=TR.cardano__confirm_transaction, props=props, br_code=ButtonRequestType.Other, ) @@ -754,14 +792,14 @@ async def confirm_cvote_registration_payment_address( should_show_payment_warning: bool, ) -> None: props = [ - ("Vote key registration (CIP-36)", None), - ("Rewards go to:", payment_address), + (TR.cardano__vote_key_registration, None), + (TR.cardano__rewards_go_to, payment_address), ] if should_show_payment_warning: props.append((CVOTE_REWARD_ELIGIBILITY_WARNING, None)) await confirm_properties( "confirm_cvote_registration_payment_address", - title="Confirm transaction", + title=TR.cardano__confirm_transaction, props=props, br_code=ButtonRequestType.Other, ) @@ -773,29 +811,31 @@ async def confirm_cvote_registration( nonce: int, voting_purpose: int | None, ) -> None: - props: list[PropertyType] = [("Vote key registration (CIP-36)", None)] + props: list[PropertyType] = [(TR.cardano__vote_key_registration, None)] if vote_public_key is not None: - props.append(("Vote public key:", vote_public_key)) + props.append((TR.cardano__vote_public_key, vote_public_key)) props.extend( [ ( - f"Staking key for account {format_account_number(staking_path)}:", + f"{TR.cardano__staking_key_for_account} {format_account_number(staking_path)}:", address_n_to_str(staking_path), ), - ("Nonce:", str(nonce)), + (TR.cardano__nonce, str(nonce)), ] ) if voting_purpose is not None: props.append( ( - "Voting purpose:", - "Catalyst" if voting_purpose == 0 else f"{voting_purpose} (other)", + TR.cardano__voting_purpose, + TR.cardano__catalyst + if voting_purpose == 0 + else f"{voting_purpose} ({TR.cardano__other})", ) ) await confirm_properties( "confirm_cvote_registration", - title="Confirm transaction", + title=TR.cardano__confirm_transaction, props=props, br_code=ButtonRequestType.Other, ) @@ -804,8 +844,8 @@ async def confirm_cvote_registration( async def show_auxiliary_data_hash(auxiliary_data_hash: bytes) -> None: await confirm_properties( "confirm_auxiliary_data", - "Confirm transaction", - (("Auxiliary data hash:", auxiliary_data_hash),), + TR.cardano__confirm_transaction, + ((TR.cardano__auxiliary_data_hash, auxiliary_data_hash),), br_code=BRT_Other, ) @@ -814,19 +854,19 @@ async def confirm_token_minting(policy_id: bytes, token: messages.CardanoToken) assert token.mint_amount is not None # _validate_token await confirm_properties( "confirm_mint", - "Confirm transaction", + TR.cardano__confirm_transaction, ( ( - "Asset fingerprint:", + TR.cardano__asset_fingerprint, format_asset_fingerprint( policy_id, token.asset_name_bytes, ), ), ( - "Amount minted (decimals unknown):" + TR.cardano__amount_minted_decimals_unknown if token.mint_amount >= 0 - else "Amount burned (decimals unknown):", + else TR.cardano__amount_burned_decimals_unknown, format_amount(token.mint_amount, 0), ), ), @@ -837,8 +877,8 @@ async def confirm_token_minting(policy_id: bytes, token: messages.CardanoToken) async def warn_tx_network_unverifiable() -> None: await confirm_metadata( "warning_no_outputs", - "Warning", - "Transaction has no outputs, network cannot be verified.", + TR.cardano__warning, + TR.cardano__no_output_tx, br_code=BRT_Other, ) @@ -846,10 +886,10 @@ async def warn_tx_network_unverifiable() -> None: async def confirm_script_data_hash(script_data_hash: bytes) -> None: await confirm_properties( "confirm_script_data_hash", - "Confirm transaction", + TR.cardano__confirm_transaction, ( ( - "Script data hash:", + TR.cardano__script_data_hash, bech32.encode(bech32.HRP_SCRIPT_DATA_HASH, script_data_hash), ), ), @@ -862,10 +902,13 @@ async def confirm_collateral_input( ) -> None: await confirm_properties( "confirm_collateral_input", - "Confirm transaction", + TR.cardano__confirm_transaction, ( - ("Collateral input ID:", collateral_input.prev_hash), - ("Collateral input index:", str(collateral_input.prev_index)), + (TR.cardano__collateral_input_id, collateral_input.prev_hash), + ( + TR.cardano__collateral_input_index, + str(collateral_input.prev_index), + ), ), br_code=BRT_Other, ) @@ -876,10 +919,10 @@ async def confirm_reference_input( ) -> None: await confirm_properties( "confirm_reference_input", - "Confirm transaction", + TR.cardano__confirm_transaction, ( - ("Reference input ID:", reference_input.prev_hash), - ("Reference input index:", str(reference_input.prev_index)), + (TR.cardano__reference_input_id, reference_input.prev_hash), + (TR.cardano__reference_input_index, str(reference_input.prev_index)), ), br_code=BRT_Other, ) @@ -899,8 +942,8 @@ async def confirm_required_signer( await confirm_properties( "confirm_required_signer", - "Confirm transaction", - (("Required signer", formatted_signer),), + TR.cardano__confirm_transaction, + ((TR.cardano__required_signer, formatted_signer),), br_code=BRT_Other, ) diff --git a/core/src/apps/cardano/sign_tx/multisig_signer.py b/core/src/apps/cardano/sign_tx/multisig_signer.py index dda7518df..f54cc64c6 100644 --- a/core/src/apps/cardano/sign_tx/multisig_signer.py +++ b/core/src/apps/cardano/sign_tx/multisig_signer.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import TR from trezor.wire import ProcessError from .signer import Signer @@ -13,7 +14,7 @@ class MultisigSigner(Signer): The multisig signing mode only allows signing with multisig (and minting) keys. """ - SIGNING_MODE_TITLE = "Confirming a multisig transaction." + SIGNING_MODE_TITLE = TR.cardano__confirming_a_multisig_transaction def _validate_tx_init(self) -> None: msg = self.msg # local_cache_attribute diff --git a/core/src/apps/cardano/sign_tx/ordinary_signer.py b/core/src/apps/cardano/sign_tx/ordinary_signer.py index 40c8f7d4d..4c7d24b81 100644 --- a/core/src/apps/cardano/sign_tx/ordinary_signer.py +++ b/core/src/apps/cardano/sign_tx/ordinary_signer.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import TR from trezor.wire import ProcessError from .. import layout @@ -16,7 +17,7 @@ class OrdinarySigner(Signer): controlled by 1852' keys, dealing with staking and minting/burning tokens. """ - SIGNING_MODE_TITLE = "Confirming a transaction." + SIGNING_MODE_TITLE = TR.cardano__confirming_transction def _validate_tx_init(self) -> None: msg = self.msg # local_cache_attribute @@ -75,7 +76,7 @@ class OrdinarySigner(Signer): raise ProcessError("Invalid witness request") async def _show_witness_request(self, witness_path: list[int]) -> None: - from ..helpers.paths import SCHEMA_PAYMENT, SCHEMA_STAKING, WITNESS_PATH_NAME + from ..helpers.paths import SCHEMA_PAYMENT, SCHEMA_STAKING # super() omitted intentionally # We only allow payment, staking or minting paths. @@ -89,7 +90,7 @@ class OrdinarySigner(Signer): if is_minting: await layout.confirm_witness_request(witness_path) elif not is_payment and not is_staking: - await self._fail_or_warn_path(witness_path, WITNESS_PATH_NAME) + await self._fail_or_warn_path(witness_path, "Witness path") else: await self._show_if_showing_details( layout.confirm_witness_request(witness_path) diff --git a/core/src/apps/cardano/sign_tx/plutus_signer.py b/core/src/apps/cardano/sign_tx/plutus_signer.py index f90c4dbee..7d97163e0 100644 --- a/core/src/apps/cardano/sign_tx/plutus_signer.py +++ b/core/src/apps/cardano/sign_tx/plutus_signer.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING from trezor import wire +from trezortranslate import TR from .. import layout from .signer import Signer @@ -15,7 +16,7 @@ class PlutusSigner(Signer): validation rules are less strict, but more tx items/warnings are shown to the user. """ - SIGNING_MODE_TITLE = "Confirming a Plutus transaction." + SIGNING_MODE_TITLE = TR.cardano__confirming_a_plutus_transaction async def _show_tx_init(self) -> None: await super()._show_tx_init() diff --git a/core/src/apps/cardano/sign_tx/pool_owner_signer.py b/core/src/apps/cardano/sign_tx/pool_owner_signer.py index 4c42a9f16..532b87550 100644 --- a/core/src/apps/cardano/sign_tx/pool_owner_signer.py +++ b/core/src/apps/cardano/sign_tx/pool_owner_signer.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import TR from trezor.wire import ProcessError from .signer import Signer @@ -21,7 +22,7 @@ class PoolOwnerSigner(Signer): staking key in the list of pool owners. """ - SIGNING_MODE_TITLE = "Confirming pool registration as owner." + SIGNING_MODE_TITLE = TR.cardano__confirming_pool_registration def _validate_tx_init(self) -> None: msg = self.msg # local_cache_attribute diff --git a/core/src/apps/cardano/sign_tx/signer.py b/core/src/apps/cardano/sign_tx/signer.py index 9e81c4422..3ba556732 100644 --- a/core/src/apps/cardano/sign_tx/signer.py +++ b/core/src/apps/cardano/sign_tx/signer.py @@ -714,11 +714,9 @@ class Signer: async def _show_certificate( self, certificate: messages.CardanoTxCertificate ) -> None: - from ..helpers.paths import CERTIFICATE_PATH_NAME - if certificate.path: await self._fail_or_warn_if_invalid_path( - SCHEMA_STAKING, certificate.path, CERTIFICATE_PATH_NAME + SCHEMA_STAKING, certificate.path, "Certificate path" ) if certificate.type == CardanoCertificateType.STAKE_POOL_REGISTRATION: @@ -755,11 +753,9 @@ class Signer: certificates.assert_cond(owners_as_path_count == 1) async def _show_pool_owner(self, owner: messages.CardanoPoolOwner) -> None: - from ..helpers.paths import POOL_OWNER_STAKING_PATH_NAME - if owner.staking_key_path: await self._fail_or_warn_if_invalid_path( - SCHEMA_STAKING, owner.staking_key_path, POOL_OWNER_STAKING_PATH_NAME + SCHEMA_STAKING, owner.staking_key_path, "Pool owner staking path" ) await layout.confirm_stake_pool_owner( @@ -1238,19 +1234,14 @@ class Signer: def _fail_if_strict_and_unusual( self, address_parameters: messages.CardanoAddressParametersType ) -> None: - from ..helpers.paths import ( - CHANGE_OUTPUT_PATH_NAME, - CHANGE_OUTPUT_STAKING_PATH_NAME, - ) - if not safety_checks.is_strict(): return if Credential.payment_credential(address_parameters).is_unusual_path: - raise DataError(f"Invalid {CHANGE_OUTPUT_PATH_NAME.lower()}") + raise DataError("Invalid change output path") if Credential.stake_credential(address_parameters).is_unusual_path: - raise DataError(f"Invalid {CHANGE_OUTPUT_STAKING_PATH_NAME.lower()}") + raise DataError("Invalid change output staking path") async def _show_if_showing_details(self, layout_fn: Awaitable) -> None: if self.should_show_details: diff --git a/core/src/apps/common/passphrase.py b/core/src/apps/common/passphrase.py index c24ad333d..0a9e222af 100644 --- a/core/src/apps/common/passphrase.py +++ b/core/src/apps/common/passphrase.py @@ -30,6 +30,7 @@ async def get() -> str: async def _request_on_host() -> str: + from trezor import TR from trezor.messages import PassphraseAck, PassphraseRequest from trezor.ui.layouts import request_passphrase_on_host from trezor.wire.context import call @@ -58,23 +59,22 @@ async def _request_on_host() -> str: # We want to hide the passphrase, or show it, according to settings. if storage_device.get_hide_passphrase_from_host(): - explanation = "Passphrase provided by host will be used but will not be displayed due to the device settings." await confirm_action( "passphrase_host1_hidden", - "Hidden wallet", - description=f"Access hidden wallet?\n{explanation}", + TR.passphrase__hidden_wallet, + description=f"{TR.passphrase__access_hidden_wallet}\n{TR.passphrase__from_host_not_shown}", ) else: await confirm_action( "passphrase_host1", - "Hidden wallet", - description="Next screen will show the passphrase.", - verb="Continue", + TR.passphrase__hidden_wallet, + description=TR.passphrase__next_screen_will_show_passphrase, + verb=TR.buttons__continue, ) await confirm_blob( "passphrase_host2", - "Confirm passphrase", + TR.passphrase__title_confirm, passphrase, ) diff --git a/core/src/apps/common/request_pin.py b/core/src/apps/common/request_pin.py index fb9ab1519..06b5498d8 100644 --- a/core/src/apps/common/request_pin.py +++ b/core/src/apps/common/request_pin.py @@ -2,7 +2,7 @@ import utime from typing import Any, NoReturn import storage.cache as storage_cache -from trezor import config, utils, wire +from trezor import TR, config, utils, wire from trezor.ui.layouts import show_error_and_raise @@ -53,9 +53,9 @@ async def request_pin_confirm(*args: Any, **kwargs: Any) -> str: from trezor.ui.layouts import confirm_reenter_pin, pin_mismatch_popup while True: - pin1 = await request_pin("Enter new PIN", *args, **kwargs) + pin1 = await request_pin(TR.pin__enter_new, *args, **kwargs) await confirm_reenter_pin() - pin2 = await request_pin("Re-enter new PIN", *args, **kwargs) + pin2 = await request_pin(TR.pin__reenter_new, *args, **kwargs) if pin1 == pin2: return pin1 await pin_mismatch_popup() @@ -80,8 +80,11 @@ def _set_last_unlock_time() -> None: storage_cache.set_int(storage_cache.APP_COMMON_REQUEST_PIN_LAST_UNLOCK, now) +_DEF_ARG_PIN_ENTER: str = TR.pin__enter + + async def verify_user_pin( - prompt: str = "Enter PIN", + prompt: str = _DEF_ARG_PIN_ENTER, allow_cancel: bool = True, retry: bool = True, cache_time_ms: int = 0, @@ -116,7 +119,7 @@ async def verify_user_pin( while retry: pin = await request_pin_on_device( # type: ignore ["request_pin_on_device" is possibly unbound] - "Enter PIN", config.get_pin_rem(), allow_cancel, wrong_pin=True + TR.pin__enter, config.get_pin_rem(), allow_cancel, wrong_pin=True ) if config.unlock(pin, salt): _set_last_unlock_time() @@ -128,8 +131,8 @@ async def verify_user_pin( async def error_pin_invalid() -> NoReturn: await show_error_and_raise( "warning_wrong_pin", - "The PIN you have entered is not valid.", - "Wrong PIN", # header + TR.pin__entered_not_valid, + TR.pin__wrong_pin, # header exc=wire.PinInvalid, ) assert False @@ -138,8 +141,8 @@ async def error_pin_invalid() -> NoReturn: async def error_pin_matches_wipe_code() -> NoReturn: await show_error_and_raise( "warning_invalid_new_pin", - "The new PIN must be different from your wipe code.", - "Invalid PIN", # header + TR.pin__diff_from_wipe_code, + TR.pin__invalid_pin, # header exc=wire.PinInvalid, ) assert False diff --git a/core/src/apps/common/sdcard.py b/core/src/apps/common/sdcard.py index b1d7c71b5..c6446e05c 100644 --- a/core/src/apps/common/sdcard.py +++ b/core/src/apps/common/sdcard.py @@ -1,5 +1,5 @@ from storage.sd_salt import SD_CARD_HOT_SWAPPABLE -from trezor import io, wire +from trezor import TR, io, wire from trezor.ui.layouts import confirm_action, show_error_and_raise @@ -11,18 +11,18 @@ async def _confirm_retry_wrong_card() -> None: if SD_CARD_HOT_SWAPPABLE: await confirm_action( "warning_wrong_sd", - "SD card protection", - "Wrong SD card.", - "Please insert the correct SD card for this device.", - verb="Retry", - verb_cancel="Abort", + TR.sd_card__title, + TR.sd_card__wrong_sd_card, + TR.sd_card__insert_correct_card, + verb=TR.buttons__retry, + verb_cancel=TR.buttons__abort, exc=SdCardUnavailable("Wrong SD card."), ) else: await show_error_and_raise( "warning_wrong_sd", - "Please unplug the device and insert the correct SD card.", - "Wrong SD card.", + TR.sd_card__unplug_and_insert_correct, + TR.sd_card__wrong_sd_card, exc=SdCardUnavailable("Wrong SD card."), ) @@ -31,18 +31,18 @@ async def _confirm_retry_insert_card() -> None: if SD_CARD_HOT_SWAPPABLE: await confirm_action( "warning_no_sd", - "SD card protection", - "SD card required.", - "Please insert your SD card.", - verb="Retry", - verb_cancel="Abort", + TR.sd_card__title, + TR.sd_card__card_required, + TR.sd_card__please_insert, + verb=TR.buttons__retry, + verb_cancel=TR.buttons__abort, exc=SdCardUnavailable("SD card required."), ) else: await show_error_and_raise( "warning_no_sd", - "Please unplug the device and insert your SD card.", - "SD card required.", + TR.sd_card__please_unplug_and_insert, + TR.sd_card__card_required, exc=SdCardUnavailable("SD card required."), ) @@ -51,22 +51,22 @@ async def _confirm_format_card() -> None: # Format card? yes/no await confirm_action( "warning_format_sd", - "SD card error", - "Unknown filesystem.", - "Use a different card or format the SD card to the FAT32 filesystem.", - verb="Format", - verb_cancel="Cancel", + TR.sd_card__error, + TR.sd_card__unknown_filesystem, + TR.sd_card__use_different_card, + verb=TR.buttons__format, + verb_cancel=TR.buttons__cancel, exc=SdCardUnavailable("SD card not formatted."), ) # Confirm formatting await confirm_action( "confirm_format_sd", - "Format SD card", - "All data on the SD card will be lost.", - "Do you really want to format the SD card?", + TR.sd_card__format_card, + TR.sd_card__all_data_will_be_lost, + TR.sd_card__wanna_format, reverse=True, - verb="Format SD card", + verb=TR.sd_card__format_card, hold=True, exc=SdCardUnavailable("SD card not formatted."), ) @@ -77,11 +77,11 @@ async def confirm_retry_sd( ) -> None: await confirm_action( "warning_sd_retry", - "SD card problem", + TR.sd_card__title_problem, None, - "There was a problem accessing the SD card.", - verb="Retry", - verb_cancel="Abort", + TR.sd_card__problem_accessing, + verb=TR.buttons__retry, + verb_cancel=TR.buttons__abort, exc=exc, ) diff --git a/core/src/apps/debug/__init__.py b/core/src/apps/debug/__init__.py index e6426045c..f220e5ddf 100644 --- a/core/src/apps/debug/__init__.py +++ b/core/src/apps/debug/__init__.py @@ -113,9 +113,12 @@ if __debug__: break elif event_id > awaited_event_id: # Sanity check - raise RuntimeError( - f"Waiting for event that already happened - {event_id} > {awaited_event_id}" - ) + pass + # TODO: find out why this sometimes happens on TR when running tests with + # "physical" emulator (./emu.py) + # raise RuntimeError( + # f"Waiting for event that already happened - {event_id} > {awaited_event_id}" + # ) if awaited_event_id is not None: # Updating last result diff --git a/core/src/apps/debug/load_device.py b/core/src/apps/debug/load_device.py index ce873e321..6f95575ec 100644 --- a/core/src/apps/debug/load_device.py +++ b/core/src/apps/debug/load_device.py @@ -6,7 +6,7 @@ if TYPE_CHECKING: async def load_device(msg: LoadDevice) -> Success: import storage.device as storage_device - from trezor import config + from trezor import TR, config from trezor.crypto import bip39, slip39 from trezor.enums import BackupType from trezor.messages import Success @@ -39,9 +39,9 @@ async def load_device(msg: LoadDevice) -> Success: # _warn await confirm_action( "warn_loading_seed", - "Loading seed", - "Loading private seed is not recommended.", - "Continue only if you know what you are doing!", + TR.debug__loading_seed, + TR.debug__loading_seed_not_recommended, + TR.words__know_what_your_doing, ) # END _warn diff --git a/core/src/apps/eos/actions/layout.py b/core/src/apps/eos/actions/layout.py index 22a8659cb..9dcbfbf0d 100644 --- a/core/src/apps/eos/actions/layout.py +++ b/core/src/apps/eos/actions/layout.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import TR from trezor.enums import ButtonRequestType from trezor.ui.layouts import confirm_properties @@ -51,11 +52,11 @@ async def _confirm_properties( async def confirm_action_buyram(msg: EosActionBuyRam) -> None: await _confirm_properties( "confirm_buyram", - "Buy RAM", + TR.eos__buy_ram, ( - ("Payer:", eos_name_to_string(msg.payer)), - ("Receiver:", eos_name_to_string(msg.receiver)), - ("Amount:", eos_asset_to_string(msg.quantity)), + (TR.eos__payer, eos_name_to_string(msg.payer)), + (TR.eos__receiver, eos_name_to_string(msg.receiver)), + (f"{TR.words__amount}:", eos_asset_to_string(msg.quantity)), ), ) @@ -63,32 +64,32 @@ async def confirm_action_buyram(msg: EosActionBuyRam) -> None: async def confirm_action_buyrambytes(msg: EosActionBuyRamBytes) -> None: await _confirm_properties( "confirm_buyrambytes", - "Buy RAM", + TR.eos__buy_ram, ( - ("Payer:", eos_name_to_string(msg.payer)), - ("Receiver:", eos_name_to_string(msg.receiver)), - ("Bytes:", str(msg.bytes)), + (TR.eos__payer, eos_name_to_string(msg.payer)), + (TR.eos__receiver, eos_name_to_string(msg.receiver)), + (TR.eos__bytes, str(msg.bytes)), ), ) async def confirm_action_delegate(msg: EosActionDelegate) -> None: props = [ - ("Sender:", eos_name_to_string(msg.sender)), - ("Receiver:", eos_name_to_string(msg.receiver)), - ("CPU:", eos_asset_to_string(msg.cpu_quantity)), - ("NET:", eos_asset_to_string(msg.net_quantity)), + (TR.eos__sender, eos_name_to_string(msg.sender)), + (TR.eos__receiver, eos_name_to_string(msg.receiver)), + (TR.eos__cpu, eos_asset_to_string(msg.cpu_quantity)), + (TR.eos__net, eos_asset_to_string(msg.net_quantity)), ] append = props.append # local_cache_attribute if msg.transfer: - append(("Transfer:", "Yes")) - append(("Receiver:", eos_name_to_string(msg.receiver))) + append((TR.eos__transfer, TR.words__yes)) + append((TR.eos__receiver, eos_name_to_string(msg.receiver))) else: - append(("Transfer:", "No")) + append((TR.eos__transfer, TR.words__no)) await _confirm_properties( "confirm_delegate", - "Delegate", + TR.eos__delegate, props, ) @@ -96,10 +97,10 @@ async def confirm_action_delegate(msg: EosActionDelegate) -> None: async def confirm_action_sellram(msg: EosActionSellRam) -> None: await _confirm_properties( "confirm_sellram", - "Sell RAM", + TR.eos__sell_ram, ( - ("Receiver:", eos_name_to_string(msg.account)), - ("Bytes:", str(msg.bytes)), + (TR.eos__receiver, eos_name_to_string(msg.account)), + (TR.eos__bytes, str(msg.bytes)), ), ) @@ -107,12 +108,12 @@ async def confirm_action_sellram(msg: EosActionSellRam) -> None: async def confirm_action_undelegate(msg: EosActionUndelegate) -> None: await _confirm_properties( "confirm_undelegate", - "Undelegate", + TR.eos__undelegate, ( - ("Sender:", eos_name_to_string(msg.sender)), - ("Receiver:", eos_name_to_string(msg.receiver)), - ("CPU:", eos_asset_to_string(msg.cpu_quantity)), - ("NET:", eos_asset_to_string(msg.net_quantity)), + (TR.eos__sender, eos_name_to_string(msg.sender)), + (TR.eos__receiver, eos_name_to_string(msg.receiver)), + (TR.eos__cpu, eos_asset_to_string(msg.cpu_quantity)), + (TR.eos__net, eos_asset_to_string(msg.net_quantity)), ), ) @@ -120,8 +121,8 @@ async def confirm_action_undelegate(msg: EosActionUndelegate) -> None: async def confirm_action_refund(msg: EosActionRefund) -> None: await _confirm_properties( "confirm_refund", - "Refund", - (("Owner:", eos_name_to_string(msg.owner)),), + TR.eos__refund, + ((TR.eos__owner, eos_name_to_string(msg.owner)),), ) @@ -132,10 +133,10 @@ async def confirm_action_voteproducer(msg: EosActionVoteProducer) -> None: # PROXY await _confirm_properties( "confirm_voteproducer", - "Vote for proxy", + TR.eos__vote_for_proxy, ( - ("Voter:", eos_name_to_string(msg.voter)), - ("Proxy:", eos_name_to_string(msg.proxy)), + (TR.eos__voter, eos_name_to_string(msg.voter)), + (TR.eos__proxy, eos_name_to_string(msg.proxy)), ), ) @@ -143,7 +144,7 @@ async def confirm_action_voteproducer(msg: EosActionVoteProducer) -> None: # PRODUCERS await _confirm_properties( "confirm_voteproducer", - "Vote for producers", + TR.eos__vote_for_producers, ( (f"{wi:2d}. {eos_name_to_string(producer)}", None) for wi, producer in enumerate(producers, 1) @@ -154,37 +155,37 @@ async def confirm_action_voteproducer(msg: EosActionVoteProducer) -> None: # Cancel vote await _confirm_properties( "confirm_voteproducer", - "Cancel vote", - (("Voter:", eos_name_to_string(msg.voter)),), + TR.eos__cancel_vote, + ((TR.eos__voter, eos_name_to_string(msg.voter)),), ) async def confirm_action_transfer(msg: EosActionTransfer, account: str) -> None: props = [ - ("From:", eos_name_to_string(msg.sender)), - ("To:", eos_name_to_string(msg.receiver)), - ("Amount:", eos_asset_to_string(msg.quantity)), - ("Contract:", account), + (TR.eos__from, eos_name_to_string(msg.sender)), + (TR.eos__to, eos_name_to_string(msg.receiver)), + (f"{TR.words__amount}:", eos_asset_to_string(msg.quantity)), + (TR.eos__contract, account), ] if msg.memo is not None: - props.append(("Memo", msg.memo[:512])) + props.append((TR.eos__memo, msg.memo[:512])) await _confirm_properties( "confirm_transfer", - "Transfer", + TR.eos__transfer.replace(":", ""), props, ) async def confirm_action_updateauth(msg: EosActionUpdateAuth) -> None: props: list[PropertyType] = [ - ("Account:", eos_name_to_string(msg.account)), - ("Permission:", eos_name_to_string(msg.permission)), - ("Parent:", eos_name_to_string(msg.parent)), + (f"{TR.words__account}:", eos_name_to_string(msg.account)), + (TR.eos__permission, eos_name_to_string(msg.permission)), + (TR.eos__parent, eos_name_to_string(msg.parent)), ] props.extend(authorization_fields(msg.auth)) await _confirm_properties( "confirm_updateauth", - "Update Auth", + TR.eos__update_auth, props, ) @@ -192,10 +193,10 @@ async def confirm_action_updateauth(msg: EosActionUpdateAuth) -> None: async def confirm_action_deleteauth(msg: EosActionDeleteAuth) -> None: await _confirm_properties( "confirm_deleteauth", - "Delete Auth", + TR.eos__delete_auth, ( - ("Account:", eos_name_to_string(msg.account)), - ("Permission:", eos_name_to_string(msg.permission)), + (f"{TR.words__account}:", eos_name_to_string(msg.account)), + (TR.eos__permission, eos_name_to_string(msg.permission)), ), ) @@ -203,12 +204,12 @@ async def confirm_action_deleteauth(msg: EosActionDeleteAuth) -> None: async def confirm_action_linkauth(msg: EosActionLinkAuth) -> None: await _confirm_properties( "confirm_linkauth", - "Link Auth", + TR.eos__link_auth, ( - ("Account:", eos_name_to_string(msg.account)), - ("Code:", eos_name_to_string(msg.code)), - ("Type:", eos_name_to_string(msg.type)), - ("Requirement:", eos_name_to_string(msg.requirement)), + (f"{TR.words__account}:", eos_name_to_string(msg.account)), + (TR.eos__code, eos_name_to_string(msg.code)), + (TR.eos__type, eos_name_to_string(msg.type)), + (TR.eos__requirement, eos_name_to_string(msg.requirement)), ), ) @@ -216,25 +217,25 @@ async def confirm_action_linkauth(msg: EosActionLinkAuth) -> None: async def confirm_action_unlinkauth(msg: EosActionUnlinkAuth) -> None: await _confirm_properties( "confirm_unlinkauth", - "Unlink Auth", + TR.eos__unlink_auth, ( - ("Account:", eos_name_to_string(msg.account)), - ("Code:", eos_name_to_string(msg.code)), - ("Type:", eos_name_to_string(msg.type)), + (f"{TR.words__account}:", eos_name_to_string(msg.account)), + (TR.eos__code, eos_name_to_string(msg.code)), + (TR.eos__type, eos_name_to_string(msg.type)), ), ) async def confirm_action_newaccount(msg: EosActionNewAccount) -> None: props: list[PropertyType] = [ - ("Creator:", eos_name_to_string(msg.creator)), - ("Name:", eos_name_to_string(msg.name)), + (TR.eos__creator, eos_name_to_string(msg.creator)), + (TR.eos__name, eos_name_to_string(msg.name)), ] props.extend(authorization_fields(msg.owner)) props.extend(authorization_fields(msg.active)) await _confirm_properties( "confirm_newaccount", - "New Account", + TR.eos__new_account, props, ) @@ -242,11 +243,11 @@ async def confirm_action_newaccount(msg: EosActionNewAccount) -> None: async def confirm_action_unknown(action: EosActionCommon, checksum: bytes) -> None: await confirm_properties( "confirm_unknown", - "Arbitrary data", + TR.eos__arbitrary_data, ( - ("Contract:", eos_name_to_string(action.account)), - ("Action Name:", eos_name_to_string(action.name)), - ("Checksum:", checksum), + (TR.eos__contract, eos_name_to_string(action.account)), + (TR.eos__action_name, eos_name_to_string(action.name)), + (TR.eos__checksum, checksum), ), hold=is_last, br_code=ButtonRequestType.ConfirmOutput, @@ -261,7 +262,7 @@ def authorization_fields(auth: EosAuthorization) -> list[PropertyType]: fields: list[PropertyType] = [] append = fields.append # local_cache_attribute - append(("Threshold:", str(auth.threshold))) + append((TR.eos__threshold, str(auth.threshold))) # NOTE: getting rid of f-strings saved almost 100 bytes @@ -283,6 +284,7 @@ def authorization_fields(auth: EosAuthorization) -> list[PropertyType]: _permission = eos_name_to_string(account.account.permission) i = str(i) + # TODO: handle translation a_header = "Account #" + i + ":" p_header = "Acc Permission #" + i + ":" w_header = "Account #" + i + " weight:" diff --git a/core/src/apps/eos/layout.py b/core/src/apps/eos/layout.py index 5ea24236f..dc12df31c 100644 --- a/core/src/apps/eos/layout.py +++ b/core/src/apps/eos/layout.py @@ -7,14 +7,17 @@ async def require_get_public_key( async def require_sign_tx(num_actions: int) -> None: + from trezor import TR from trezor.enums import ButtonRequestType from trezor.strings import format_plural from trezor.ui.layouts import confirm_action await confirm_action( "confirm_tx", - "Sign transaction", - description="You are about to sign {}.", - description_param=format_plural("{count} {plural}", num_actions, "action"), + TR.eos__sign_transaction, + description=TR.eos__about_to_sign_template, + description_param=format_plural( + "{count} {plural}", num_actions, TR.plurals__sign_x_actions + ), br_code=ButtonRequestType.SignTx, ) diff --git a/core/src/apps/ethereum/definitions.py b/core/src/apps/ethereum/definitions.py index 5bc567ed6..fb23a46b0 100644 --- a/core/src/apps/ethereum/definitions.py +++ b/core/src/apps/ethereum/definitions.py @@ -83,7 +83,7 @@ def decode_definition(definition: bytes, expected_type: type[DefType]) -> DefTyp # decode it if it's OK try: return protobuf_decode(payload, expected_type, True) - except ValueError: + except (ValueError, EOFError): raise DataError("Invalid Ethereum definition") diff --git a/core/src/apps/ethereum/layout.py b/core/src/apps/ethereum/layout.py index b8b0f5b1f..4740d2146 100644 --- a/core/src/apps/ethereum/layout.py +++ b/core/src/apps/ethereum/layout.py @@ -1,8 +1,7 @@ from typing import TYPE_CHECKING -from trezor import ui +from trezor import TR, ui from trezor.enums import ButtonRequestType -from trezor.strings import format_plural from trezor.ui.layouts import ( confirm_blob, confirm_ethereum_tx, @@ -35,19 +34,19 @@ async def require_confirm_tx( if to_bytes: to_str = address_from_bytes(to_bytes, network) else: - to_str = "new contract?" + to_str = TR.ethereum__new_contract chunkify = False total_amount = format_ethereum_amount(value, token, network) maximum_fee = format_ethereum_amount(gas_price * gas_limit, None, network) - gas_limit_str = f"{gas_limit} units" + gas_limit_str = TR.ethereum__units_template.format(gas_limit) gas_price_str = format_ethereum_amount( gas_price, None, network, force_unit_gwei=True ) items = ( - ("Gas limit:", gas_limit_str), - ("Gas price:", gas_price_str), + (TR.ethereum__gas_limit, gas_limit_str), + (TR.ethereum__gas_price, gas_price_str), ) await confirm_ethereum_tx( @@ -68,12 +67,12 @@ async def require_confirm_tx_eip1559( if to_bytes: to_str = address_from_bytes(to_bytes, network) else: - to_str = "new contract?" + to_str = TR.ethereum__new_contract chunkify = False total_amount = format_ethereum_amount(value, token, network) maximum_fee = format_ethereum_amount(max_gas_fee * gas_limit, None, network) - gas_limit_str = f"{gas_limit} units" + gas_limit_str = TR.ethereum__units_template.format(gas_limit) max_gas_fee_str = format_ethereum_amount( max_gas_fee, None, network, force_unit_gwei=True ) @@ -81,10 +80,10 @@ async def require_confirm_tx_eip1559( max_priority_fee, None, network, force_unit_gwei=True ) - items = ( - ("Gas limit:", gas_limit_str), - ("Max gas price:", max_gas_fee_str), - ("Priority fee:", max_priority_fee_str), + items: tuple[tuple[str, str], ...] = ( + (TR.ethereum__gas_limit, gas_limit_str), + (TR.ethereum__max_gas_price, max_gas_fee_str), + (TR.ethereum__priority_fee, max_priority_fee_str), ) await confirm_ethereum_tx( @@ -99,9 +98,9 @@ def require_confirm_unknown_token(address_bytes: bytes) -> Awaitable[None]: contract_address_hex = "0x" + hexlify(address_bytes).decode() return confirm_address( - "Unknown token", + TR.ethereum__unknown_token, contract_address_hex, - "Contract:", + TR.ethereum__contract, "unknown_token", br_code=ButtonRequestType.SignTx, ) @@ -114,7 +113,7 @@ def require_confirm_address(address_bytes: bytes) -> Awaitable[None]: address_hex = "0x" + hexlify(address_bytes).decode() return confirm_address( - "Signing address", + TR.ethereum__title_signing_address, address_hex, br_code=ButtonRequestType.SignTx, ) @@ -123,9 +122,9 @@ def require_confirm_address(address_bytes: bytes) -> Awaitable[None]: def require_confirm_data(data: bytes, data_total: int) -> Awaitable[None]: return confirm_blob( "confirm_data", - "Confirm data", + TR.ethereum__title_confirm_data, data, - f"Size: {data_total} bytes", + TR.ethereum__data_size_template.format(data_total), br_code=ButtonRequestType.SignTx, ask_pagination=True, ) @@ -136,9 +135,9 @@ async def confirm_typed_data_final() -> None: await confirm_action( "confirm_typed_data_final", - "Confirm typed data", - "Really sign EIP-712 typed data?", - verb="Hold to confirm", + TR.ethereum__title_confirm_typed_data, + TR.ethereum__sign_eip712, + verb=TR.buttons__hold_to_confirm, hold=True, ) @@ -146,9 +145,9 @@ async def confirm_typed_data_final() -> None: def confirm_empty_typed_message() -> Awaitable[None]: return confirm_text( "confirm_empty_typed_message", - "Confirm message", + TR.ethereum__title_confirm_message, "", - "No message field", + TR.ethereum__no_message_field, ) @@ -157,14 +156,14 @@ async def should_show_domain(name: bytes, version: bytes) -> bool: domain_version = decode_typed_data(version, "string") para = ( - (ui.NORMAL, "Name and version"), + (ui.NORMAL, TR.ethereum__name_and_version), (ui.DEMIBOLD, domain_name), (ui.DEMIBOLD, domain_version), ) return await should_show_more( - "Confirm domain", + TR.ethereum__title_confirm_domain, para, - "Show full domain", + TR.ethereum__show_full_domain, "should_show_domain", ) @@ -172,14 +171,24 @@ async def should_show_domain(name: bytes, version: bytes) -> bool: async def should_show_struct( description: str, data_members: list[EthereumStructMember], - title: str = "Confirm struct", - button_text: str = "Show full struct", + title: str | None = None, + button_text: str | None = None, ) -> bool: + from trezor.strings import format_plural + + title = title or TR.ethereum__title_confirm_struct # def_arg + button_text = button_text or TR.ethereum__show_full_struct # def_arg + + plural = format_plural( + "{count} {plural}", len(data_members), TR.plurals__contains_x_keys + ) + contains_plural = f"{TR.words__contains} {plural}" + para = ( (ui.DEMIBOLD, description), ( ui.NORMAL, - format_plural("Contains {count} {plural}", len(data_members), "key"), + contains_plural, ), (ui.NORMAL, ", ".join(field.name for field in data_members)), ) @@ -196,11 +205,16 @@ async def should_show_array( data_type: str, size: int, ) -> bool: - para = ((ui.NORMAL, format_plural("Array of {count} {plural}", size, data_type)),) + from trezor.strings import format_plural_english + + # Leaving english plural form because of dynamic noun - data_type + plural = format_plural_english("{count} {plural}", size, data_type) + array_of_plural = f"{TR.words__array_of} {plural}" + para = ((ui.NORMAL, array_of_plural),) return await should_show_more( limit_str(".".join(parent_objects)), para, - "Show full array", + TR.ethereum__show_full_array, "should_show_array", ) diff --git a/core/src/apps/ethereum/sign_typed_data.py b/core/src/apps/ethereum/sign_typed_data.py index e03f889d8..3256c0a4a 100644 --- a/core/src/apps/ethereum/sign_typed_data.py +++ b/core/src/apps/ethereum/sign_typed_data.py @@ -67,6 +67,8 @@ async def _generate_typed_data_hash( metamask_v4_compat - a flag that enables compatibility with MetaMask's signTypedData_v4 method """ + from trezor import TR + from .layout import ( confirm_empty_typed_message, confirm_typed_data_final, @@ -98,8 +100,8 @@ async def _generate_typed_data_hash( show_message = await should_show_struct( primary_type, typed_data_envelope.types[primary_type].members, - "Confirm message", - "Show full message", + TR.ethereum__title_confirm_message, + TR.ethereum__show_full_message, ) message_hash = await typed_data_envelope.hash_struct( primary_type, diff --git a/core/src/apps/ethereum/verify_message.py b/core/src/apps/ethereum/verify_message.py index b8d8e8304..227e45bf9 100644 --- a/core/src/apps/ethereum/verify_message.py +++ b/core/src/apps/ethereum/verify_message.py @@ -5,6 +5,7 @@ if TYPE_CHECKING: async def verify_message(msg: EthereumVerifyMessage) -> Success: + from trezor import TR from trezor.crypto.curve import secp256k1 from trezor.crypto.hashlib import sha3_256 from trezor.messages import Success @@ -36,5 +37,5 @@ async def verify_message(msg: EthereumVerifyMessage) -> Success: await confirm_signverify(decode_message(msg.message), address, verify=True) - await show_success("verify_message", "The signature is valid.") + await show_success("verify_message", TR.ethereum__valid_signature) return Success(message="Message verified") diff --git a/core/src/apps/homescreen/__init__.py b/core/src/apps/homescreen/__init__.py index 1690cb035..f07a7af62 100644 --- a/core/src/apps/homescreen/__init__.py +++ b/core/src/apps/homescreen/__init__.py @@ -16,27 +16,31 @@ async def busyscreen() -> None: async def homescreen() -> None: + from trezor import TR + if storage.device.is_initialized(): label = storage.device.get_label() else: label = None + # TODO: add notification that translations are out of date + notification = None notification_is_error = False if is_set_any_session(MessageType.AuthorizeCoinJoin): - notification = "COINJOIN AUTHORIZED" + notification = TR.homescreen__title_coinjoin_authorized elif storage.device.is_initialized() and storage.device.no_backup(): - notification = "SEEDLESS" + notification = TR.homescreen__title_seedless notification_is_error = True elif storage.device.is_initialized() and storage.device.unfinished_backup(): - notification = "BACKUP FAILED" + notification = TR.homescreen__title_backup_failed notification_is_error = True elif storage.device.is_initialized() and storage.device.needs_backup(): - notification = "BACKUP NEEDED" + notification = TR.homescreen__title_backup_needed elif storage.device.is_initialized() and not config.has_pin(): - notification = "PIN NOT SET" + notification = TR.homescreen__title_pin_not_set elif storage.device.get_experimental_features(): - notification = "EXPERIMENTAL MODE" + notification = TR.homescreen__title_experimental_mode await Homescreen( label=label, diff --git a/core/src/apps/management/apply_settings.py b/core/src/apps/management/apply_settings.py index 88819750e..684beb35f 100644 --- a/core/src/apps/management/apply_settings.py +++ b/core/src/apps/management/apply_settings.py @@ -1,6 +1,8 @@ from typing import TYPE_CHECKING +import storage.device as storage_device import trezorui2 +from trezor import TR from trezor.enums import ButtonRequestType from trezor.ui.layouts import confirm_action from trezor.wire import DataError @@ -28,7 +30,6 @@ def _validate_homescreen(homescreen: bytes) -> None: async def apply_settings(msg: ApplySettings) -> Success: - import storage.device as storage_device from trezor.messages import Success from trezor.wire import NotInitialized, ProcessError @@ -37,6 +38,7 @@ async def apply_settings(msg: ApplySettings) -> Success: if not storage_device.is_initialized(): raise NotInitialized("Device is not initialized") + homescreen = msg.homescreen # local_cache_attribute label = msg.label # local_cache_attribute auto_lock_delay_ms = msg.auto_lock_delay_ms # local_cache_attribute @@ -128,20 +130,19 @@ async def _require_confirm_change_label(label: str) -> None: await confirm_single( "set_label", - "Device name", - description="Change device name to {}?", + TR.device_name__title, + description=TR.device_name__change_template, description_param=label, - verb="Change", + verb=TR.buttons__change, ) async def _require_confirm_change_passphrase(use: bool) -> None: - on_or_off = "on" if use else "off" - description = f"Turn {on_or_off} passphrase protection?" - verb = f"Turn {on_or_off}" + description = TR.passphrase__turn_on if use else TR.passphrase__turn_off + verb = TR.buttons__turn_on if use else TR.buttons__turn_off await confirm_action( "set_passphrase", - "Passphrase settings", + TR.passphrase__title_settings, description=description, verb=verb, br_code=BRT_PROTECT_CALL, @@ -152,13 +153,13 @@ async def _require_confirm_change_passphrase_source( passphrase_always_on_device: bool, ) -> None: description = ( - "Do you really want to enter passphrase always on the device?" + TR.passphrase__always_on_device if passphrase_always_on_device - else "Do you want to revoke the passphrase on device setting?" + else TR.passphrase__revoke_on_device ) await confirm_action( "set_passphrase_source", - "Passphrase source", + TR.passphrase__title_source, description=description, br_code=BRT_PROTECT_CALL, ) @@ -166,20 +167,20 @@ async def _require_confirm_change_passphrase_source( async def _require_confirm_change_display_rotation(rotation: int) -> None: if rotation == 0: - label = "north" + label = TR.rotation__north elif rotation == 90: - label = "east" + label = TR.rotation__east elif rotation == 180: - label = "south" + label = TR.rotation__south elif rotation == 270: - label = "west" + label = TR.rotation__west else: raise DataError("Unsupported display rotation") await confirm_action( "set_rotation", - "Change rotation", - description="Do you want to change device rotation to {}?", + TR.rotation__title_change, + description=TR.rotation__change_template, description_param=label, br_code=BRT_PROTECT_CALL, ) @@ -188,11 +189,18 @@ async def _require_confirm_change_display_rotation(rotation: int) -> None: async def _require_confirm_change_autolock_delay(delay_ms: int) -> None: from trezor.strings import format_duration_ms + unit_plurals = { + "millisecond": TR.plurals__lock_after_x_milliseconds, + "second": TR.plurals__lock_after_x_seconds, + "minute": TR.plurals__lock_after_x_minutes, + "hour": TR.plurals__lock_after_x_hours, + } + await confirm_action( "set_autolock_delay", - "Auto-lock delay", - description="Auto-lock your Trezor after {} of inactivity?", - description_param=format_duration_ms(delay_ms), + TR.auto_lock__title, + description=TR.auto_lock__change_template, + description_param=format_duration_ms(delay_ms, unit_plurals), br_code=BRT_PROTECT_CALL, ) @@ -203,26 +211,23 @@ async def _require_confirm_safety_checks(level: SafetyCheckLevel) -> None: if level == SafetyCheckLevel.Strict: await confirm_action( "set_safety_checks", - "Safety checks", - description="Do you really want to enforce strict safety checks (recommended)?", + TR.safety_checks__title, + description=TR.safety_checks__enforce_strict, br_code=BRT_PROTECT_CALL, ) elif level in (SafetyCheckLevel.PromptAlways, SafetyCheckLevel.PromptTemporarily): - # Reusing most stuff for both levels - template = ( - "Trezor will{}allow you to approve some actions which might be unsafe." + description = ( + TR.safety_checks__approve_unsafe_temporary + if level == SafetyCheckLevel.PromptTemporarily + else TR.safety_checks__approve_unsafe_always ) - description = template.format( - " temporarily " if level == SafetyCheckLevel.PromptTemporarily else " " - ) - await confirm_action( "set_safety_checks", - "Safety override", - "Are you sure?", + TR.safety_checks__title_safety_override, + TR.words__are_you_sure, description, hold=True, - verb="Hold to confirm", + verb=TR.buttons__hold_to_confirm, reverse=True, br_code=BRT_PROTECT_CALL, ) @@ -234,9 +239,9 @@ async def _require_confirm_experimental_features(enable: bool) -> None: if enable: await confirm_action( "set_experimental_features", - "Experimental mode", - "Only for development and beta testing!", - "Enable experimental features?", + TR.experimental_mode__title, + TR.experimental_mode__only_for_dev, + TR.experimental_mode__enable, reverse=True, br_code=BRT_PROTECT_CALL, ) @@ -246,7 +251,7 @@ async def _require_confirm_hide_passphrase_from_host(enable: bool) -> None: if enable: await confirm_action( "set_hide_passphrase_from_host", - "Hide passphrase", - description="Hide passphrase coming from host?", + TR.passphrase__title_hide, + description=TR.passphrase__hide, br_code=BRT_PROTECT_CALL, ) diff --git a/core/src/apps/management/authenticate_device.py b/core/src/apps/management/authenticate_device.py index 084289258..073fbddec 100644 --- a/core/src/apps/management/authenticate_device.py +++ b/core/src/apps/management/authenticate_device.py @@ -5,7 +5,7 @@ if TYPE_CHECKING: async def authenticate_device(msg: AuthenticateDevice) -> AuthenticityProof: - from trezor import utils, wire + from trezor import TR, utils, wire from trezor.crypto import optiga from trezor.crypto.der import read_length from trezor.crypto.hashlib import sha256 @@ -22,9 +22,9 @@ async def authenticate_device(msg: AuthenticateDevice) -> AuthenticityProof: await confirm_action( "authenticate_device", - "Authenticate device", - description=f"Allow connected computer to confirm your {utils.MODEL_FULL_NAME} is genuine?", - verb="Allow", + TR.authenticate__header, + description=TR.authenticate__confirm_template.format(utils.MODEL_FULL_NAME), + verb=TR.buttons__allow, ) header = b"AuthenticateDevice:" @@ -34,7 +34,7 @@ async def authenticate_device(msg: AuthenticateDevice) -> AuthenticityProof: write_compact_size(h, len(msg.challenge)) h.extend(msg.challenge) - spinner = progress("", description="Checking authenticity...") + spinner = progress("", description=TR.progress__authenticity_check) spinner.report(0) try: diff --git a/core/src/apps/management/change_language.py b/core/src/apps/management/change_language.py new file mode 100644 index 000000000..68f6bb08f --- /dev/null +++ b/core/src/apps/management/change_language.py @@ -0,0 +1,181 @@ +from micropython import const +from typing import TYPE_CHECKING + +from trezor import TR, translations +from trezor.wire import DataError + +if TYPE_CHECKING: + from typing import Callable + + from trezor.messages import ChangeLanguage, Success + from trezor.ui.layouts.common import ProgressLayout + +_CHUNK_SIZE = const(1024) + + +async def change_language(msg: ChangeLanguage) -> Success: + from trezor import utils, workflow + from trezor.messages import Success + from trezor.ui.layouts.progress import progress + + loader: ProgressLayout | None = None + + def report(value: int) -> None: + nonlocal loader + if loader is None: + workflow.close_others() + loader = progress("", TR.language__progress) + loader.report(value) + + if msg.data_length == 0: + await do_unset_language(msg.show_display, report) + else: + await do_change_language( + msg.data_length, msg.show_display, utils.VERSION, report + ) + + return Success(message="Language changed") + + +async def do_unset_language( + show_display: bool | None, report: Callable[[int], None] +) -> None: + current_header = translations.TranslationsHeader.load_from_flash() + silent_install = current_header is None + await _require_confirm_change_language(None, silent_install, show_display) + + if current_header is not None: + report(0) + translations.deinit() + translations.erase() + # translations.init() would be a no-op here + report(1000) + + await _show_success(silent_install, show_display) + + +async def do_change_language( + data_length: int, + show_display: bool | None, + expected_version: tuple[int, int, int, int], + report: Callable[[int], None], +) -> None: + import storage.device + from trezor import utils + + if data_length > translations.area_bytesize(): + raise DataError("Translations too long") + + # Getting and parsing the header + header_data = await _get_data_chunk(data_length, 0) + try: + header = translations.TranslationsHeader(header_data) + except ValueError: + raise DataError("Invalid translations data") + + # Verifying header information + if header.total_len != data_length: + raise DataError("Invalid data length") + + if header.version != expected_version: + raise DataError("Translations version mismatch") + + current_header = translations.TranslationsHeader.load_from_flash() + if current_header is None: + # if no blob is present, but the device is set up, we consider the language + # being ""explicitly set"" to English + silent_install = not storage.device.is_initialized() + else: + # if a blob is present, it can only be silently upgraded to expected_version + silent_install = ( + current_header.language == header.language + and current_header.version != expected_version + ) + + # Confirm with user + await _require_confirm_change_language(header, silent_install, show_display) + + # Initiate loader + report(0) + + # Loading all the data at once, so we can verify its fingerprint + # If we saved it gradually to the storage and only checked the fingerprint at the end + # (with the idea of deleting the data if the fingerprint does not match), + # attackers could still write some data into storage and then unplug the device. + blob = utils.empty_bytearray(translations.area_bytesize()) + + # Write the header + blob.extend(header_data) + + # Requesting the data in chunks and storing them in the blob + # Also checking the hash of the data for consistency + data_to_fetch = data_length - len(header_data) + data_left = data_to_fetch + offset = len(header_data) + while data_left > 0: + data_chunk = await _get_data_chunk(data_left, offset) + report(len(blob) * 1000 // data_length) + blob.extend(data_chunk) + data_left -= len(data_chunk) + offset += len(data_chunk) + + # When the data do not match the hash, do not write anything + try: + translations.verify(blob) + except Exception: + raise DataError("Translation data verification failed.") + + translations.deinit() + translations.erase() + translations.write(blob, 0) + translations.init() + report(1000) + await _show_success(silent_install, show_display) + + +async def _get_data_chunk(data_left: int, offset: int) -> bytes: + from trezor.messages import TranslationDataAck, TranslationDataRequest + from trezor.wire.context import call + + data_length = min(data_left, _CHUNK_SIZE) + req = TranslationDataRequest(data_length=data_length, data_offset=offset) + res = await call(req, TranslationDataAck) + return res.data_chunk + + +async def _require_confirm_change_language( + header: translations.TranslationsHeader | None, + silent_install: bool, + show_display: bool | None, +) -> None: + from trezor.enums import ButtonRequestType + from trezor.ui.layouts import confirm_action + + lang = "en-US" if header is None else header.language + + if not silent_install and show_display is False: + # host requested silent change but we cannot do it + raise DataError("Cannot change language without user prompt.") + + if silent_install and show_display is not True: + # change can be silent and host didn't explicitly request confirmation + return + + # showing confirmation in case (a) host explicitly requests it, + # or (b) installation is not silent + await confirm_action( + "set_language", + TR.language__title, + description=TR.language__change_to.format(lang), + verb="OK", # going for an international word, so it does not need translations + br_code=ButtonRequestType.ProtectCall, + ) + + +async def _show_success(silent_install: bool, show_display: bool | None) -> None: + from trezor.ui.layouts import show_success + + if silent_install and show_display is not True: + return + + await show_success("change_language", TR.language__changed) diff --git a/core/src/apps/management/change_pin.py b/core/src/apps/management/change_pin.py index e16994353..8c2636503 100644 --- a/core/src/apps/management/change_pin.py +++ b/core/src/apps/management/change_pin.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING -from trezor import config, wire +from trezor import TR, config, wire if TYPE_CHECKING: from typing import Awaitable @@ -27,7 +27,7 @@ async def change_pin(msg: ChangePin) -> Success: await _require_confirm_change_pin(msg) # get old pin - curpin, salt = await request_pin_and_sd_salt("Enter PIN") + curpin, salt = await request_pin_and_sd_salt(TR.pin__enter) # if changing pin, pre-check the entered pin before getting new pin if curpin and not msg.remove: @@ -49,13 +49,13 @@ async def change_pin(msg: ChangePin) -> Success: if newpin: if curpin: - msg_screen = "PIN changed." + msg_screen = TR.pin__changed msg_wire = "PIN changed" else: - msg_screen = "PIN protection\nturned on." + msg_screen = TR.pin__enabled msg_wire = "PIN enabled" else: - msg_screen = "PIN protection\nturned off." + msg_screen = TR.pin__disabled msg_wire = "PIN removed" await show_success("success_pin", msg_screen) @@ -67,30 +67,28 @@ def _require_confirm_change_pin(msg: ChangePin) -> Awaitable[None]: has_pin = config.has_pin() - title = "PIN settings" - if msg.remove and has_pin: # removing pin return confirm_action( "disable_pin", - title, - description="Are you sure you want to turn off PIN protection?", - verb="Turn off", + TR.pin__title_settings, + description=TR.pin__turn_off, + verb=TR.buttons__turn_off, ) if not msg.remove and has_pin: # changing pin return confirm_action( "change_pin", - title, - description="Change PIN?", - verb="Change", + TR.pin__title_settings, + description=TR.pin__change, + verb=TR.buttons__change, ) if not msg.remove and not has_pin: # setting new pin return confirm_set_new_pin( "set_pin", - title, - "PIN", - "PIN will be required to access this device.", + TR.pin__title_settings, + TR.pin__turn_on, + TR.pin__info, ) # removing non-existing PIN diff --git a/core/src/apps/management/change_wipe_code.py b/core/src/apps/management/change_wipe_code.py index fb7318b50..7516f665e 100644 --- a/core/src/apps/management/change_wipe_code.py +++ b/core/src/apps/management/change_wipe_code.py @@ -1,5 +1,7 @@ from typing import TYPE_CHECKING +from trezor import TR + if TYPE_CHECKING: from typing import Awaitable @@ -23,7 +25,7 @@ async def change_wipe_code(msg: ChangeWipeCode) -> Success: await _require_confirm_action(msg, has_wipe_code) # Get the unlocking PIN. - pin, salt = await request_pin_and_sd_salt("Enter PIN") + pin, salt = await request_pin_and_sd_salt(TR.pin__enter) if not msg.remove: # Pre-check the entered PIN. @@ -41,13 +43,13 @@ async def change_wipe_code(msg: ChangeWipeCode) -> Success: if wipe_code: if has_wipe_code: - msg_screen = "Wipe code changed." + msg_screen = TR.wipe_code__changed msg_wire = "Wipe code changed" else: - msg_screen = "Wipe code enabled." + msg_screen = TR.wipe_code__enabled msg_wire = "Wipe code set" else: - msg_screen = "Wipe code disabled." + msg_screen = TR.wipe_code__disabled msg_wire = "Wipe code removed" await show_success("success_wipe_code", msg_screen) @@ -60,30 +62,28 @@ def _require_confirm_action( from trezor.ui.layouts import confirm_action, confirm_set_new_pin from trezor.wire import ProcessError - title = "Wipe code settings" - if msg.remove and has_wipe_code: return confirm_action( "disable_wipe_code", - title, - description="Turn off wipe code protection?", - verb="Turn off", + TR.wipe_code__title_settings, + description=TR.wipe_code__turn_off, + verb=TR.buttons__turn_off, ) if not msg.remove and has_wipe_code: return confirm_action( "change_wipe_code", - title, - description="Change wipe code?", - verb="Change", + TR.wipe_code__title_settings, + description=TR.wipe_code__change, + verb=TR.buttons__change, ) if not msg.remove and not has_wipe_code: return confirm_set_new_pin( "set_wipe_code", - title, - "wipe code", - "Wipe code can be used to erase all data from this device.", + TR.wipe_code__title_settings, + TR.wipe_code__turn_on, + TR.wipe_code__info, ) # Removing non-existing wipe code. @@ -100,12 +100,12 @@ async def _request_wipe_code_confirm(pin: str) -> str: from apps.common.request_pin import request_pin while True: - code1 = await request_pin("Enter new wipe code") + code1 = await request_pin(TR.wipe_code__enter_new) if code1 == pin: await wipe_code_same_as_pin_popup() continue await confirm_reenter_pin(is_wipe_code=True) - code2 = await request_pin("Re-enter wipe code") + code2 = await request_pin(TR.wipe_code__reenter) if code1 == code2: return code1 await pin_mismatch_popup(is_wipe_code=True) diff --git a/core/src/apps/management/get_next_u2f_counter.py b/core/src/apps/management/get_next_u2f_counter.py index 4c79f8e87..e97536df3 100644 --- a/core/src/apps/management/get_next_u2f_counter.py +++ b/core/src/apps/management/get_next_u2f_counter.py @@ -6,6 +6,7 @@ if TYPE_CHECKING: async def get_next_u2f_counter(msg: GetNextU2FCounter) -> NextU2FCounter: import storage.device as storage_device + from trezor import TR from trezor.enums import ButtonRequestType from trezor.messages import NextU2FCounter from trezor.ui.layouts import confirm_action @@ -16,8 +17,8 @@ async def get_next_u2f_counter(msg: GetNextU2FCounter) -> NextU2FCounter: await confirm_action( "get_u2f_counter", - "Get U2F counter", - description="Increase and retrieve the U2F counter?", + TR.u2f__title_get, + description=TR.u2f__get, br_code=ButtonRequestType.ProtectCall, ) diff --git a/core/src/apps/management/reboot_to_bootloader.py b/core/src/apps/management/reboot_to_bootloader.py index 1acdcc9ca..b1fa64297 100644 --- a/core/src/apps/management/reboot_to_bootloader.py +++ b/core/src/apps/management/reboot_to_bootloader.py @@ -3,16 +3,62 @@ from typing import TYPE_CHECKING if TYPE_CHECKING: from typing import NoReturn + from trezor.enums import BootCommand from trezor.messages import RebootToBootloader -async def reboot_to_bootloader(msg: RebootToBootloader) -> NoReturn: +async def install_upgrade( + firmware_header: bytes, language_data_length: int +) -> tuple[BootCommand, bytes]: from ubinascii import hexlify - from trezor import io, loop, utils, wire + from trezor import TR, utils, wire + from trezor.enums import BootCommand + from trezor.ui.layouts import confirm_firmware_update, show_wait_text + + from apps.management.change_language import do_change_language + + # check and parse received firmware header + try: + hdr = utils.check_firmware_header(firmware_header) + except Exception: + raise wire.DataError("Invalid firmware header.") + + # vendor must be the same + if hdr.vendor != utils.firmware_vendor(): + raise wire.DataError("Different firmware vendor.") + + # firmware must be newer + if hdr.version <= utils.VERSION: + raise wire.DataError("Not a firmware upgrade.") + + version_str = ".".join(map(str, hdr.version[:3])) + + await confirm_firmware_update( + description=TR.reboot_to_bootloader__version_by_template.format( + version_str, hdr.vendor + ), + fingerprint=hexlify(hdr.fingerprint).decode(), + ) + + # send language data + if language_data_length > 0: + show_wait_text(TR.reboot_to_bootloader__just_a_moment) + await do_change_language( + language_data_length, + show_display=False, + expected_version=hdr.version, + report=lambda i: None, + ) + + return BootCommand.INSTALL_UPGRADE, hdr.hash + + +async def reboot_to_bootloader(msg: RebootToBootloader) -> NoReturn: + from trezor import TR, io, loop, utils from trezor.enums import BootCommand from trezor.messages import Success - from trezor.ui.layouts import confirm_action, confirm_firmware_update + from trezor.ui.layouts import confirm_action from trezor.wire.context import get_context # Bootloader will only allow the INSTALL_UPGRADE flow for official images. @@ -27,40 +73,16 @@ async def reboot_to_bootloader(msg: RebootToBootloader) -> NoReturn: and msg.firmware_header is not None and is_official ): - # check and parse received firmware header - hdr = utils.check_firmware_header(msg.firmware_header) - if hdr is None: - raise wire.DataError("Invalid firmware header.") - else: - # vendor must be the same - if hdr["vendor"] != utils.firmware_vendor(): - raise wire.DataError("Different firmware vendor.") - - current_version = ( - int(utils.VERSION_MAJOR), - int(utils.VERSION_MINOR), - int(utils.VERSION_PATCH), - ) - - # firmware must be newer - if hdr["version"] <= current_version: - raise wire.DataError("Not a firmware upgrade.") - - version_str = ".".join(map(str, hdr["version"])) - - await confirm_firmware_update( - description=f"Firmware version {version_str}\nby {hdr['vendor']}", - fingerprint=hexlify(hdr["fingerprint"]).decode(), - ) - boot_command = BootCommand.INSTALL_UPGRADE - boot_args = hdr["hash"] + boot_command, boot_args = await install_upgrade( + msg.firmware_header, msg.language_data_length + ) else: await confirm_action( "reboot", - "Go to bootloader", - "Trezor will restart in bootloader mode.", - verb="Restart", + TR.reboot_to_bootloader__title, + TR.reboot_to_bootloader__restart, + verb=TR.buttons__restart, ) boot_command = BootCommand.STOP_AND_WAIT boot_args = None diff --git a/core/src/apps/management/recovery_device/__init__.py b/core/src/apps/management/recovery_device/__init__.py index d44c5f57a..a4f349ba8 100644 --- a/core/src/apps/management/recovery_device/__init__.py +++ b/core/src/apps/management/recovery_device/__init__.py @@ -19,7 +19,7 @@ async def recovery_device(msg: RecoveryDevice) -> Success: import storage import storage.device as storage_device import storage.recovery as storage_recovery - from trezor import config, wire, workflow + from trezor import TR, config, wire, workflow from trezor.enums import ButtonRequestType from trezor.ui.layouts import confirm_action, confirm_reset_device @@ -57,14 +57,14 @@ async def recovery_device(msg: RecoveryDevice) -> Success: # -------------------------------------------------------- # _continue_dialog if not dry_run: - await confirm_reset_device("Recover wallet", recovery=True) + await confirm_reset_device(TR.recovery__title_recover, recovery=True) else: await confirm_action( "confirm_seedcheck", - "Backup check", - description="Check your backup?", + TR.recovery__title_dry_run, + description=TR.recovery__check_dry_run, br_code=ButtonRequestType.ProtectCall, - verb="Check", + verb=TR.buttons__check, ) # END _continue_dialog # -------------------------------------------------------- @@ -75,7 +75,7 @@ async def recovery_device(msg: RecoveryDevice) -> Success: # for dry run pin needs to be entered if dry_run: - curpin, salt = await request_pin_and_sd_salt("Enter PIN") + curpin, salt = await request_pin_and_sd_salt(TR.pin__enter) if not config.check_pin(curpin, salt): await error_pin_invalid() diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index ef44dfe59..2691c6cbb 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING import storage.device as storage_device import storage.recovery as storage_recovery import storage.recovery_shares as storage_recovery_shares -from trezor import wire +from trezor import TR, wire from trezor.messages import Success from .. import backup_types @@ -68,7 +68,7 @@ async def _continue_recovery_process() -> Success: # For TT, just continuing straight to word count keyboard if utils.INTERNAL_MODEL == "T2B1": await layout.homescreen_dialog( - "Continue", "Select the number of words in your backup." + TR.buttons__continue, TR.recovery__num_of_words ) # ask for the number of words word_count = await layout.request_word_count(dry_run) @@ -158,7 +158,7 @@ async def _finish_recovery(secret: bytes, backup_type: BackupType) -> Success: storage_recovery.end_progress() - await show_success("success_recovery", "Wallet recovered successfully") + await show_success("success_recovery", TR.recovery__wallet_recovered) return Success(message="Device recovered") @@ -189,16 +189,16 @@ async def _request_share_first_screen(word_count: int) -> None: await _request_share_next_screen() else: await layout.homescreen_dialog( - "Enter share", - "Enter any share", - f"({word_count} words)", + TR.buttons__enter_share, + TR.recovery__enter_any_share, + TR.recovery__word_count_template.format(word_count), show_info=True, ) else: # BIP-39 await layout.homescreen_dialog( - "Continue", - "Enter your backup.", - f"({word_count} words)", + TR.buttons__continue, + TR.recovery__enter_backup, + TR.recovery__word_count_template.format(word_count), show_info=True, ) @@ -214,21 +214,24 @@ async def _request_share_next_screen() -> None: if group_count > 1: await layout.homescreen_dialog( - "Enter", - "More shares needed", + TR.buttons__enter, + TR.recovery__more_shares_needed, info_func=_show_remaining_groups_and_shares, ) else: still_needed_shares = remaining[0] already_entered_shares = len(storage_recovery_shares.fetch_group(0)) overall_needed = still_needed_shares + already_entered_shares - entered = ( - f"{already_entered_shares} of {overall_needed} shares entered successfully." + # TODO: consider kwargs in format here + entered = TR.recovery__x_of_y_entered_template.format( + already_entered_shares, overall_needed ) needed = strings.format_plural( - "{count} more {plural} needed.", still_needed_shares, "share" + TR.recovery__x_more_shares_needed_template_plural, + still_needed_shares, + TR.plurals__x_shares_needed, ) - await layout.homescreen_dialog("Enter share", entered, needed) + await layout.homescreen_dialog(TR.buttons__enter_share, entered, needed) async def _show_remaining_groups_and_shares() -> None: diff --git a/core/src/apps/management/recovery_device/layout.py b/core/src/apps/management/recovery_device/layout.py index 0bdf859c4..d49fbcf59 100644 --- a/core/src/apps/management/recovery_device/layout.py +++ b/core/src/apps/management/recovery_device/layout.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import TR from trezor.enums import ButtonRequestType from trezor.ui.layouts import confirm_action from trezor.ui.layouts.recovery import ( # noqa: F401 @@ -21,18 +22,19 @@ async def _confirm_abort(dry_run: bool = False) -> None: if dry_run: await confirm_action( "abort_recovery", - "Cancel backup check", - description="Are you sure you want to cancel the backup check?", - verb="CANCEL", + TR.recovery__title_cancel_dry_run, + TR.recovery__cancel_dry_run, + description=TR.recovery__wanna_cancel_dry_run, + verb=TR.buttons__cancel, br_code=ButtonRequestType.ProtectCall, ) else: await confirm_action( "abort_recovery", - "Cancel recovery", - "All progress will be lost.", - "Are you sure you want to cancel the recovery process?", - verb="CANCEL", + TR.recovery__title_cancel_recovery, + TR.recovery__progress_will_be_lost, + TR.recovery__wanna_cancel_recovery, + verb=TR.buttons__cancel, reverse=True, br_code=ButtonRequestType.ProtectCall, ) @@ -61,23 +63,23 @@ async def request_mnemonic( # show_share_already_added await show_recovery_warning( "warning_known_share", - "Share already entered", - "Please enter a different share.", + TR.recovery__share_already_entered, + TR.recovery__enter_different_share, ) return None except word_validity.IdentifierMismatch: # show_identifier_mismatch await show_recovery_warning( "warning_mismatched_share", - "You have entered a share from another Shamir Backup.", + TR.recovery__share_from_another_shamir, ) return None except word_validity.ThresholdReached: # show_group_threshold_reached await show_recovery_warning( "warning_group_threshold", - "Group threshold reached.", - "Enter share from a different group.", + TR.recovery__group_threshold_reached, + TR.recovery__enter_share_from_diff_group, ) return None @@ -89,32 +91,32 @@ async def show_dry_run_result(result: bool, is_slip39: bool) -> None: if result: if is_slip39: - text = "The entered recovery shares are valid and match what is currently in the device." + text = TR.recovery__dry_run_slip39_valid_match else: - text = ( - "The entered recovery seed is valid and matches the one in the device." - ) - await show_success("success_dry_recovery", text, button="Continue") + text = TR.recovery__dry_run_bip39_valid_match + await show_success("success_dry_recovery", text, button=TR.buttons__continue) else: if is_slip39: - text = "The entered recovery shares are valid but do not match what is currently in the device." + text = TR.recovery__dry_run_slip39_valid_mismatch else: - text = "The entered recovery seed is valid but does not match the one in the device." - await show_recovery_warning("warning_dry_recovery", "", text, button="Continue") + text = TR.recovery__dry_run_bip39_valid_mismatch + await show_recovery_warning( + "warning_dry_recovery", "", text, button=TR.buttons__continue + ) async def show_invalid_mnemonic(word_count: int) -> None: if backup_types.is_slip39_word_count(word_count): await show_recovery_warning( "warning_invalid_share", - "Invalid recovery share entered.", - "Please try again", + TR.recovery__invalid_share_entered, + TR.words__please_try_again, ) else: await show_recovery_warning( "warning_invalid_seed", - "Invalid recovery seed entered.", - "Please try again", + TR.recovery__invalid_seed_entered, + TR.words__please_try_again, ) diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index 7a58f9554..139b61899 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -22,7 +22,7 @@ _DEFAULT_BACKUP_TYPE = BAK_T_BIP39 async def reset_device(msg: ResetDevice) -> Success: - from trezor import config + from trezor import TR, config from trezor.crypto import bip39, random from trezor.messages import EntropyAck, EntropyRequest, Success from trezor.pin import render_empty_loader @@ -38,13 +38,13 @@ async def reset_device(msg: ResetDevice) -> Success: # make sure user knows they're setting up a new wallet if backup_type in (BAK_T_SLIP39_BASIC, BAK_T_SLIP39_ADVANCED): - title = "Create wallet (Shamir)" + title = TR.reset__title_create_wallet_shamir else: - title = "Create wallet" + title = TR.reset__title_create_wallet await confirm_reset_device(title) # Rendering empty loader so users do not feel a freezing screen - render_empty_loader("PROCESSING", "") + render_empty_loader(TR.progress__processing, "") # wipe storage to make sure the device is in a clear state storage.reset() diff --git a/core/src/apps/management/reset_device/layout.py b/core/src/apps/management/reset_device/layout.py index 6653cfee1..70eb22db2 100644 --- a/core/src/apps/management/reset_device/layout.py +++ b/core/src/apps/management/reset_device/layout.py @@ -1,6 +1,7 @@ from micropython import const from typing import Sequence +from trezor import TR from trezor.enums import ButtonRequestType from trezor.ui.layouts import show_success from trezor.ui.layouts.reset import ( # noqa: F401 @@ -20,7 +21,7 @@ async def show_internal_entropy(entropy: bytes) -> None: await confirm_blob( "entropy", - "Internal entropy", + TR.entropy__title, entropy, br_code=ButtonRequestType.ResetDevice, ) @@ -110,23 +111,29 @@ async def _show_confirmation_success( group_index: int | None = None, ) -> None: if share_index is None or num_of_shares is None: # it is a BIP39 backup - subheader = "You have finished verifying your recovery seed." + subheader = TR.reset__finished_verifying_seed text = "" elif share_index == num_of_shares - 1: if group_index is None: - subheader = "You have finished verifying your recovery shares." + subheader = TR.reset__finished_verifying_shares else: - subheader = f"You have finished verifying your recovery shares for group {group_index + 1}." + subheader = TR.reset__finished_verifying_group_template.format( + group_index + 1 + ) text = "" else: if group_index is None: - subheader = f"Recovery share #{share_index + 1} checked successfully." - text = f"Continue with share #{share_index + 2}." + subheader = TR.reset__share_checked_successfully_template.format( + share_index + 1 + ) + text = TR.reset__continue_with_share_template.format(share_index + 2) else: - subheader = f"Group {group_index + 1} - Share {share_index + 1} checked successfully." - text = "Continue with the next share." + subheader = TR.reset__group_share_checked_successfully_template.format( + group_index + 1, share_index + 1 + ) + text = TR.reset__continue_with_next_share return await show_success("success_recovery", text, subheader) @@ -136,9 +143,9 @@ async def _show_confirmation_failure() -> None: await show_reset_warning( "warning_backup_check", - "Please check again", - "Wrong word selected!", - "Check again", + TR.words__please_check_again, + TR.reset__wrong_word_selected, + TR.buttons__check_again, ButtonRequestType.ResetDevice, ) diff --git a/core/src/apps/management/sd_protect.py b/core/src/apps/management/sd_protect.py index 73ba26b26..b21a81807 100644 --- a/core/src/apps/management/sd_protect.py +++ b/core/src/apps/management/sd_protect.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING import storage.device as storage_device import storage.sd_salt as storage_sd_salt -from trezor import config +from trezor import TR, config from trezor.enums import SdProtectOperationType from trezor.messages import Success from trezor.ui.layouts import show_success @@ -67,7 +67,7 @@ async def _sd_protect_enable(msg: SdProtect) -> Success: # Get the current PIN. if config.has_pin(): - pin = await request_pin("Enter PIN", config.get_pin_rem()) + pin = await request_pin(TR.pin__enter, config.get_pin_rem()) else: pin = "" @@ -88,7 +88,7 @@ async def _sd_protect_enable(msg: SdProtect) -> Success: storage_device.set_sd_salt_auth_key(salt_auth_key) - await show_success("success_sd", "You have successfully enabled SD protection.") + await show_success("success_sd", TR.sd_card__enabled) return Success(message="SD card protection enabled") @@ -103,7 +103,7 @@ async def _sd_protect_disable(msg: SdProtect) -> Success: await require_confirm_sd_protect(msg) # Get the current PIN and salt from the SD card. - pin, salt = await request_pin_and_sd_salt("Enter PIN") + pin, salt = await request_pin_and_sd_salt(TR.pin__enter) # Check PIN and remove salt. if not config.change_pin(pin, pin, salt, None): @@ -120,7 +120,7 @@ async def _sd_protect_disable(msg: SdProtect) -> Success: # because overall SD-protection was successfully disabled. pass - await show_success("success_sd", "You have successfully disabled SD protection.") + await show_success("success_sd", TR.sd_card__disabled) return Success(message="SD card protection disabled") @@ -135,7 +135,7 @@ async def _sd_protect_refresh(msg: SdProtect) -> Success: await ensure_sdcard() # Get the current PIN and salt from the SD card. - pin, old_salt = await request_pin_and_sd_salt("Enter PIN") + pin, old_salt = await request_pin_and_sd_salt(TR.pin__enter) # Check PIN and change salt. new_salt, new_auth_key, new_salt_tag = _make_salt() @@ -155,7 +155,7 @@ async def _sd_protect_refresh(msg: SdProtect) -> Success: # SD-protection was successfully refreshed. pass - await show_success("success_sd", "You have successfully refreshed SD protection.") + await show_success("success_sd", TR.sd_card__refreshed) return Success(message="SD card protection refreshed") @@ -163,12 +163,12 @@ def require_confirm_sd_protect(msg: SdProtect) -> Awaitable[None]: from trezor.ui.layouts import confirm_action if msg.operation == SdProtectOperationType.ENABLE: - text = "Do you really want to secure your device with SD card protection?" + text = TR.sd_card__enable elif msg.operation == SdProtectOperationType.DISABLE: - text = "Do you really want to remove SD card protection from your device?" + text = TR.sd_card__disable elif msg.operation == SdProtectOperationType.REFRESH: - text = "Do you really want to replace the current SD card secret with a newly generated one?" + text = TR.sd_card__refresh else: raise ProcessError("Unknown operation") - return confirm_action("set_sd", "SD card protection", description=text) + return confirm_action("set_sd", TR.sd_card__title, description=text) diff --git a/core/src/apps/management/set_u2f_counter.py b/core/src/apps/management/set_u2f_counter.py index e32b30666..19959f875 100644 --- a/core/src/apps/management/set_u2f_counter.py +++ b/core/src/apps/management/set_u2f_counter.py @@ -6,7 +6,7 @@ if TYPE_CHECKING: async def set_u2f_counter(msg: SetU2FCounter) -> Success: import storage.device as storage_device - from trezor import wire + from trezor import TR, wire from trezor.enums import ButtonRequestType from trezor.messages import Success from trezor.ui.layouts import confirm_action @@ -18,10 +18,10 @@ async def set_u2f_counter(msg: SetU2FCounter) -> Success: await confirm_action( "set_u2f_counter", - "Set U2F counter", - description="Set the U2F counter to {}?", + TR.u2f__title_set, + description=TR.u2f__set_template, description_param=str(msg.u2f_counter), - verb="SET", + verb=TR.buttons__set, br_code=ButtonRequestType.ProtectCall, ) diff --git a/core/src/apps/management/wipe_device.py b/core/src/apps/management/wipe_device.py index 5a2f3e6ad..652c6fd18 100644 --- a/core/src/apps/management/wipe_device.py +++ b/core/src/apps/management/wipe_device.py @@ -6,6 +6,7 @@ if TYPE_CHECKING: async def wipe_device(msg: WipeDevice) -> Success: import storage + from trezor import TR, translations from trezor.enums import ButtonRequestType from trezor.messages import Success from trezor.ui.layouts import confirm_action @@ -14,17 +15,23 @@ async def wipe_device(msg: WipeDevice) -> Success: await confirm_action( "confirm_wipe", - "Wipe device", - "All data will be erased.", - "Do you really want to wipe the device?\n", + TR.wipe__title, + TR.wipe__info, + TR.wipe__want_to_wipe, reverse=True, - verb="Hold to confirm", + verb=TR.buttons__hold_to_confirm, hold=True, hold_danger=True, br_code=ButtonRequestType.WipeDevice, ) + # wipe storage storage.wipe() + # erase translations + translations.deinit() + translations.erase() + + # reload settings reload_settings_from_storage() return Success(message="Device wiped") diff --git a/core/src/apps/misc/cipher_key_value.py b/core/src/apps/misc/cipher_key_value.py index 3bf22aee3..823f86316 100644 --- a/core/src/apps/misc/cipher_key_value.py +++ b/core/src/apps/misc/cipher_key_value.py @@ -8,6 +8,7 @@ if TYPE_CHECKING: async def cipher_key_value(msg: CipherKeyValue) -> CipheredKeyValue: + from trezor import TR from trezor.crypto import aes, hmac from trezor.messages import CipheredKeyValue from trezor.ui.layouts import confirm_action @@ -26,14 +27,14 @@ async def cipher_key_value(msg: CipherKeyValue) -> CipheredKeyValue: if (encrypt and msg.ask_on_encrypt) or (decrypt and msg.ask_on_decrypt): # Special case for Trezor Suite, which asks for setting up labels if msg.key == "Enable labeling?": - title = "SUITE LABELING" - verb = "ENABLE" + title = TR.misc__title_suite_labeling + verb = TR.buttons__enable else: if encrypt: - title = "Encrypt value" + title = TR.misc__encrypt_value else: - title = "Decrypt value" - verb = "CONFIRM" + title = TR.misc__decrypt_value + verb = TR.buttons__confirm await confirm_action("cipher_key_value", title, description=msg.key, verb=verb) diff --git a/core/src/apps/misc/get_ecdh_session_key.py b/core/src/apps/misc/get_ecdh_session_key.py index 8fd0caab6..68b55baed 100644 --- a/core/src/apps/misc/get_ecdh_session_key.py +++ b/core/src/apps/misc/get_ecdh_session_key.py @@ -31,6 +31,7 @@ async def get_ecdh_session_key(msg: GetECDHSessionKey) -> ECDHSessionKey: # require_confirm_ecdh_session_key proto = msg_identity.proto.upper() if msg_identity.proto else "identity" await confirm_address( + # TODO: translate? f"Decrypt {proto}", serialize_identity_without_proto(msg_identity), "", diff --git a/core/src/apps/misc/get_entropy.py b/core/src/apps/misc/get_entropy.py index ae4c41bea..dae1c238a 100644 --- a/core/src/apps/misc/get_entropy.py +++ b/core/src/apps/misc/get_entropy.py @@ -5,6 +5,7 @@ if TYPE_CHECKING: async def get_entropy(msg: GetEntropy) -> Entropy: + from trezor import TR from trezor.crypto import random from trezor.enums import ButtonRequestType from trezor.messages import Entropy @@ -12,9 +13,9 @@ async def get_entropy(msg: GetEntropy) -> Entropy: await confirm_action( "get_entropy", - "Confirm entropy", - "Do you really want to send entropy?", - "Continue only if you know what you are doing!", + TR.entropy__title_confirm, + TR.entropy__send, + TR.words__know_what_your_doing, br_code=ButtonRequestType.ProtectCall, ) diff --git a/core/src/apps/monero/layout.py b/core/src/apps/monero/layout.py index a0c2e01e7..bf37b473f 100644 --- a/core/src/apps/monero/layout.py +++ b/core/src/apps/monero/layout.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import TR from trezor.enums import ButtonRequestType from trezor.ui.layouts import confirm_action, confirm_metadata # noqa: F401 from trezor.ui.layouts.progress import ( # noqa: F401 @@ -28,21 +29,23 @@ class MoneroTransactionProgress: def step(self, state: State, step: int, sub_step: int = 0) -> None: if step == 0 or self.inner is None: self.inner = monero_transaction_progress_inner() - info = "Signing..." + info = TR.monero__signing elif step == state.STEP_INP: - info = f"Processing inputs\n{sub_step + 1}/{state.input_count}" + info = f"{TR.monero__processing_inputs}\n{sub_step + 1}/{state.input_count}" elif step == state.STEP_VINI: - info = f"Hashing inputs\n{sub_step + 1}/{state.input_count}" + info = f"{TR.monero__hashing_inputs}n{sub_step + 1}/{state.input_count}" elif step == state.STEP_ALL_IN: - info = "Processing..." + info = TR.monero__processing elif step == state.STEP_OUT: - info = f"Processing outputs\n{sub_step + 1}/{state.output_count}" + info = ( + f"{TR.monero__processing_outputs}\n{sub_step + 1}/{state.output_count}" + ) elif step == state.STEP_ALL_OUT: - info = "Postprocessing..." + info = TR.monero__postprocessing elif step == state.STEP_SIGN: - info = f"Signing inputs\n{sub_step + 1}/{state.input_count}" + info = f"{TR.monero__signing_inputs}\n{sub_step + 1}/{state.input_count}" else: - info = "Processing..." + info = TR.monero__processing state.progress_cur += 1 @@ -59,8 +62,8 @@ def _format_amount(value: int) -> str: async def require_confirm_watchkey() -> None: await confirm_action( "get_watchkey", - "Confirm export", - description="Do you really want to export watch-only credentials?", + TR.monero__confirm_export, + description=TR.monero__wanna_export_watchkey, br_code=BRT_SignTx, ) @@ -68,8 +71,8 @@ async def require_confirm_watchkey() -> None: async def require_confirm_keyimage_sync() -> None: await confirm_action( "key_image_sync", - "Confirm ki sync", - description="Do you really want to\nsync key images?", + TR.monero__confirm_ki_sync, + description=TR.monero__wanna_sync_key_images, br_code=BRT_SignTx, ) @@ -77,21 +80,19 @@ async def require_confirm_keyimage_sync() -> None: async def require_confirm_live_refresh() -> None: await confirm_action( "live_refresh", - "Confirm refresh", - description="Do you really want to\nstart refresh?", + TR.monero__confirm_refresh, + description=TR.monero__wanna_start_refresh, br_code=BRT_SignTx, ) async def require_confirm_tx_key(export_key: bool = False) -> None: description = ( - "Do you really want to export tx_key?" - if export_key - else "Do you really want to export tx_der\nfor tx_proof?" + TR.monero__wanna_export_tx_key if export_key else TR.monero__wanna_export_tx_der ) await confirm_action( "export_tx_key", - "Confirm export", + TR.monero__confirm_export, description=description, br_code=BRT_SignTx, ) @@ -173,7 +174,7 @@ async def _require_confirm_payment_id(payment_id: bytes) -> None: await confirm_blob( "confirm_payment_id", - "Payment ID", + TR.monero__payment_id, payment_id, br_code=BRT_SignTx, ) @@ -182,7 +183,7 @@ async def _require_confirm_payment_id(payment_id: bytes) -> None: async def _require_confirm_fee(fee: int) -> None: await confirm_metadata( "confirm_final", - "Confirm fee", + TR.words__confirm_fee, "{}", _format_amount(fee), hold=True, @@ -192,8 +193,8 @@ async def _require_confirm_fee(fee: int) -> None: async def _require_confirm_unlock_time(unlock_time: int) -> None: await confirm_metadata( "confirm_locktime", - "Confirm unlock time", - "Unlock time for this transaction is set to {}", + TR.monero__confirm_unlock_time, + TR.monero__unlock_time_set_template, str(unlock_time), BRT_SignTx, ) diff --git a/core/src/apps/nem/layout.py b/core/src/apps/nem/layout.py index 28f3d7e47..cf25ac926 100644 --- a/core/src/apps/nem/layout.py +++ b/core/src/apps/nem/layout.py @@ -1,3 +1,4 @@ +from trezor import TR from trezor.enums import ButtonRequestType from trezor.strings import format_amount from trezor.ui.layouts import confirm_metadata @@ -8,7 +9,7 @@ from .helpers import NEM_MAX_DIVISIBILITY async def require_confirm_text(action: str) -> None: await confirm_metadata( "confirm_nem", - "Confirm action", + TR.nem__confirm_action, action, br_code=ButtonRequestType.ConfirmOutput, ) @@ -17,7 +18,7 @@ async def require_confirm_text(action: str) -> None: async def require_confirm_fee(action: str, fee: int) -> None: await confirm_metadata( "confirm_fee", - "Confirm fee", + TR.words__confirm_fee, action + "\n{}", f"{format_amount(fee, NEM_MAX_DIVISIBILITY)} XEM", ButtonRequestType.ConfirmOutput, @@ -38,8 +39,8 @@ async def require_confirm_final(fee: int) -> None: # we use SignTx, not ConfirmOutput, for compatibility with T1 await confirm_metadata( "confirm_final", - "Final confirm", - "Sign this transaction\n{}\nfor network fee?", - f"and pay {format_amount(fee, NEM_MAX_DIVISIBILITY)} XEM", + TR.nem__final_confirm, + TR.nem__sign_tx_fee_template, + f"{format_amount(fee, NEM_MAX_DIVISIBILITY)} XEM", hold=True, ) diff --git a/core/src/apps/nem/mosaic/layout.py b/core/src/apps/nem/mosaic/layout.py index 20b7f240b..9e14228fc 100644 --- a/core/src/apps/nem/mosaic/layout.py +++ b/core/src/apps/nem/mosaic/layout.py @@ -1,5 +1,7 @@ from typing import TYPE_CHECKING +from trezor import TR + from ..layout import require_confirm_content, require_confirm_final if TYPE_CHECKING: @@ -17,12 +19,12 @@ async def ask_mosaic_creation( from ..layout import require_confirm_fee creation_message = [ - ("Create mosaic", creation.definition.mosaic), - ("under namespace", creation.definition.namespace), + (TR.nem__create_mosaic, creation.definition.mosaic), + (TR.nem__under_namespace, creation.definition.namespace), ] - await require_confirm_content("Create mosaic", creation_message) + await require_confirm_content(TR.nem__create_mosaic, creation_message) await _require_confirm_properties(creation.definition) - await require_confirm_fee("Confirm creation fee", creation.fee) + await require_confirm_fee(TR.nem__confirm_creation_fee, creation.fee) await require_confirm_final(common.fee) @@ -35,17 +37,19 @@ async def ask_supply_change( from ..layout import require_confirm_text supply_message = [ - ("Modify supply for", change.mosaic), - ("under namespace", change.namespace), + (TR.nem__modify_supply_for, change.mosaic), + (TR.nem__under_namespace, change.namespace), ] - await require_confirm_content("Supply change", supply_message) + await require_confirm_content(TR.nem__supply_change, supply_message) if change.type == NEMSupplyChangeType.SupplyChange_Decrease: - action = "Decrease" + action = TR.nem__decrease elif change.type == NEMSupplyChangeType.SupplyChange_Increase: - action = "Increase" + action = TR.nem__increase else: raise ValueError("Invalid supply change type") - await require_confirm_text(f"{action} supply by {change.delta} whole units?") + await require_confirm_text( + TR.nem__supply_units_template.format(action, change.delta) + ) await require_confirm_final(common.fee) @@ -59,18 +63,18 @@ async def _require_confirm_properties(definition: NEMMosaicDefinition) -> None: # description if definition.description: - append(("Description:", definition.description)) + append((TR.nem__description, definition.description)) # transferable - transferable = "Yes" if definition.transferable else "No" - append(("Transferable?", transferable)) + transferable = TR.words__yes if definition.transferable else TR.words__no + append((TR.nem__transferable, transferable)) # mutable_supply - imm = "mutable" if definition.mutable_supply else "immutable" + imm = TR.nem__mutable if definition.mutable_supply else TR.nem__immutable if definition.supply: - append(("Initial supply:", str(definition.supply) + "\n" + imm)) + append((TR.nem__initial_supply, str(definition.supply) + "\n" + imm)) else: - append(("Initial supply:", imm)) + append((TR.nem__initial_supply, imm)) # levy if definition.levy: @@ -79,23 +83,23 @@ async def _require_confirm_properties(definition: NEMMosaicDefinition) -> None: assert definition.levy_namespace is not None assert definition.levy_mosaic is not None - append(("Levy recipient:", definition.levy_address)) + append((TR.nem__levy_recipient, definition.levy_address)) - append(("Levy fee:", str(definition.fee))) - append(("Levy divisibility:", str(definition.divisibility))) + append((TR.nem__levy_fee, str(definition.fee))) + append((TR.nem__levy_divisibility, str(definition.divisibility))) - append(("Levy namespace:", definition.levy_namespace)) - append(("Levy mosaic:", definition.levy_mosaic)) + append((TR.nem__levy_namespace, definition.levy_namespace)) + append((TR.nem__levy_mosaic, definition.levy_mosaic)) levy_type = ( - "absolute" + TR.nem__absolute if definition.levy == NEMMosaicLevy.MosaicLevy_Absolute - else "percentile" + else TR.nem__percentile ) - append(("Levy type:", levy_type)) + append((TR.nem__levy_type, levy_type)) await confirm_properties( "confirm_properties", - "Confirm properties", + TR.nem__confirm_properties, properties, ) diff --git a/core/src/apps/nem/multisig/layout.py b/core/src/apps/nem/multisig/layout.py index ef49387bb..328cd5636 100644 --- a/core/src/apps/nem/multisig/layout.py +++ b/core/src/apps/nem/multisig/layout.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import TR from trezor.crypto import nem if TYPE_CHECKING: @@ -17,10 +18,10 @@ async def ask_multisig(msg: NEMSignTx) -> None: assert msg.multisig.signer is not None # sign_tx address = nem.compute_address(msg.multisig.signer, msg.transaction.network) if msg.cosigning: - await _require_confirm_address("Cosign transaction for", address) + await _require_confirm_address(TR.nem__cosign_transaction_for, address) else: - await _require_confirm_address("Initiate transaction for", address) - await require_confirm_fee("Confirm multisig fee", msg.transaction.fee) + await _require_confirm_address(TR.nem__initiate_transaction_for, address) + await require_confirm_fee(TR.nem__confirm_multisig_fee, msg.transaction.fee) async def ask_aggregate_modification( @@ -33,21 +34,21 @@ async def ask_aggregate_modification( from ..layout import require_confirm_final, require_confirm_text if not multisig: - await require_confirm_text("Convert account to multisig account?") + await require_confirm_text(TR.nem__convert_account_to_multisig) for m in mod.modifications: if m.type == NEMModificationType.CosignatoryModification_Add: - action = "Add" + action = TR.nem__add else: - action = "Remove" + action = TR.nem__remove address = nem.compute_address(m.public_key, common.network) - await _require_confirm_address(action + " cosignatory", address) + await _require_confirm_address(action + TR.nem__cosignatory, address) if mod.relative_change: if multisig: - action = "Modify the number of cosignatories by " + action = TR.nem__modify_the_number_of_cosignatories_by else: - action = "Set minimum cosignatories to " + action = TR.nem__set_minimum_cosignatories_to await require_confirm_text(action + str(mod.relative_change) + "?") await require_confirm_final(common.fee) @@ -58,7 +59,7 @@ async def _require_confirm_address(action: str, address: str) -> None: from trezor.ui.layouts import confirm_address await confirm_address( - "Confirm address", + TR.nem__confirm_address, address, action, "confirm_multisig", diff --git a/core/src/apps/nem/namespace/layout.py b/core/src/apps/nem/namespace/layout.py index c48f08b1b..3a1daf515 100644 --- a/core/src/apps/nem/namespace/layout.py +++ b/core/src/apps/nem/namespace/layout.py @@ -7,6 +7,8 @@ if TYPE_CHECKING: async def ask_provision_namespace( common: NEMTransactionCommon, namespace: NEMProvisionNamespace ) -> None: + from trezor import TR + from ..layout import ( require_confirm_content, require_confirm_fee, @@ -15,14 +17,14 @@ async def ask_provision_namespace( if namespace.parent: content = [ - ("Create namespace", namespace.namespace), - ("under namespace", namespace.parent), + (TR.nem__create_namespace, namespace.namespace), + (TR.nem__under_namespace, namespace.parent), ] - await require_confirm_content("Confirm namespace", content) + await require_confirm_content(TR.nem__confirm_namespace, content) else: - content = [("Create namespace", namespace.namespace)] - await require_confirm_content("Confirm namespace", content) + content = [(TR.nem__create_namespace, namespace.namespace)] + await require_confirm_content(TR.nem__confirm_namespace, content) - await require_confirm_fee("Confirm rental fee", namespace.fee) + await require_confirm_fee(TR.nem__confirm_rental_fee, namespace.fee) await require_confirm_final(common.fee) diff --git a/core/src/apps/nem/transfer/layout.py b/core/src/apps/nem/transfer/layout.py index d615c4426..61f67c4b1 100644 --- a/core/src/apps/nem/transfer/layout.py +++ b/core/src/apps/nem/transfer/layout.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import TR from trezor.enums import ButtonRequestType from trezor.strings import format_amount @@ -30,9 +31,9 @@ async def ask_transfer( # require_confirm_payload await confirm_text( "confirm_payload", - "Confirm payload", + TR.nem__confirm_payload, bytes(transfer.payload).decode(), - "Encrypted:" if encrypted else "Unencrypted:", + TR.nem__encrypted if encrypted else TR.nem__unencrypted, ButtonRequestType.ConfirmOutput, ) @@ -67,14 +68,14 @@ async def _ask_transfer_mosaic( if definition: await confirm_properties( "confirm_mosaic", - "Confirm mosaic", + TR.nem__confirm_mosaic, ( ( - "Confirm transfer of", + TR.nem__confirm_transfer_of, format_amount(mosaic_quantity, definition.divisibility) + definition.ticker, ), - ("of", definition.name), + (TR.nem__of, definition.name), ), ) levy = definition.levy # local_cache_attribute @@ -93,25 +94,28 @@ async def _ask_transfer_mosaic( await confirm_properties( "confirm_mosaic_levy", - "Confirm mosaic", - (("Confirm mosaic\nlevy fee of", levy_msg),), + TR.nem__confirm_mosaic, + ((TR.nem__levy_fee_of, levy_msg),), ) else: await confirm_action( "confirm_mosaic_unknown", - "Confirm mosaic", - "Unknown mosaic!", - "Divisibility and levy cannot be shown for unknown mosaics", + TR.nem__confirm_mosaic, + TR.nem__unknown_mosaic, + TR.nem__divisibility_and_levy_cannot_be_shown, br_code=ButtonRequestType.ConfirmOutput, ) await confirm_properties( "confirm_mosaic_transfer", - "Confirm mosaic", + TR.nem__confirm_mosaic, ( - ("Confirm transfer of", f"{mosaic_quantity} raw units"), - ("of", f"{mosaic.namespace}.{mosaic.mosaic}"), + ( + TR.nem__confirm_transfer_of, + TR.nem__raw_units_template.format(mosaic_quantity), + ), + (TR.nem__of, f"{mosaic.namespace}.{mosaic.mosaic}"), ), ) @@ -136,8 +140,8 @@ async def ask_importance_transfer( from ..layout import require_confirm_text if imp.mode == NEMImportanceTransferMode.ImportanceTransfer_Activate: - m = "Activate" + m = TR.nem__activate else: - m = "Deactivate" - await require_confirm_text(m + " remote harvesting?") + m = TR.nem__deactivate + await require_confirm_text(m + TR.nem__remote_harvesting) await require_confirm_final(common.fee) diff --git a/core/src/apps/ripple/layout.py b/core/src/apps/ripple/layout.py index f91934d2a..4ef4359d7 100644 --- a/core/src/apps/ripple/layout.py +++ b/core/src/apps/ripple/layout.py @@ -13,10 +13,12 @@ async def require_confirm_total(total: int, fee: int) -> None: async def require_confirm_destination_tag(tag: int) -> None: + from trezor import TR + await confirm_metadata( "confirm_destination_tag", - "Confirm tag", - "Destination tag:\n{}", + TR.ripple__confirm_tag, + TR.ripple__destination_tag_template, str(tag), ButtonRequestType.ConfirmOutput, ) diff --git a/core/src/apps/solana/layout.py b/core/src/apps/solana/layout.py index ffe779c05..cd51c0142 100644 --- a/core/src/apps/solana/layout.py +++ b/core/src/apps/solana/layout.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import TR from trezor.crypto import base58 from trezor.enums import ButtonRequestType from trezor.strings import format_amount @@ -34,9 +35,9 @@ def _format_path(path: list[int]) -> str: def _get_address_reference_props(address: AddressReference, display_name: str): return ( - (f"{display_name} is provided via a lookup table.", ""), - ("Lookup table address:", base58.encode(address[0])), - ("Account index:", f"{address[1]}"), + (TR.solana__is_provided_via_lookup_table_template.format(display_name), ""), + (f"{TR.solana__lookup_table_address}:", base58.encode(address[0])), + (f"{TR.solana__account_index}:", f"{address[1]}"), ) @@ -62,8 +63,8 @@ async def confirm_instruction( if instruction.multisig_signers: await confirm_metadata( "confirm_multisig", - "Confirm multisig", - "The following instruction is a multisig instruction.", + TR.solana__confirm_multisig, + TR.solana__instruction_is_multisig, br_code=ButtonRequestType.Other, ) @@ -108,7 +109,7 @@ async def confirm_instruction( if len(account_value) == 2: signer_suffix = "" if account_value[0] == signer_public_key: - signer_suffix = " (Signer)" + signer_suffix = f" ({TR.words__signer})" account_data.append( ( @@ -141,7 +142,10 @@ async def confirm_instruction( path_str = f" ({address_n_to_str(signer_path)})" signers.append( - (f"Signer {i}{path_str}:", base58.encode(multisig_signer[0])) + ( + f"{TR.words__signer} {i}{path_str}:", + base58.encode(multisig_signer[0]), + ) ) await confirm_properties( @@ -153,13 +157,13 @@ async def confirm_instruction( def get_address_type(address_type: AddressType) -> str: if address_type == AddressType.AddressSig: - return "(Writable, Signer)" + return f"({TR.words__writable}, {TR.words__signer})" if address_type == AddressType.AddressSigReadOnly: - return "(Signer)" + return f"({TR.words__signer})" if address_type == AddressType.AddressReadOnly: return "" if address_type == AddressType.AddressRw: - return "(Writable)" + return f"({TR.words__writable})" raise ValueError # Invalid address type @@ -177,18 +181,20 @@ async def confirm_unsupported_instruction_details( ( ( NORMAL, - f"Instruction contains {len(instruction.accounts)} accounts and its data is {len(instruction.instruction_data)} bytes long.", + TR.solana__instruction_accounts_template.format( + len(instruction.accounts), len(instruction.instruction_data) + ), ), ), - "Show details", - confirm="Continue", + TR.buttons__show_details, + confirm=TR.buttons__continue, ) if should_show_instruction_details: await confirm_properties( "instruction_data", title, - (("Instruction data:", bytes(instruction.instruction_data)),), + ((f"{TR.solana__instruction_data}:", bytes(instruction.instruction_data)),), ) accounts = [] @@ -203,14 +209,14 @@ async def confirm_unsupported_instruction_details( accounts.append( ( - f"Account {i}{path_str} {address_type}:", + f"{TR.words__account} {i}{path_str} {address_type}:", base58.encode(account_public_key), ) ) elif len(account) == 3: address_type = get_address_type(account[2]) accounts += _get_address_reference_props( - account, f"Account {i} {address_type}" + account, f"{TR.words__account} {i} {address_type}" ) else: raise ValueError # Invalid account value @@ -260,12 +266,12 @@ async def confirm_system_transfer( blockhash: bytes, ) -> None: await confirm_value( - title="Recipient", + title=TR.words__recipient, value=base58.encode(transfer_instruction.recipient_account[0]), description="", br_type="confirm_recipient", br_code=ButtonRequestType.ConfirmOutput, - verb="CONTINUE", + verb=TR.buttons__continue, ) await confirm_custom_transaction( @@ -289,24 +295,26 @@ async def confirm_token_transfer( blockhash: bytes, ): await confirm_value( - title="Recipient", + title=TR.words__recipient, value=base58.encode(destination_account), description="", br_type="confirm_recipient", br_code=ButtonRequestType.ConfirmOutput, - verb="CONTINUE", - info_items=(("Associated token account:", base58.encode(token_account)),) + verb=TR.buttons__continue, + info_items=( + (f"{TR.solana__associated_token_account}:", base58.encode(token_account)), + ) if token_account != destination_account else None, ) await confirm_value( - title="Token address", + title=TR.solana__token_address, value=base58.encode(token_mint), description="", br_type="confirm_token_address", br_code=ButtonRequestType.ConfirmOutput, - verb="CONTINUE", + verb=TR.buttons__continue, ) await confirm_custom_transaction( @@ -330,10 +338,10 @@ async def confirm_custom_transaction( await confirm_solana_tx( amount=f"{format_amount(amount, decimals)} {unit}", fee=f"{format_amount(fee, 9)} SOL", - fee_title="Expected fee:", + fee_title=f"{TR.solana__expected_fee}:", items=( - ("Account:", _format_path(signer_path)), - ("Blockhash:", base58.encode(blockhash)), + (f"{TR.words__account}:", _format_path(signer_path)), + (f"{TR.words__blockhash}:", base58.encode(blockhash)), ), ) @@ -345,9 +353,9 @@ async def confirm_transaction( amount="", amount_title="", fee=f"{format_amount(fee, 9)} SOL", - fee_title="Expected fee:", + fee_title=f"{TR.solana__expected_fee}:", items=( - ("Account:", _format_path(signer_path)), - ("Blockhash:", base58.encode(blockhash)), + (f"{TR.words__account}:", _format_path(signer_path)), + (f"{TR.words__blockhash}:", base58.encode(blockhash)), ), ) diff --git a/core/src/apps/solana/sign_tx.py b/core/src/apps/solana/sign_tx.py index 156baa870..c1e824a23 100644 --- a/core/src/apps/solana/sign_tx.py +++ b/core/src/apps/solana/sign_tx.py @@ -18,6 +18,7 @@ async def sign_tx( msg: SolanaSignTx, keychain: Keychain, ) -> SolanaTxSignature: + from trezor import TR from trezor.crypto.curve import ed25519 from trezor.enums import ButtonRequestType from trezor.messages import SolanaTxSignature @@ -41,14 +42,17 @@ async def sign_tx( if transaction.blind_signing: await show_warning( - "warning_blind_signing", "Transaction contains unknown instructions." + "warning_blind_signing", + TR.solana__transaction_contains_unknown_instructions, ) if transaction.required_signers_count > 1: await confirm_metadata( "multiple_signers", - "Multiple signers", - f"Transaction requires {transaction.required_signers_count} signers which increases the fee.", + TR.solana__multiple_signers, + TR.solana__transaction_requires_x_signers_template.format( + transaction.required_signers_count + ), br_code=ButtonRequestType.Other, ) diff --git a/core/src/apps/stellar/layout.py b/core/src/apps/stellar/layout.py index 5ede1ff7e..78f8e8b16 100644 --- a/core/src/apps/stellar/layout.py +++ b/core/src/apps/stellar/layout.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING import trezor.ui.layouts as layouts -from trezor import strings +from trezor import TR, strings from trezor.enums import ButtonRequestType from . import consts @@ -16,9 +16,13 @@ async def require_confirm_init( network_passphrase: str, accounts_match: bool, ) -> None: - description = "Initialize signing with" + " your account" if accounts_match else "" + description = ( + TR.stellar__initialize_signing_with + TR.stellar__your_account + if accounts_match + else "" + ) await layouts.confirm_address( - "Confirm Stellar", + TR.stellar__confirm_stellar, address, description, "confirm_init", @@ -28,15 +32,15 @@ async def require_confirm_init( if network_passphrase == consts.NETWORK_PASSPHRASE_PUBLIC: network = None elif network_passphrase == consts.NETWORK_PASSPHRASE_TESTNET: - network = "testnet network" + network = TR.stellar__testnet_network else: - network = "private network" + network = TR.stellar__private_network if network: await layouts.confirm_metadata( "confirm_init_network", - "Confirm network", - "Transaction is on {}", + TR.stellar__confirm_network, + TR.stellar__on_network_template, network, ButtonRequestType.ConfirmOutput, ) @@ -45,15 +49,19 @@ async def require_confirm_init( async def require_confirm_timebounds(start: int, end: int) -> None: await layouts.confirm_properties( "confirm_timebounds", - "Confirm timebounds", + TR.stellar__confirm_timebounds, ( ( - "Valid from (UTC)", - strings.format_timestamp(start) if start > 0 else "[no restriction]", + TR.stellar__valid_from, + strings.format_timestamp(start) + if start > 0 + else TR.stellar__no_restriction, ), ( - "Valid to (UTC)", - strings.format_timestamp(end) if end > 0 else "[no restriction]", + TR.stellar__valid_to, + strings.format_timestamp(end) + if end > 0 + else TR.stellar__no_restriction, ), ), ) @@ -73,26 +81,33 @@ async def require_confirm_memo(memo_type: StellarMemoType, memo_text: str) -> No else: return await layouts.confirm_action( "confirm_memo", - "Confirm memo", - "No memo set!", - "Important: Many exchanges require a memo when depositing", + TR.stellar__confirm_memo, + TR.stellar__no_memo_set, + TR.stellar__exchanges_require_memo, br_code=ButtonRequestType.ConfirmOutput, ) await layouts.confirm_blob( "confirm_memo", - "Confirm memo", + TR.stellar__confirm_memo, memo_text, description, ) async def require_confirm_final(fee: int, num_operations: int) -> None: - op_str = strings.format_plural("{count} {plural}", num_operations, "operation") + op_str = strings.format_plural( + "{count} {plural}", num_operations, TR.plurals__transaction_of_x_operations + ) + text = ( + TR.stellar__sign_tx_count_template.format(op_str) + + " " + + TR.stellar__sign_tx_fee_template + ) await layouts.confirm_metadata( "confirm_final", - "Final confirm", - "Sign this transaction made up of " + op_str + " and pay {}\nfor fee?", + TR.stellar__final_confirm, + text, format_amount(fee), hold=True, ) diff --git a/core/src/apps/stellar/operations/layout.py b/core/src/apps/stellar/operations/layout.py index 5289ae89e..077e20bc4 100644 --- a/core/src/apps/stellar/operations/layout.py +++ b/core/src/apps/stellar/operations/layout.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING from ubinascii import hexlify +from trezor import TR from trezor.ui.layouts import ( confirm_address, confirm_amount, @@ -34,9 +35,9 @@ if TYPE_CHECKING: async def confirm_source_account(source_account: str) -> None: await confirm_address( - "Confirm operation", + TR.stellar__confirm_operation, source_account, - "Source account:", + TR.stellar__source_account, "op_source_account", ) @@ -44,19 +45,19 @@ async def confirm_source_account(source_account: str) -> None: async def confirm_allow_trust_op(op: StellarAllowTrustOp) -> None: await confirm_properties( "op_allow_trust", - "Allow trust" if op.is_authorized else "Revoke trust", + TR.stellar__allow_trust if op.is_authorized else TR.stellar__revoke_trust, ( - ("Asset", op.asset_code), - ("Trusted Account", op.trusted_account), + (TR.stellar__asset, op.asset_code), + (TR.stellar__trusted_account, op.trusted_account), ), ) async def confirm_account_merge_op(op: StellarAccountMergeOp) -> None: await confirm_address( - "Account Merge", + TR.stellar__account_merge, op.destination_account, - "All XLM will be sent to:", + TR.stellar__all_will_be_sent_to, "op_account_merge", ) @@ -64,17 +65,17 @@ async def confirm_account_merge_op(op: StellarAccountMergeOp) -> None: async def confirm_bump_sequence_op(op: StellarBumpSequenceOp) -> None: await confirm_metadata( "op_bump", - "Bump Sequence", - "Set sequence to {}?", + TR.stellar__bump_sequence, + TR.stellar__set_sequence_to_template, str(op.bump_to), ) async def confirm_change_trust_op(op: StellarChangeTrustOp) -> None: await confirm_amount( - "Delete trust" if op.limit == 0 else "Add trust", + TR.stellar__delete_trust if op.limit == 0 else TR.stellar__add_trust, format_amount(op.limit, op.asset), - "Limit:", + TR.stellar__limit, "op_change_trust", ) await confirm_asset_issuer(op.asset) @@ -83,10 +84,10 @@ async def confirm_change_trust_op(op: StellarChangeTrustOp) -> None: async def confirm_create_account_op(op: StellarCreateAccountOp) -> None: await confirm_properties( "op_create_account", - "Create Account", + TR.stellar__create_account, ( - ("Account", op.new_account), - ("Initial Balance", format_amount(op.starting_balance)), + (TR.words__account, op.new_account), + (TR.stellar__initial_balance, format_amount(op.starting_balance)), ), ) @@ -94,7 +95,11 @@ async def confirm_create_account_op(op: StellarCreateAccountOp) -> None: async def confirm_create_passive_sell_offer_op( op: StellarCreatePassiveSellOfferOp, ) -> None: - text = "Delete Passive Offer" if op.amount == 0 else "New Passive Offer" + text = ( + TR.stellar__delete_passive_offer + if op.amount == 0 + else TR.stellar__new_passive_offer + ) await _confirm_offer(text, op) @@ -110,9 +115,9 @@ async def _confirm_manage_offer_op_common( op: StellarManageBuyOfferOp | StellarManageSellOfferOp, ) -> None: if op.offer_id == 0: - text = "New Offer" + text = TR.stellar__new_offer else: - text = f"{'Delete' if op.amount == 0 else 'Update'} #{op.offer_id}" + text = f"{TR.stellar__delete if op.amount == 0 else TR.stellar__update} #{op.offer_id}" await _confirm_offer(text, op) @@ -130,10 +135,10 @@ async def _confirm_offer( selling_asset = op.selling_asset # local_cache_attribute if StellarManageBuyOfferOp.is_type_of(op): - buying = ("Buying:", format_amount(op.amount, buying_asset)) - selling = ("Selling:", format_asset(selling_asset)) + buying = (TR.stellar__buying, format_amount(op.amount, buying_asset)) + selling = (TR.stellar__selling, format_asset(selling_asset)) price = ( - f"Price per {format_asset(selling_asset)}:", + TR.stellar__price_per_template.format(format_asset(selling_asset)), str(op.price_n / op.price_d), ) await confirm_properties( @@ -142,10 +147,10 @@ async def _confirm_offer( (buying, selling, price), ) else: - selling = ("Selling:", format_amount(op.amount, selling_asset)) - buying = ("Buying:", format_asset(buying_asset)) + selling = (TR.stellar__selling, format_amount(op.amount, selling_asset)) + buying = (TR.stellar__buying, format_asset(buying_asset)) price = ( - f"Price per {format_asset(buying_asset)}:", + TR.stellar__price_per_template.format(format_asset(buying_asset)), str(op.price_n / op.price_d), ) await confirm_properties( @@ -165,14 +170,14 @@ async def confirm_manage_data_op(op: StellarManageDataOp) -> None: digest = sha256(op.value).digest() await confirm_properties( "op_data", - "Set data", - (("Key:", op.key), ("Value (SHA-256):", digest)), + TR.stellar__set_data, + ((TR.stellar__key, op.key), (TR.stellar__value_sha256, digest)), ) else: await confirm_metadata( "op_data", - "Clear data", - "Do you want to clear value key {}?", + TR.stellar__clear_data, + TR.stellar__wanna_clean_value_key_template, op.key, ) @@ -183,14 +188,14 @@ async def confirm_path_payment_strict_receive_op( await confirm_output( op.destination_account, format_amount(op.destination_amount, op.destination_asset), - title="Path Pay", + title=TR.stellar__path_pay, ) await confirm_asset_issuer(op.destination_asset) # confirm what the sender is using to pay await confirm_amount( - "Debited amount", + TR.stellar__debited_amount, format_amount(op.send_max, op.send_asset), - "Pay at most:", + TR.stellar__pay_at_most, "op_path_payment_strict_receive", ) await confirm_asset_issuer(op.send_asset) @@ -202,14 +207,14 @@ async def confirm_path_payment_strict_send_op( await confirm_output( op.destination_account, format_amount(op.destination_min, op.destination_asset), - title="Path Pay at least", + title=TR.stellar__path_pay_at_least, ) await confirm_asset_issuer(op.destination_asset) # confirm what the sender is using to pay await confirm_amount( - "Debited amount", + TR.stellar__debited_amount, format_amount(op.send_amount, op.send_asset), - "Pay:", + TR.stellar__pay, "op_path_payment_strict_send", ) await confirm_asset_issuer(op.send_asset) @@ -231,36 +236,38 @@ async def confirm_set_options_op(op: StellarSetOptionsOp) -> None: if op.inflation_destination_account: await confirm_address( - "Inflation", + TR.stellar__inflation, op.inflation_destination_account, - "Destination:", + TR.stellar__destination, "op_inflation", ) if op.clear_flags: t = _format_flags(op.clear_flags) - await confirm_text("op_set_options", "Clear flags", data=t) + await confirm_text("op_set_options", TR.stellar__clear_flags, data=t) if op.set_flags: t = _format_flags(op.set_flags) - await confirm_text("op_set_options", "Set flags", data=t) + await confirm_text("op_set_options", TR.stellar__set_flags, data=t) thresholds: list[tuple[str, str]] = [] append = thresholds.append # local_cache_attribute if op.master_weight is not None: - append(("Master Weight:", str(op.master_weight))) + append((TR.stellar__master_weight, str(op.master_weight))) if op.low_threshold is not None: - append(("Low:", str(op.low_threshold))) + append((TR.stellar__low, str(op.low_threshold))) if op.medium_threshold is not None: - append(("Medium:", str(op.medium_threshold))) + append((TR.stellar__medium, str(op.medium_threshold))) if op.high_threshold is not None: - append(("High:", str(op.high_threshold))) + append((TR.stellar__high, str(op.high_threshold))) if thresholds: - await confirm_properties("op_thresholds", "Account Thresholds", thresholds) + await confirm_properties( + "op_thresholds", TR.stellar__account_thresholds, thresholds + ) if op.home_domain: - await confirm_text("op_home_domain", "Home Domain", op.home_domain) + await confirm_text("op_home_domain", TR.stellar__home_domain, op.home_domain) signer_type = op.signer_type # local_cache_attribute signer_key = op.signer_key # local_cache_attribute @@ -269,18 +276,18 @@ async def confirm_set_options_op(op: StellarSetOptionsOp) -> None: raise DataError("Stellar: invalid signer option data.") if op.signer_weight > 0: - title = "Add Signer" + title = TR.stellar__add_signer else: - title = "Remove Signer" + title = TR.stellar__remove_signer data: str | bytes = "" if signer_type == StellarSignerType.ACCOUNT: - description = "Account:" + description = f"{TR.words__account}:" data = helpers.address_from_public_key(signer_key) elif signer_type == StellarSignerType.PRE_AUTH: - description = "Pre-auth transaction:" + description = TR.stellar__preauth_transaction data = signer_key elif signer_type == StellarSignerType.HASH: - description = "Hash:" + description = TR.stellar__hash data = signer_key else: raise ProcessError("Stellar: invalid signer type") @@ -299,8 +306,8 @@ async def confirm_claim_claimable_balance_op( balance_id = hexlify(op.balance_id).decode() await confirm_metadata( "op_claim_claimable_balance", - "Claim Claimable Balance", - "Balance ID: {}", + TR.stellar__claim_claimable_balance, + TR.stellar__balance_id + ": {}", balance_id, ) @@ -310,7 +317,7 @@ def _format_flags(flags: int) -> str: if flags > consts.FLAGS_MAX_SIZE: raise ProcessError("Stellar: invalid flags") - flags_set = [] + flags_set: list[str] = [] if flags & consts.FLAG_AUTH_REQUIRED: flags_set.append("AUTH_REQUIRED\n") if flags & consts.FLAG_AUTH_REVOCABLE: @@ -328,8 +335,8 @@ async def confirm_asset_issuer(asset: StellarAsset) -> None: if asset.issuer is None or asset.code is None: raise DataError("Stellar: invalid asset definition") await confirm_address( - "Confirm Issuer", + TR.stellar__confirm_issuer, asset.issuer, - f"{asset.code} issuer:", + TR.stellar__issuer_template.format(asset.code), "confirm_asset_issuer", ) diff --git a/core/src/apps/tezos/layout.py b/core/src/apps/tezos/layout.py index 78f7e2aee..4a8d11e2c 100644 --- a/core/src/apps/tezos/layout.py +++ b/core/src/apps/tezos/layout.py @@ -1,3 +1,4 @@ +from trezor import TR from trezor.enums import ButtonRequestType from trezor.ui.layouts import confirm_address, confirm_metadata, confirm_properties @@ -21,15 +22,15 @@ async def require_confirm_fee(value: int, fee: int) -> None: await confirm_total( format_tezos_amount(value), format_tezos_amount(fee), - total_label="Amount:", + total_label=f"{TR.words__amount}:", ) async def require_confirm_origination(address: str) -> None: await confirm_address( - "Confirm origination", + TR.tezos__confirm_origination, address, - "Address:", + f"{TR.words__address}:", "confirm_origination", BR_SIGN_TX, ) @@ -38,10 +39,10 @@ async def require_confirm_origination(address: str) -> None: async def require_confirm_origination_fee(balance: int, fee: int) -> None: await confirm_properties( "confirm_origination_final", - "Confirm origination", + TR.tezos__confirm_origination, ( - ("Balance:", format_tezos_amount(balance)), - ("Fee:", format_tezos_amount(fee)), + (TR.tezos__balance, format_tezos_amount(balance)), + (f"{TR.words__fee}:", format_tezos_amount(fee)), ), hold=True, ) @@ -49,9 +50,9 @@ async def require_confirm_origination_fee(balance: int, fee: int) -> None: async def require_confirm_delegation_baker(baker: str) -> None: await confirm_address( - "Confirm delegation", + TR.tezos__confirm_delegation, baker, - "Baker address:", + TR.tezos__baker_address, "confirm_delegation", BR_SIGN_TX, ) @@ -60,8 +61,8 @@ async def require_confirm_delegation_baker(baker: str) -> None: async def require_confirm_set_delegate(fee: int) -> None: await confirm_metadata( "confirm_delegation_final", - "Confirm delegation", - "Fee:\n{}", + TR.tezos__confirm_delegation, + f"{TR.words__fee}:" + "\n{}", format_tezos_amount(fee), BR_SIGN_TX, hold=True, @@ -71,10 +72,10 @@ async def require_confirm_set_delegate(fee: int) -> None: async def require_confirm_register_delegate(address: str, fee: int) -> None: await confirm_properties( "confirm_register_delegate", - "Register delegate", + TR.tezos__register_delegate, ( - ("Fee:", format_tezos_amount(fee)), - ("Address:", address), + (f"{TR.words__fee}:", format_tezos_amount(fee)), + (f"{TR.words__address}:", address), ), hold=True, br_code=BR_SIGN_TX, @@ -93,10 +94,10 @@ def format_tezos_amount(value: int) -> str: async def require_confirm_ballot(proposal: str, ballot: str) -> None: await confirm_properties( "confirm_ballot", - "Submit ballot", + TR.tezos__submit_ballot, ( - ("Ballot:", ballot), - ("Proposal:", proposal), + (TR.tezos__ballot, ballot), + (f"{TR.tezos__proposal}:", proposal), ), hold=True, br_code=BR_SIGN_TX, @@ -106,8 +107,11 @@ async def require_confirm_ballot(proposal: str, ballot: str) -> None: async def require_confirm_proposals(proposals: list[str]) -> None: await confirm_properties( "confirm_proposals", - "Submit proposals" if len(proposals) > 1 else "Submit proposal", - [("Proposal " + str(i), proposal) for i, proposal in enumerate(proposals, 1)], + TR.tezos__submit_proposals if len(proposals) > 1 else TR.tezos__submit_proposal, + [ + (f"{TR.tezos__proposal} " + str(i), proposal) + for i, proposal in enumerate(proposals, 1) + ], hold=True, br_code=BR_SIGN_TX, ) @@ -115,9 +119,9 @@ async def require_confirm_proposals(proposals: list[str]) -> None: async def require_confirm_delegation_manager_withdraw(address: str) -> None: await confirm_address( - "Remove delegation", + TR.tezos__remove_delegation, address, - "Delegator:", + TR.tezos__delegator, "confirm_undelegation", BR_SIGN_TX, ) @@ -126,8 +130,8 @@ async def require_confirm_delegation_manager_withdraw(address: str) -> None: async def require_confirm_manager_remove_delegate(fee: int) -> None: await confirm_metadata( "confirm_undelegation_final", - "Remove delegation", - "Fee:\n{}", + TR.tezos__remove_delegation, + f"{TR.words__fee}:" + "\n{}", format_tezos_amount(fee), BR_SIGN_TX, hold=True, diff --git a/core/src/apps/webauthn/add_resident_credential.py b/core/src/apps/webauthn/add_resident_credential.py index 10d15340c..c61e86998 100644 --- a/core/src/apps/webauthn/add_resident_credential.py +++ b/core/src/apps/webauthn/add_resident_credential.py @@ -6,7 +6,7 @@ if TYPE_CHECKING: async def add_resident_credential(msg: WebAuthnAddResidentCredential) -> Success: import storage.device as storage_device - from trezor import wire + from trezor import TR, wire from trezor.messages import Success from trezor.ui.layouts import show_error_and_raise from trezor.ui.layouts.fido import confirm_fido @@ -24,11 +24,11 @@ async def add_resident_credential(msg: WebAuthnAddResidentCredential) -> Success except Exception: await show_error_and_raise( "warning_credential", - "The credential you are trying to import does\nnot belong to this authenticator.", + TR.fido__does_not_belong, ) await confirm_fido( - "Import credential", + TR.fido__title_import_credential, cred.app_name(), cred.icon_name(), [cred.account_name()], diff --git a/core/src/apps/webauthn/fido2.py b/core/src/apps/webauthn/fido2.py index ad9cc555b..8ecefbe16 100644 --- a/core/src/apps/webauthn/fido2.py +++ b/core/src/apps/webauthn/fido2.py @@ -5,7 +5,7 @@ from micropython import const from typing import TYPE_CHECKING import storage.device as storage_device -from trezor import config, io, log, loop, utils, wire, workflow +from trezor import TR, config, io, log, loop, utils, wire, workflow from trezor.crypto import hashlib from trezor.crypto.curve import nist256p1 from trezor.ui.layouts import show_error_popup @@ -616,15 +616,15 @@ async def _confirm_bogus_app(title: str) -> None: if _last_auth_valid: await show_error_popup( title, - "This device is already registered with this application.", - "Already registered.", + TR.fido__device_already_registered, + TR.fido__already_registered, timeout_ms=_POPUP_TIMEOUT_MS, ) else: await show_error_popup( title, - "This device is not registered with this application.", - "Not registered.", + TR.fido__device_not_registered, + TR.fido__not_registered, timeout_ms=_POPUP_TIMEOUT_MS, ) @@ -684,7 +684,7 @@ class U2fConfirmRegister(U2fState): await _confirm_bogus_app("U2F") return False else: - return await _confirm_fido("U2F Register", self._cred) + return await _confirm_fido(TR.fido__title_u2f_register, self._cred) def __eq__(self, other: object) -> bool: return ( @@ -694,7 +694,7 @@ class U2fConfirmRegister(U2fState): class U2fConfirmAuthenticate(U2fState): async def confirm_dialog(self) -> bool: - return await _confirm_fido("U2F Authenticate", self._cred) + return await _confirm_fido(TR.fido__title_u2f_auth, self._cred) def __eq__(self, other: object) -> bool: return ( @@ -803,7 +803,7 @@ class Fido2ConfirmMakeCredential(Fido2State): if self._cred.rp_id == _BOGUS_RP_ID: await _confirm_bogus_app("FIDO2") return True - if not await _confirm_fido("FIDO2 Register", self._cred): + if not await _confirm_fido(TR.fido__title_register, self._cred): return False if self._user_verification: return await verify_user(KeepaliveCallback(self.cid, self.iface)) @@ -839,9 +839,9 @@ class Fido2ConfirmExcluded(Fido2ConfirmMakeCredential): self.finished = True await show_error_popup( - "FIDO2 Register", - "This device is already registered with {}.", - "Already registered.", + TR.fido__title_register, + TR.fido__device_already_registered_with_template, + TR.fido__already_registered, self._cred.rp_id, # description_param timeout_ms=_POPUP_TIMEOUT_MS, ) @@ -869,7 +869,7 @@ class Fido2ConfirmGetAssertion(Fido2State): async def confirm_dialog(self) -> bool: # There is a choice from more than one credential. try: - index = await _confirm_fido_choose("FIDO2 Authenticate", self._creds) + index = await _confirm_fido_choose(TR.fido__title_authenticate, self._creds) except wire.ActionCancelled: return False @@ -922,9 +922,9 @@ class Fido2ConfirmNoPin(State): self.finished = True await show_error_popup( - "FIDO2 Verify User", - "Please enable PIN protection.", - "Unable to verify user.", + TR.fido__title_verify_user, + TR.fido__please_enable_pin_protection, + TR.fido__unable_to_verify_user, timeout_ms=_POPUP_TIMEOUT_MS, ) return False @@ -945,9 +945,9 @@ class Fido2ConfirmNoCredentials(Fido2ConfirmGetAssertion): self.finished = True await show_error_popup( - "FIDO2 Authenticate", - "This device is not registered with\n{}.", - "Not registered.", + TR.fido__title_authenticate, + TR.fido__not_registered_with_template, + TR.fido__not_registered, self._creds[0].app_name(), # description_param timeout_ms=_POPUP_TIMEOUT_MS, ) diff --git a/core/src/apps/webauthn/list_resident_credentials.py b/core/src/apps/webauthn/list_resident_credentials.py index d39fd14a8..0c5e92dbe 100644 --- a/core/src/apps/webauthn/list_resident_credentials.py +++ b/core/src/apps/webauthn/list_resident_credentials.py @@ -7,6 +7,7 @@ if TYPE_CHECKING: async def list_resident_credentials( msg: WebAuthnListResidentCredentials, ) -> WebAuthnCredentials: + from trezor import TR from trezor.messages import WebAuthnCredential, WebAuthnCredentials from trezor.ui.layouts import confirm_action @@ -14,9 +15,9 @@ async def list_resident_credentials( await confirm_action( "credentials_list", - "List credentials", - description="Export information about the credentials stored on this device?", - verb="EXPORT", + TR.fido__title_list_credentials, + description=TR.fido__export_credentials, + verb=TR.buttons__export, ) creds = [ WebAuthnCredential( diff --git a/core/src/apps/webauthn/remove_resident_credential.py b/core/src/apps/webauthn/remove_resident_credential.py index 6c0655cbe..efe07ca67 100644 --- a/core/src/apps/webauthn/remove_resident_credential.py +++ b/core/src/apps/webauthn/remove_resident_credential.py @@ -7,7 +7,7 @@ if TYPE_CHECKING: async def remove_resident_credential(msg: WebAuthnRemoveResidentCredential) -> Success: import storage.device import storage.resident_credentials - from trezor import wire + from trezor import TR, wire from trezor.messages import Success from trezor.ui.layouts.fido import confirm_fido @@ -23,7 +23,7 @@ async def remove_resident_credential(msg: WebAuthnRemoveResidentCredential) -> S raise wire.ProcessError("Invalid credential index.") await confirm_fido( - "Remove credential", + TR.fido__title_remove_credential, cred.app_name(), cred.icon_name(), [cred.account_name()], diff --git a/core/src/apps/workflow_handlers.py b/core/src/apps/workflow_handlers.py index 8b373c4c4..d8d320098 100644 --- a/core/src/apps/workflow_handlers.py +++ b/core/src/apps/workflow_handlers.py @@ -42,6 +42,8 @@ def _find_message_handler_module(msg_type: int) -> str: return "apps.management.recovery_device" if msg_type == MessageType.ApplySettings: return "apps.management.apply_settings" + if msg_type == MessageType.ChangeLanguage: + return "apps.management.change_language" if msg_type == MessageType.ApplyFlags: return "apps.management.apply_flags" if msg_type == MessageType.ChangePin: diff --git a/core/src/boot.py b/core/src/boot.py index 8823a6663..ac89d8e2f 100644 --- a/core/src/boot.py +++ b/core/src/boot.py @@ -10,7 +10,7 @@ welcome_screen_start_ms = utime.ticks_ms() import storage import storage.device -from trezor import config, log, loop, ui, utils, wire +from trezor import config, log, loop, ui, utils, wire, translations from trezor.pin import ( allow_all_loader_messages, ignore_nonpin_loader_messages, @@ -82,6 +82,7 @@ async def bootscreen() -> None: ignore_nonpin_loader_messages() config.init(show_pin_timeout) +translations.init() if __debug__ and not utils.EMULATOR: config.wipe() diff --git a/core/src/trezor/__init__.py b/core/src/trezor/__init__.py index 80c7ec815..3fab1c843 100644 --- a/core/src/trezor/__init__.py +++ b/core/src/trezor/__init__.py @@ -1,2 +1,6 @@ import trezorconfig as config # noqa: F401 import trezorio as io # noqa: F401 + +import trezortranslate as translations # noqa: F401 + +TR = translations.TR diff --git a/core/src/trezor/enums/MessageType.py b/core/src/trezor/enums/MessageType.py index 5c210d0a1..6b67595b4 100644 --- a/core/src/trezor/enums/MessageType.py +++ b/core/src/trezor/enums/MessageType.py @@ -50,6 +50,9 @@ ShowDeviceTutorial = 95 UnlockBootloader = 96 AuthenticateDevice = 97 AuthenticityProof = 98 +ChangeLanguage = 990 +TranslationDataRequest = 991 +TranslationDataAck = 992 FirmwareErase = 6 FirmwareUpload = 7 FirmwareRequest = 8 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index 93daa4533..bf45a7540 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -67,6 +67,9 @@ if TYPE_CHECKING: UnlockBootloader = 96 AuthenticateDevice = 97 AuthenticityProof = 98 + ChangeLanguage = 990 + TranslationDataRequest = 991 + TranslationDataAck = 992 SetU2FCounter = 63 GetNextU2FCounter = 80 NextU2FCounter = 81 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index e8aabef61..6de883bf7 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -2249,6 +2249,52 @@ if TYPE_CHECKING: def is_type_of(cls, msg: Any) -> TypeGuard["ApplySettings"]: return isinstance(msg, cls) + class ChangeLanguage(protobuf.MessageType): + data_length: "int" + show_display: "bool | None" + + def __init__( + self, + *, + data_length: "int", + show_display: "bool | None" = None, + ) -> None: + pass + + @classmethod + def is_type_of(cls, msg: Any) -> TypeGuard["ChangeLanguage"]: + return isinstance(msg, cls) + + class TranslationDataRequest(protobuf.MessageType): + data_length: "int" + data_offset: "int" + + def __init__( + self, + *, + data_length: "int", + data_offset: "int", + ) -> None: + pass + + @classmethod + def is_type_of(cls, msg: Any) -> TypeGuard["TranslationDataRequest"]: + return isinstance(msg, cls) + + class TranslationDataAck(protobuf.MessageType): + data_chunk: "bytes" + + def __init__( + self, + *, + data_chunk: "bytes", + ) -> None: + pass + + @classmethod + def is_type_of(cls, msg: Any) -> TypeGuard["TranslationDataAck"]: + return isinstance(msg, cls) + class ApplyFlags(protobuf.MessageType): flags: "int" @@ -2620,12 +2666,14 @@ if TYPE_CHECKING: class RebootToBootloader(protobuf.MessageType): boot_command: "BootCommand" firmware_header: "bytes | None" + language_data_length: "int" def __init__( self, *, boot_command: "BootCommand | None" = None, firmware_header: "bytes | None" = None, + language_data_length: "int | None" = None, ) -> None: pass diff --git a/core/src/trezor/pin.py b/core/src/trezor/pin.py index 98e3e8ed7..918fe09be 100644 --- a/core/src/trezor/pin.py +++ b/core/src/trezor/pin.py @@ -16,6 +16,7 @@ _ignore_loader_messages: tuple[str, ...] = () def ignore_nonpin_loader_messages() -> None: global _ignore_loader_messages + # TODO: handle translation of those (in C) _ignore_loader_messages = ("Processing", "Starting up") @@ -38,6 +39,7 @@ def render_empty_loader(message: str, description: str) -> None: def show_pin_timeout(seconds: int, progress: int, message: str) -> bool: + from trezor import TR from trezor.ui.layouts.progress import pin_progress # Possibility to ignore certain messages - not showing loader for them @@ -57,11 +59,12 @@ def show_pin_timeout(seconds: int, progress: int, message: str) -> bool: if seconds != _previous_seconds: if seconds == 0: - remaining = "Done" + remaining = TR.progress__done elif seconds == 1: - remaining = "1 second left" + remaining = TR.progress__one_second_left else: - remaining = f"{seconds} seconds left" + # TODO: make this a plural + remaining = TR.progress__x_seconds_left_template.format(seconds) _previous_remaining = remaining _previous_seconds = seconds else: diff --git a/core/src/trezor/strings.py b/core/src/trezor/strings.py index c26414c5b..5f833b46e 100644 --- a/core/src/trezor/strings.py +++ b/core/src/trezor/strings.py @@ -27,17 +27,17 @@ def format_ordinal(number: int) -> str: ) -def format_plural(string: str, count: int, plural: str) -> str: +def format_plural_english(string: str, count: int, plural: str) -> str: """ Adds plural form to a string based on `count`. !! Does not work with irregular words !! Example: - >>> format_plural("We need {count} more {plural}", 3, "share") + >>> format_plural_english("We need {count} more {plural}", 3, "share") 'We need 3 more shares' - >>> format_plural("We need {count} more {plural}", 1, "share") + >>> format_plural_english("We need {count} more {plural}", 1, "share") 'We need 1 more share' - >>> format_plural("{count} {plural}", 4, "candy") + >>> format_plural_english("{count} {plural}", 4, "candy") '4 candies' """ if not all(s in string for s in ("{count}", "{plural}")): @@ -56,20 +56,49 @@ def format_plural(string: str, count: int, plural: str) -> str: return string.format(count=count, plural=plural) -def format_duration_ms(milliseconds: int) -> str: +def format_plural(string: str, count: int, plurals: str) -> str: + """ + Adds plural form to a string based on `count`. + """ + if not all(s in string for s in ("{count}", "{plural}")): + # string needs to have {count} and {plural} inside + raise ValueError + + plural_options = plurals.split("|") + if len(plural_options) not in (2, 3): + # plurals need to have 2 or 3 options + raise ValueError + + # First one is for singular, last one is for MANY (or zero) + if count == 1: + plural = plural_options[0] + else: + plural = plural_options[-1] + + # In case there are three options, the middle one is for FEW (2-4) + if len(plural_options) == 3: + # TODO: this is valid for czech - are there some other languages that have it differently? + # In that case we need to add language-specific rules + if 1 < count < 5: + plural = plural_options[1] + + return string.format(count=count, plural=plural) + + +def format_duration_ms(milliseconds: int, unit_plurals: dict[str, str]) -> str: """ Returns human-friendly representation of a duration. Truncates all decimals. """ - units = ( - ("hour", 60 * 60 * 1000), - ("minute", 60 * 1000), - ("second", 1000), + units: tuple[tuple[str, int], ...] = ( + (unit_plurals["hour"], 60 * 60 * 1000), + (unit_plurals["minute"], 60 * 1000), + (unit_plurals["second"], 1000), ) for unit, divisor in units: if milliseconds >= divisor: break else: - unit = "millisecond" + unit = unit_plurals["millisecond"] divisor = 1 return format_plural("{count} {plural}", milliseconds // divisor, unit) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index fa4ccb2aa..c42996683 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING import trezorui2 -from trezor import io, loop, ui +from trezor import TR, io, loop, ui from trezor.enums import ButtonRequestType from trezor.wire import ActionCancelled from trezor.wire.context import wait as ctx_wait @@ -263,11 +263,12 @@ async def _placeholder_confirm( data: str | None = None, description: str | None = None, *, - verb: str = "CONFIRM", + verb: str | None = None, verb_cancel: str | None = "", hold: bool = False, br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> Any: + verb = verb or TR.buttons__confirm # def_arg return await confirm_action( br_type, title.upper(), @@ -286,11 +287,12 @@ async def get_bool( title: str, data: str | None = None, description: str | None = None, - verb: str = "CONFIRM", + verb: str | None = None, verb_cancel: str | None = "", hold: bool = False, br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> bool: + verb = verb or TR.buttons__confirm # def_arg result = await interact( RustLayout( trezorui2.confirm_action( @@ -322,7 +324,7 @@ async def confirm_action( action: str | None = None, description: str | None = None, description_param: str | None = None, - verb: str = "CONFIRM", + verb: str | None = None, verb_cancel: str | None = "", hold: bool = False, hold_danger: bool = False, @@ -330,6 +332,7 @@ async def confirm_action( exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> None: + verb = verb or TR.buttons__confirm # def_arg if verb_cancel is not None: verb_cancel = verb_cancel.upper() @@ -369,7 +372,7 @@ async def confirm_single( br_type, title, description=begin + description_param + end, - verb=verb or "CONFIRM", + verb=verb or TR.buttons__confirm, br_code=ButtonRequestType.ProtectCall, ) @@ -379,9 +382,9 @@ async def confirm_reset_device( recovery: bool = False, ) -> None: if recovery: - button = "RECOVER WALLET" + button = TR.reset__button_recover else: - button = "CREATE WALLET" + button = TR.reset__button_create await raise_if_not_confirmed( interact( @@ -392,9 +395,11 @@ async def confirm_reset_device( ) ), "recover_device" if recovery else "setup_device", - ButtonRequestType.ProtectCall - if recovery - else ButtonRequestType.ResetDevice, + ( + ButtonRequestType.ProtectCall + if recovery + else ButtonRequestType.ResetDevice + ), ) ) @@ -413,10 +418,10 @@ async def prompt_backup() -> bool: return await get_bool( br_type, - "SKIP BACKUP", - description="Are you sure you want to skip the backup?", - verb="BACK UP", - verb_cancel="SKIP", + TR.backup__title_skip, + description=TR.backup__want_to_skip, + verb=TR.buttons__back_up, + verb_cancel=TR.buttons__skip, br_code=br_code, ) @@ -425,10 +430,7 @@ async def confirm_path_warning( path: str, path_type: str | None = None, ) -> None: - if path_type: - title = f"Unknown {path_type}" - else: - title = "Unknown path" + title = f"{TR.words__unknown} {path_type if path_type else 'path'}" return await _placeholder_confirm( "path_warning", title.upper(), @@ -444,7 +446,7 @@ async def confirm_homescreen( interact( RustLayout( trezorui2.confirm_homescreen( - title="CHANGE HOMESCREEN?", + title=TR.homescreen__title_set, image=image, ) ), @@ -465,19 +467,18 @@ async def show_address( network: str | None = None, multisig_index: int | None = None, xpubs: Sequence[str] = (), - mismatch_title: str = "ADDRESS MISMATCH?", + mismatch_title: str | None = None, br_type: str = "show_address", br_code: ButtonRequestType = ButtonRequestType.Address, chunkify: bool = False, ) -> None: + mismatch_title = mismatch_title or TR.addr_mismatch__mismatch # def_arg send_button_request = True if title is None: # Will be a marquee in case of multisig - title = ( - "RECEIVE ADDRESS (MULTISIG)" - if multisig_index is not None - else "RECEIVE ADDRESS" - ) + title = TR.address__title_receive_address + if multisig_index is not None: + title = f"{title} (MULTISIG)" while True: layout = RustLayout( trezorui2.confirm_address( @@ -508,7 +509,11 @@ async def show_address( def xpub_title(i: int) -> str: # Will be marquee (cannot fit one line) result = f"MULTISIG XPUB #{i + 1}" - result += " (YOURS)" if i == multisig_index else " (COSIGNER)" + result += ( + f" ({TR.address__title_yours})" + if i == multisig_index + else f" ({TR.address__title_cosigner})" + ) return result result = await ctx_wait( @@ -540,13 +545,15 @@ async def show_address( def show_pubkey( pubkey: str, - title: str = "Public key", + title: str | None = None, *, account: str | None = None, path: str | None = None, - mismatch_title: str = "KEY MISMATCH?", - br_type="show_pubkey", + mismatch_title: str | None = None, + br_type: str = "show_pubkey", ) -> Awaitable[None]: + title = title or TR.address__public_key # def_arg + mismatch_title = mismatch_title or TR.addr_mismatch__key_mismatch # def_arg return show_address( address=pubkey, title=title.upper(), @@ -585,9 +592,10 @@ async def show_error_and_raise( br_type: str, content: str, subheader: str | None = None, - button: str = "TRY AGAIN", + button: str | None = None, exc: ExceptionType = ActionCancelled, ) -> NoReturn: + button = button or TR.buttons__try_again # def_arg await show_warning( br_type, subheader or "", @@ -602,9 +610,20 @@ async def show_warning( br_type: str, content: str, subheader: str | None = None, - button: str = "CONTINUE", + button: str | None = None, br_code: ButtonRequestType = ButtonRequestType.Warning, ) -> None: + from trezor import translations + + button = button or TR.buttons__continue # def_arg + + # Putting there a delimiter line in case of english, so it looks better + # (we know it will fit one page) + # TODO: figure out some better and non-intrusive way to do this + # (check if the content fits one page with the newline, and if not, do not add it) + if content and subheader and translations.get_language() == "en-US": + content = content + "\n" + await interact( RustLayout( trezorui2.show_warning( # type: ignore [Argument missing for parameter "title"] @@ -622,9 +641,10 @@ def show_success( br_type: str, content: str, subheader: str | None = None, - button: str = "Continue", + button: str | None = None, ) -> Awaitable[None]: - title = "Success" + button = button or TR.buttons__continue # def_arg + title = TR.words__title_success # In case only subheader is supplied, showing it # in regular font, not bold. @@ -634,7 +654,7 @@ def show_success( # Special case for Shamir backup - to show everything just on one page # in regular font. - if "Continue with" in content: + if TR.words__continue_with in content: content = f"{subheader}\n\n{content}" subheader = None title = "" @@ -653,17 +673,20 @@ def show_success( async def confirm_output( address: str, amount: str, - title: str = "Confirm sending", + title: str | None = None, hold: bool = False, br_code: ButtonRequestType = ButtonRequestType.ConfirmOutput, address_label: str | None = None, output_index: int | None = None, chunkify: bool = False, ) -> None: - address_title = ( - "RECIPIENT" if output_index is None else f"RECIPIENT #{output_index + 1}" - ) - amount_title = "AMOUNT" if output_index is None else f"AMOUNT #{output_index + 1}" + title = title or TR.send__confirm_sending # def_arg + address_title = TR.words__recipient + if output_index is not None: + address_title += f" #{output_index + 1}" + amount_title = TR.words__amount + if output_index is not None: + amount_title += f" #{output_index + 1}" while True: result = await interact( @@ -671,7 +694,7 @@ async def confirm_output( trezorui2.confirm_output_address( address=address, address_label=address_label or "", - address_title=address_title, + address_title=address_title.upper(), chunkify=chunkify, ) ), @@ -684,7 +707,7 @@ async def confirm_output( result = await interact( RustLayout( trezorui2.confirm_output_amount( - amount_title=amount_title, + amount_title=amount_title.upper(), amount=amount, ) ), @@ -716,7 +739,7 @@ async def confirm_payment_request( memos_str = "\n".join(memos) return await _placeholder_confirm( "confirm_payment_request", - "CONFIRM SENDING", + TR.send__title_confirm_sending, description=f"{amount} to\n{recipient_name}\n{memos_str}", br_code=ButtonRequestType.ConfirmOutput, ) @@ -725,7 +748,7 @@ async def confirm_payment_request( async def should_show_more( title: str, para: Iterable[tuple[int, str]], - button_text: str = "Show all", + button_text: str | None = None, br_type: str = "should_show_more", br_code: ButtonRequestType = BR_TYPE_OTHER, confirm: str | bytes | None = None, @@ -736,8 +759,9 @@ async def should_show_more( Raises ActionCancelled if the user cancels. """ + button_text = button_text or TR.buttons__show_all # def_arg if confirm is None or not isinstance(confirm, str): - confirm = "CONFIRM" + confirm = TR.buttons__confirm result = await interact( RustLayout( @@ -766,14 +790,15 @@ async def confirm_blob( br_type: str, title: str, data: bytes | str, - description: str = "", - verb: str = "CONFIRM", + description: str | None = None, + verb: str | None = None, verb_cancel: str | None = "", # icon hold: bool = False, br_code: ButtonRequestType = BR_TYPE_OTHER, ask_pagination: bool = False, chunkify: bool = False, ) -> None: + verb = verb or TR.buttons__confirm # def_arg title = title.upper() layout = RustLayout( trezorui2.confirm_blob( @@ -791,7 +816,7 @@ async def confirm_blob( if ask_pagination and layout.page_count() > 1: assert not hold await _confirm_ask_pagination( - br_type, title, data, description, verb_cancel, br_code + br_type, title, data, description or "", verb_cancel, br_code ) else: @@ -832,7 +857,7 @@ async def _confirm_ask_pagination( paginated = RustLayout( trezorui2.confirm_more( title=title, - button="GO BACK", + button=TR.buttons__go_back, items=[(ui.BOLD, f"Size: {len(data)} bytes"), (ui.MONO, data)], ) ) @@ -848,7 +873,7 @@ async def _confirm_ask_pagination( def confirm_address( title: str, address: str, - description: str = "Address:", + description: str | None = None, br_type: str = "confirm_address", br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> Awaitable[None]: @@ -880,10 +905,11 @@ async def confirm_text( def confirm_amount( title: str, amount: str, - description: str = "Amount:", + description: str | None = None, br_type: str = "confirm_amount", br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> Awaitable[None]: + description = description or f"{TR.words__amount}:" # def_arg return confirm_blob( br_type, title.upper(), @@ -953,7 +979,7 @@ async def confirm_value( title=title.upper(), description=description, value=value, - verb=verb or "HOLD TO CONFIRM", + verb=verb or TR.buttons__hold_to_confirm, hold=hold, ) ), @@ -972,8 +998,8 @@ async def confirm_value( trezorui2.confirm_with_info( title=title.upper(), items=((ui.NORMAL, value),), - button="CONFIRM", - info_button="INFO", + button=TR.buttons__confirm, + info_button=TR.buttons__info, ) ) @@ -997,7 +1023,7 @@ async def confirm_value( title=info_title.upper(), action=info_value, description=description, - verb="BACK", + verb=TR.buttons__back, verb_cancel="<", hold=False, reverse=False, @@ -1013,13 +1039,15 @@ async def confirm_total( total_amount: str, fee_amount: str, fee_rate_amount: str | None = None, - title: str = "SENDING", - total_label: str = "Total amount:", - fee_label: str = "Including fee:", + title: str | None = None, + total_label: str | None = None, + fee_label: str | None = None, account_label: str | None = None, br_type: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> None: + total_label = total_label or TR.send__total_amount # def_arg + fee_label = fee_label or TR.send__including_fee # def_arg await raise_if_not_confirmed( interact( RustLayout( @@ -1043,11 +1071,15 @@ async def confirm_solana_tx( amount: str, fee: str, items: Iterable[tuple[str, str]], - amount_title="Amount:", - fee_title="Fee", + amount_title: str | None = None, + fee_title: str | None = None, br_type: str = "confirm_solana_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, ): + amount_title = ( + amount_title if amount_title is not None else f"{TR.words__amount}:" + ) # def_arg + fee_title = fee_title or TR.words__fee # def_arg await raise_if_not_confirmed( interact( RustLayout( @@ -1077,9 +1109,9 @@ async def confirm_ethereum_tx( ) -> None: summary_layout = RustLayout( trezorui2.altcoin_tx_summary( - amount_title="Amount:", + amount_title=f"{TR.words__amount}:", amount_value=total_amount, - fee_title="Maximum fee:", + fee_title=TR.send__maximum_fee, fee_value=maximum_fee, items=items, ) @@ -1089,9 +1121,9 @@ async def confirm_ethereum_tx( # Allowing going back and forth between recipient and summary/details await confirm_blob( br_type, - "RECIPIENT", + TR.words__recipient, recipient, - verb="CONTINUE", + verb=TR.buttons__continue, chunkify=chunkify, ) @@ -1145,10 +1177,10 @@ async def confirm_replacement(description: str, txid: str) -> None: await confirm_value( description.upper(), txid, - "Transaction ID:", + TR.send__transaction_id, "confirm_replacement", ButtonRequestType.SignTx, - verb="CONTINUE", + verb=TR.buttons__continue, ) @@ -1160,11 +1192,11 @@ async def confirm_modify_output( ) -> None: address_layout = RustLayout( trezorui2.confirm_blob( - title="MODIFY AMOUNT", + title=TR.modify_amount__title, data=address, - verb="CONTINUE", + verb=TR.buttons__continue, verb_cancel=None, - description="Address:", + description=f"{TR.words__address}:", extra=None, ) ) @@ -1251,7 +1283,7 @@ async def confirm_sign_identity( await _placeholder_confirm( "confirm_sign_identity", - f"Sign {proto}".upper(), + f"{TR.words__sign} {proto}".upper(), text, br_code=BR_TYPE_OTHER, ) @@ -1271,16 +1303,16 @@ async def confirm_signverify( while True: await confirm_blob( br_type, - "SIGNING ADDRESS", + TR.sign_message__confirm_address, address, - verb="CONTINUE", + verb=TR.buttons__continue, br_code=BR_TYPE_OTHER, ) try: await confirm_blob( br_type, - "CONFIRM MESSAGE", + TR.sign_message__confirm_message, message, verb_cancel="^", br_code=BR_TYPE_OTHER, @@ -1319,11 +1351,15 @@ def request_passphrase_on_host() -> None: draw_simple(trezorui2.show_passphrase()) +def show_wait_text(message: str) -> None: + draw_simple(trezorui2.show_wait_text(message)) + + async def request_passphrase_on_device(max_len: int) -> str: result = await interact( RustLayout( trezorui2.request_passphrase( - prompt="ENTER PASSPHRASE", + prompt=TR.passphrase__title_enter, max_len=max_len, ) ), @@ -1350,9 +1386,9 @@ async def request_pin_on_device( if attempts_remaining is None or attempts_remaining == 16: subprompt = "" elif attempts_remaining == 1: - subprompt = "Last attempt" + subprompt = TR.pin__last_attempt else: - subprompt = f"{attempts_remaining} tries left" + subprompt = f"{attempts_remaining} {TR.pin__tries_left}" result = await interact( RustLayout( @@ -1377,19 +1413,21 @@ async def confirm_reenter_pin( is_wipe_code: bool = False, ) -> None: br_type = "reenter_wipe_code" if is_wipe_code else "reenter_pin" - title = "CHECK WIPE CODE" if is_wipe_code else "CHECK PIN" - description = "wipe code" if is_wipe_code else "PIN" + title = TR.wipe_code__title_check if is_wipe_code else TR.pin__title_check_pin + description = ( + TR.wipe_code__reenter_to_confirm if is_wipe_code else TR.pin__reenter_to_confirm + ) return await confirm_action( br_type, title, - description=f"Please re-enter {description} to confirm.", - verb="CONTINUE", + description=description, + verb=TR.buttons__continue, verb_cancel=None, br_code=BR_TYPE_OTHER, ) -async def confirm_multiple_pages_texts( +async def _confirm_multiple_pages_texts( br_type: str, title: str, items: list[str], @@ -1414,13 +1452,13 @@ async def confirm_multiple_pages_texts( async def pin_mismatch_popup( is_wipe_code: bool = False, ) -> None: - description = "wipe codes" if is_wipe_code else "PINs" + description = TR.wipe_code__mismatch if is_wipe_code else TR.pin__mismatch br_code = "wipe_code_mismatch" if is_wipe_code else "pin_mismatch" return await show_warning( br_code, - f"Entered {description} do not match!", - "Please check again.", - "CHECK AGAIN", + description, + TR.pin__please_check_again, + TR.buttons__check_again, BR_TYPE_OTHER, ) @@ -1428,9 +1466,9 @@ async def pin_mismatch_popup( async def wipe_code_same_as_pin_popup() -> None: return await confirm_action( "wipe_code_same_as_pin", - "INVALID WIPE CODE", - description="The wipe code must be different from your PIN.\nPlease try again.", - verb="TRY AGAIN", + TR.wipe_code__title_invalid, + description=TR.wipe_code__diff_from_pin, + verb=TR.buttons__try_again, verb_cancel=None, br_code=BR_TYPE_OTHER, ) @@ -1443,12 +1481,11 @@ async def confirm_set_new_pin( information: str, br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> None: - question = f"Turn on {description} protection?" - await confirm_multiple_pages_texts( + await _confirm_multiple_pages_texts( br_type, title.upper(), - [question, information], - "TURN ON", + [description, information], + TR.buttons__turn_on, br_code, ) @@ -1458,14 +1495,14 @@ async def confirm_set_new_pin( # Additional information for the user to know about PIN next_info = [ - "PIN should be 4-50 digits long.", - "Position of the cursor will change between entries for enhanced security.", + TR.pin__should_be_long, + TR.pin__cursor_will_change, ] - await confirm_multiple_pages_texts( + await _confirm_multiple_pages_texts( br_type, title.upper(), next_info, - "CONTINUE", + TR.buttons__continue, br_code, ) diff --git a/core/src/trezor/ui/layouts/tr/fido.py b/core/src/trezor/ui/layouts/tr/fido.py index 17b66032b..896b00594 100644 --- a/core/src/trezor/ui/layouts/tr/fido.py +++ b/core/src/trezor/ui/layouts/tr/fido.py @@ -38,13 +38,15 @@ async def confirm_fido( async def confirm_fido_reset() -> bool: + from trezor import TR + confirm = RustLayout( trezorui2.confirm_action( - title="FIDO2 RESET", - description="Do you really want to erase all credentials?", + title=TR.fido__title_reset, + description=TR.fido__wanna_erase_credentials, action=None, verb_cancel="", - verb="CONFIRM", + verb=TR.buttons__confirm, ) ) return (await confirm) is trezorui2.CONFIRMED diff --git a/core/src/trezor/ui/layouts/tr/homescreen.py b/core/src/trezor/ui/layouts/tr/homescreen.py index a58966430..ae82749c6 100644 --- a/core/src/trezor/ui/layouts/tr/homescreen.py +++ b/core/src/trezor/ui/layouts/tr/homescreen.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING import storage.cache as storage_cache import trezorui2 -from trezor import ui +from trezor import TR, ui from . import RustLayout @@ -42,8 +42,7 @@ class Homescreen(HomescreenBase): ) -> None: level = 1 if notification is not None: - notification = notification.rstrip("!") - if "EXPERIMENTAL" in notification: + if notification == TR.homescreen__title_experimental_mode: level = 2 elif notification_is_error: level = 0 @@ -106,10 +105,12 @@ class Busyscreen(HomescreenBase): RENDER_INDICATOR = storage_cache.BUSYSCREEN_ON def __init__(self, delay_ms: int) -> None: + from trezor import TR + skip = storage_cache.homescreen_shown is self.RENDER_INDICATOR super().__init__( layout=trezorui2.show_progress_coinjoin( - title="Waiting for others", + title=TR.coinjoin__waiting_for_others, indeterminate=True, time_ms=delay_ms, skip_first_paint=skip, diff --git a/core/src/trezor/ui/layouts/tr/progress.py b/core/src/trezor/ui/layouts/tr/progress.py index 5cc4331e8..0171eca46 100644 --- a/core/src/trezor/ui/layouts/tr/progress.py +++ b/core/src/trezor/ui/layouts/tr/progress.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING import trezorui2 -from trezor import ui +from trezor import TR, ui if TYPE_CHECKING: from typing import Any @@ -29,13 +29,13 @@ class RustProgress: def progress( - message: str = "PLEASE WAIT", + message: str | None = None, description: str | None = None, indeterminate: bool = False, ) -> ProgressLayout: return RustProgress( layout=trezorui2.show_progress( - title=message.upper(), + title=message.upper() if message else "", indeterminate=indeterminate, description=description or "", ) @@ -57,12 +57,12 @@ def pin_progress(message: str, description: str) -> ProgressLayout: def monero_keyimage_sync_progress() -> ProgressLayout: - return progress("", "Syncing...") + return progress("", TR.progress__syncing) def monero_live_refresh_progress() -> ProgressLayout: - return progress("", "Refreshing...", indeterminate=True) + return progress("", TR.progress__refreshing, indeterminate=True) def monero_transaction_progress_inner() -> ProgressLayout: - return progress("", "Signing transaction...") + return progress("", TR.progress__signing_transaction) diff --git a/core/src/trezor/ui/layouts/tr/recovery.py b/core/src/trezor/ui/layouts/tr/recovery.py index a42280765..f3c6236b8 100644 --- a/core/src/trezor/ui/layouts/tr/recovery.py +++ b/core/src/trezor/ui/layouts/tr/recovery.py @@ -1,6 +1,7 @@ from typing import Callable, Iterable import trezorui2 +from trezor import TR from trezor.enums import ButtonRequestType from ..common import interact @@ -20,7 +21,7 @@ async def request_word_count(dry_run: bool) -> int: async def request_word(word_index: int, word_count: int, is_slip39: bool) -> str: from trezor.wire.context import wait - prompt = f"WORD {word_index + 1} OF {word_count}" + prompt = TR.recovery__word_x_of_y_template.format(word_index + 1, word_count) if is_slip39: word_choice = RustLayout(trezorui2.request_slip39(prompt=prompt)) @@ -45,10 +46,10 @@ async def show_group_share_success(share_index: int, group_index: int) -> None: RustLayout( trezorui2.show_group_share_success( lines=[ - "You have entered", - f"Share {share_index + 1}", - "from", - f"Group {group_index + 1}", + TR.recovery__you_have_entered, + TR.recovery__share_num_template.format(share_index + 1), + TR.words__from, + TR.recovery__group_num_template.format(group_index + 1), ], ) ), @@ -99,7 +100,8 @@ async def show_recovery_warning( br_type: str, content: str, subheader: str | None = None, - button: str = "TRY AGAIN", + button: str | None = None, br_code: ButtonRequestType = ButtonRequestType.Warning, ) -> None: + button = button or TR.buttons__try_again # def_arg await show_warning(br_type, content, subheader, button, br_code) diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index 9835c5ce1..3a6511479 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING import trezorui2 +from trezor import TR from trezor.enums import ButtonRequestType from trezor.wire import ActionCancelled @@ -25,14 +26,16 @@ async def show_share_words( br_code = ButtonRequestType.ResetDevice if share_index is None: - title = "STANDARD BACKUP" - check_title = "CHECK BACKUP" + title = TR.reset__share_words_title + check_title = TR.reset__check_backup_title elif group_index is None: - title = f"SHARE #{share_index + 1}" - check_title = f"CHECK SHARE #{share_index + 1}" + title = f"{TR.words__title_share} #{share_index + 1}" + check_title = ( + f"{TR.words__title_check} {TR.words__title_share} #{share_index + 1}" + ) else: - title = f"GROUP {group_index + 1} - SHARE {share_index + 1}" - check_title = f"GROUP {group_index + 1} - SHARE {share_index + 1}" + title = f"{TR.words__title_group} {group_index + 1} - {TR.words__title_share} {share_index + 1}" + check_title = f"{TR.words__title_group} {group_index + 1} - {TR.words__title_share} {share_index + 1}" # We want the option to go back from words to the previous screen # (by sending CANCELLED) @@ -40,8 +43,8 @@ async def show_share_words( await confirm_action( br_type, title, - description=f"Write down all {len(share_words)} words in order.", - verb="SHOW WORDS", + description=TR.reset__write_down_words_template.format(len(share_words)), + verb=TR.buttons__show_words, verb_cancel=None, br_code=br_code, ) @@ -61,8 +64,8 @@ async def show_share_words( await confirm_action( br_type, check_title, - description="Select the correct word for each position.", - verb="CONTINUE", + description=TR.reset__select_correct_word, + verb=TR.buttons__continue, verb_cancel=None, br_code=br_code, ) @@ -85,11 +88,12 @@ async def select_word( while len(words) < 3: words.append(words[-1]) + word_ordinal = format_ordinal(checked_index + 1).upper() result = await wait( RustLayout( trezorui2.select_word( title="", - description=f"SELECT {format_ordinal(checked_index + 1).upper()} WORD", + description=TR.reset__select_word_template.format(word_ordinal), words=(words[0].lower(), words[1].lower(), words[2].lower()), ) ) @@ -107,23 +111,23 @@ async def slip39_show_checklist(step: int, backup_type: BackupType) -> None: items = ( ( - "Number of shares", - "Set threshold", - "Write down and check all shares", + TR.reset__slip39_checklist_num_shares, + TR.reset__slip39_checklist_set_threshold, + TR.reset__slip39_checklist_write_down, ) if backup_type == BackupType.Slip39_Basic else ( - "Number of groups", - "Number of shares", - "Set sizes and thresholds", + TR.reset__slip39_checklist_num_groups, + TR.reset__slip39_checklist_num_shares, + TR.reset__slip39_checklist_set_sizes, ) ) result = await interact( RustLayout( trezorui2.show_checklist( - title="BACKUP CHECKLIST", - button="CONTINUE", + title=TR.reset__slip39_checklist_title, + button=TR.buttons__continue, active=step, items=items, ) @@ -165,9 +169,9 @@ async def slip39_prompt_threshold( ) -> int: await confirm_action( "slip39_prompt_threshold", - "Threshold", - description="= minimum number of unique word lists used for recovery.", - verb="CONTINUE", + TR.words__title_threshold, + description=TR.reset__threshold_info, + verb=TR.buttons__continue, verb_cancel=None, ) @@ -178,9 +182,9 @@ async def slip39_prompt_threshold( max_count = num_of_shares if group_id is not None: - title = f"THRESHOLD - GROUP {group_id + 1}" + title = f"{TR.words__title_threshold} - {TR.words__title_group} {group_id + 1}" else: - title = "THRESHOLD" + title = TR.words__title_threshold return await _prompt_number( title, @@ -194,9 +198,9 @@ async def slip39_prompt_threshold( async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: await confirm_action( "slip39_shares", - "Number of shares", - description="= total number of unique word lists used for wallet backup.", - verb="CONTINUE", + TR.reset__title_number_of_shares, + description=TR.reset__number_of_shares_info, + verb=TR.buttons__continue, verb_cancel=None, ) @@ -205,9 +209,9 @@ async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: max_count = 16 if group_id is not None: - title = f"# SHARES - GROUP {group_id + 1}" + title = f"# {TR.words__title_shares} - {TR.words__title_group} {group_id + 1}" else: - title = "NUMBER OF SHARES" + title = TR.reset__title_number_of_shares return await _prompt_number( title, @@ -224,7 +228,7 @@ async def slip39_advanced_prompt_number_of_groups() -> int: max_count = 16 return await _prompt_number( - "NUMBER OF GROUPS", + TR.reset__title_number_of_groups, count, min_count, max_count, @@ -238,7 +242,7 @@ async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: max_count = num_of_groups return await _prompt_number( - "GROUP THRESHOLD", + TR.reset__title_group_threshold, count, min_count, max_count, @@ -249,9 +253,9 @@ async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: async def show_warning_backup(slip39: bool) -> None: await show_warning( "backup_warning", - "REMEMBER", - "Never make a digital copy of your backup or upload it online!", - "OK, I UNDERSTAND", + TR.words__title_remember, + TR.reset__never_make_digital_copy, + TR.buttons__ok_i_understand, ButtonRequestType.ResetDevice, ) @@ -259,9 +263,9 @@ async def show_warning_backup(slip39: bool) -> None: async def show_success_backup() -> None: await confirm_action( "success_backup", - "BACKUP IS DONE", - description="Keep it safe!", - verb="CONTINUE", + TR.reset__title_backup_is_done, + description=TR.words__keep_it_safe, + verb=TR.buttons__continue, verb_cancel=None, br_code=ButtonRequestType.Success, ) @@ -271,9 +275,11 @@ async def show_reset_warning( br_type: str, content: str, subheader: str | None = None, - button: str = "TRY AGAIN", + button: str | None = None, br_code: ButtonRequestType = ButtonRequestType.Warning, ) -> None: + button = button or TR.buttons__try_again # def_arg + await show_warning( br_type, subheader or "", diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 4f5f0d6fc..77535388b 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING import trezorui2 -from trezor import io, loop, ui +from trezor import TR, io, loop, ui from trezor.enums import ButtonRequestType from trezor.wire import ActionCancelled from trezor.wire.context import wait as ctx_wait @@ -306,9 +306,9 @@ async def confirm_single( async def confirm_reset_device(title: str, recovery: bool = False) -> None: if recovery: - button = "RECOVER WALLET" + button = TR.reset__button_recover else: - button = "CREATE WALLET" + button = TR.reset__button_create await raise_if_not_confirmed( interact( @@ -319,9 +319,11 @@ async def confirm_reset_device(title: str, recovery: bool = False) -> None: ) ), "recover_device" if recovery else "setup_device", - ButtonRequestType.ProtectCall - if recovery - else ButtonRequestType.ResetDevice, + ( + ButtonRequestType.ProtectCall + if recovery + else ButtonRequestType.ResetDevice + ), ) ) @@ -331,11 +333,11 @@ async def prompt_backup() -> bool: result = await interact( RustLayout( trezorui2.confirm_action( - title="SUCCESS", - action="New wallet created successfully.", - description="You should back up your new wallet right now.", - verb="BACK UP", - verb_cancel="SKIP", + title=TR.words__title_success, + action=TR.backup__new_wallet_successfully_created, + description=TR.backup__it_should_be_backed_up, + verb=TR.buttons__back_up, + verb_cancel=TR.buttons__skip, ) ), "backup_device", @@ -347,11 +349,11 @@ async def prompt_backup() -> bool: result = await interact( RustLayout( trezorui2.confirm_action( - title="WARNING", - action="Are you sure you want to skip the backup?", - description="You can back up your Trezor once, at any time.", - verb="BACK UP", - verb_cancel="SKIP", + title=TR.words__warning.upper(), + action=TR.backup__want_to_skip, + description=TR.backup__can_back_up_anytime, + verb=TR.buttons__back_up, + verb_cancel=TR.buttons__skip, ) ), "backup_device", @@ -365,9 +367,9 @@ async def confirm_path_warning( path_type: str | None = None, ) -> None: title = ( - "Wrong derivation path for selected account." + TR.addr_mismatch__wrong_derivation_path if not path_type - else f"Unknown {path_type.lower()}." + else f"{TR.words__unknown} {path_type.lower()}." ) await raise_if_not_confirmed( interact( @@ -375,8 +377,8 @@ async def confirm_path_warning( trezorui2.show_warning( title=title, value=path, - description="Continue anyway?", - button="CONTINUE", + description=TR.words__continue_anyway, + button=TR.buttons__continue, ) ), "path_warning", @@ -392,7 +394,7 @@ async def confirm_homescreen( interact( RustLayout( trezorui2.confirm_homescreen( - title="CHANGE HOMESCREEN", + title=TR.homescreen__title_set, image=image, ) ), @@ -413,20 +415,20 @@ async def show_address( network: str | None = None, multisig_index: int | None = None, xpubs: Sequence[str] = (), - mismatch_title: str = "Address mismatch?", + mismatch_title: str | None = None, details_title: str | None = None, br_type: str = "show_address", br_code: ButtonRequestType = ButtonRequestType.Address, chunkify: bool = False, ) -> None: + mismatch_title = mismatch_title or TR.addr_mismatch__mismatch # def_arg send_button_request = True + if title is None: - title = ( - "RECEIVE ADDRESS\n(MULTISIG)" - if multisig_index is not None - else "RECEIVE ADDRESS" - ) - details_title = "RECEIVING TO" + title = TR.address__title_receive_address + if multisig_index is not None: + title = f"{title}\n(MULTISIG)" + details_title = TR.send__title_receiving_to elif details_title is None: details_title = title @@ -460,7 +462,11 @@ async def show_address( def xpub_title(i: int) -> str: result = f"MULTISIG XPUB #{i + 1}\n" - result += "(YOURS)" if i == multisig_index else "(COSIGNER)" + result += ( + f"({TR.address__title_yours})" + if i == multisig_index + else f"({TR.address__title_cosigner})" + ) return result result = await ctx_wait( @@ -490,13 +496,15 @@ async def show_address( def show_pubkey( pubkey: str, - title: str = "Public key", + title: str | None = None, *, account: str | None = None, path: str | None = None, - mismatch_title: str = "Key mismatch?", - br_type="show_pubkey", + mismatch_title: str | None = None, + br_type: str = "show_pubkey", ) -> Awaitable[None]: + title = title or TR.address__public_key # def_arg + mismatch_title = mismatch_title or TR.addr_mismatch__key_mismatch # def_arg return show_address( address=pubkey, title=title.upper(), @@ -513,9 +521,10 @@ async def show_error_and_raise( br_type: str, content: str, subheader: str | None = None, - button: str = "TRY AGAIN", + button: str | None = None, exc: ExceptionType = ActionCancelled, ) -> NoReturn: + button = button or TR.buttons__try_again # def_arg await interact( RustLayout( trezorui2.show_error( @@ -535,9 +544,10 @@ async def show_warning( br_type: str, content: str, subheader: str | None = None, - button: str = "CONTINUE", + button: str | None = None, br_code: ButtonRequestType = ButtonRequestType.Warning, ) -> None: + button = button or TR.buttons__continue # def_arg await raise_if_not_confirmed( interact( RustLayout( @@ -557,8 +567,9 @@ async def show_success( br_type: str, content: str, subheader: str | None = None, - button: str = "CONTINUE", + button: str | None = None, ) -> None: + button = button or TR.buttons__continue # def_arg await raise_if_not_confirmed( interact( RustLayout( @@ -586,26 +597,27 @@ async def confirm_output( chunkify: bool = False, ) -> None: if title is not None: + # TODO: handle translation if title.upper().startswith("CONFIRM "): title = title[len("CONFIRM ") :] - amount_title = title.upper() - recipient_title = title.upper() + amount_title = title + recipient_title = title elif output_index is not None: - amount_title = f"AMOUNT #{output_index + 1}" - recipient_title = f"RECIPIENT #{output_index + 1}" + amount_title = f"{TR.words__amount} #{output_index + 1}" + recipient_title = f"{TR.words__recipient} #{output_index + 1}" else: - amount_title = "SENDING AMOUNT" - recipient_title = "SENDING TO" + amount_title = TR.send__confirm_sending + recipient_title = TR.send__title_sending_to while True: result = await interact( RustLayout( trezorui2.confirm_value( - title=recipient_title, + title=recipient_title.upper(), subtitle=address_label, description=None, value=address, - verb="CONTINUE", + verb=TR.buttons__continue, hold=False, info_button=False, chunkify=chunkify, @@ -620,11 +632,11 @@ async def confirm_output( result = await interact( RustLayout( trezorui2.confirm_value( - title=amount_title, + title=amount_title.upper(), subtitle=None, description=None, value=amount, - verb=None if hold else "CONFIRM", + verb=None if hold else TR.buttons__confirm, verb_cancel="^", hold=hold, info_button=False, @@ -645,11 +657,11 @@ async def confirm_payment_request( result = await interact( RustLayout( trezorui2.confirm_with_info( - title="SENDING", + title=TR.send__title_sending, items=[(ui.NORMAL, f"{amount} to\n{recipient_name}")] + [(ui.NORMAL, memo) for memo in memos], - button="CONFIRM", - info_button="DETAILS", + button=TR.buttons__confirm, + info_button=TR.buttons__details, ) ), "confirm_payment_request", @@ -669,7 +681,7 @@ async def confirm_payment_request( async def should_show_more( title: str, para: Iterable[tuple[int, str]], - button_text: str = "Show all", + button_text: str | None = None, br_type: str = "should_show_more", br_code: ButtonRequestType = BR_TYPE_OTHER, confirm: str | bytes | None = None, @@ -679,8 +691,9 @@ async def should_show_more( Raises ActionCancelled if the user cancels. """ + button_text = button_text or TR.buttons__show_all # def_arg if confirm is None or not isinstance(confirm, str): - confirm = "CONFIRM" + confirm = TR.buttons__confirm result = await interact( RustLayout( @@ -730,7 +743,7 @@ async def _confirm_ask_pagination( paginated = RustLayout( trezorui2.confirm_more( title=title, - button="CLOSE", + button=TR.buttons__close, items=[(ui.MONO, data)], ) ) @@ -747,14 +760,15 @@ async def confirm_blob( br_type: str, title: str, data: bytes | str, - description: str = "", - verb: str = "CONFIRM", + description: str | None = None, + verb: str | None = None, verb_cancel: str | None = None, hold: bool = False, br_code: ButtonRequestType = BR_TYPE_OTHER, ask_pagination: bool = False, chunkify: bool = False, ) -> None: + verb = verb or TR.buttons__confirm # def_arg title = title.upper() layout = RustLayout( trezorui2.confirm_blob( @@ -771,7 +785,7 @@ async def confirm_blob( if ask_pagination and layout.page_count() > 1: assert not hold - await _confirm_ask_pagination(br_type, title, data, description, br_code) + await _confirm_ask_pagination(br_type, title, data, description or "", br_code) else: await raise_if_not_confirmed( @@ -786,7 +800,7 @@ async def confirm_blob( async def confirm_address( title: str, address: str, - description: str | None = "Address:", + description: str | None = None, br_type: str = "confirm_address", br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> None: @@ -796,7 +810,7 @@ async def confirm_address( description or "", br_type, br_code, - verb="CONFIRM", + verb=TR.buttons__confirm, ) @@ -813,24 +827,25 @@ async def confirm_text( description or "", br_type, br_code, - verb="CONFIRM", + verb=TR.buttons__confirm, ) def confirm_amount( title: str, amount: str, - description: str = "Amount:", + description: str | None = None, br_type: str = "confirm_amount", br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> Awaitable[None]: + description = description or f"{TR.words__amount}:" # def_arg return confirm_value( title, amount, description, br_type, br_code, - verb="CONFIRM", + verb=TR.buttons__confirm, ) @@ -857,7 +872,7 @@ def confirm_value( info_items = info_items or [] info_layout = RustLayout( trezorui2.show_info_with_cancel( - title="INFORMATION", + title=TR.words__title_information, items=info_items, ) ) @@ -910,36 +925,42 @@ async def confirm_properties( async def confirm_total( total_amount: str, fee_amount: str, - title: str = "SUMMARY", - total_label: str = "Total amount:", - fee_label: str = "Including fee:", + title: str | None = None, + total_label: str | None = None, + fee_label: str | None = None, account_label: str | None = None, fee_rate_amount: str | None = None, br_type: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> None: + title = title or TR.words__title_summary # def_arg + total_label = total_label or TR.send__total_amount # def_arg + fee_label = fee_label or TR.send__including_fee # def_arg + items = [ (total_label, total_amount), (fee_label, fee_amount), ] info_items = [] if account_label: - info_items.append(("Sending from account:", account_label)) + info_items.append((TR.confirm_total__sending_from_account, account_label)) if fee_rate_amount: - info_items.append(("Fee rate:", fee_rate_amount)) + info_items.append((TR.confirm_total__fee_rate, fee_rate_amount)) await confirm_summary( - items, "SUMMARY", info_items, br_type=br_type, br_code=br_code + items, TR.words__title_summary, info_items, br_type=br_type, br_code=br_code ) async def confirm_summary( items: Iterable[tuple[str, str]], - title: str = "SUMMARY", + title: str | None = None, info_items: Iterable[tuple[str, str]] | None = None, br_type: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> None: + title = title or TR.words__title_summary # def_arg + total_layout = RustLayout( trezorui2.confirm_total( title=title.upper(), @@ -950,7 +971,7 @@ async def confirm_summary( info_items = info_items or [] info_layout = RustLayout( trezorui2.show_info_with_cancel( - title="INFORMATION", + title=TR.words__title_information, items=info_items, ) ) @@ -968,10 +989,10 @@ async def confirm_ethereum_tx( ) -> None: total_layout = RustLayout( trezorui2.confirm_total( - title="SUMMARY", + title=TR.words__title_summary, items=[ - ("Amount:", total_amount), - ("Maximum fee:", maximum_fee), + (f"{TR.words__amount}:", total_amount), + (TR.send__maximum_fee, maximum_fee), ], info_button=True, cancel_arrow=True, @@ -979,7 +1000,7 @@ async def confirm_ethereum_tx( ) info_layout = RustLayout( trezorui2.show_info_with_cancel( - title="FEE INFORMATION", + title=TR.confirm_total__title_fee, items=items, ) ) @@ -988,9 +1009,9 @@ async def confirm_ethereum_tx( # Allowing going back and forth between recipient and summary/details await confirm_blob( br_type, - "RECIPIENT", + TR.words__recipient.upper(), recipient, - verb="CONTINUE", + verb=TR.buttons__continue, chunkify=chunkify, ) @@ -1008,11 +1029,15 @@ async def confirm_solana_tx( amount: str, fee: str, items: Iterable[tuple[str, str]], - amount_title="Amount:", - fee_title="Fee", + amount_title: str | None = None, + fee_title: str | None = None, br_type: str = "confirm_solana_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, ): + amount_title = ( + amount_title if amount_title is not None else f"{TR.words__amount}:" + ) # def_arg + fee_title = fee_title or TR.words__fee # def_arg await confirm_summary( ((amount_title, amount), (fee_title, fee)), info_items=items, @@ -1026,10 +1051,10 @@ async def confirm_joint_total(spending_amount: str, total_amount: str) -> None: interact( RustLayout( trezorui2.confirm_total( - title="JOINT TRANSACTION", + title=TR.send__title_joint_transaction, items=[ - ("You are contributing:", spending_amount), - ("To the total amount:", total_amount), + (TR.send__you_are_contributing, spending_amount), + (TR.send__to_the_total_amount, total_amount), ], ) ), @@ -1046,8 +1071,9 @@ async def confirm_metadata( param: str | None = None, br_code: ButtonRequestType = ButtonRequestType.SignTx, hold: bool = False, - verb: str = "CONTINUE", + verb: str | None = None, ) -> None: + verb = verb or TR.buttons__continue # def_arg await confirm_action( br_type, title=title.upper(), @@ -1065,8 +1091,8 @@ async def confirm_replacement(title: str, txid: str) -> None: "confirm_replacement", title.upper(), txid, - "Transaction ID:", - "CONTINUE", + TR.send__transaction_id, + TR.buttons__continue, br_code=ButtonRequestType.SignTx, ) @@ -1079,11 +1105,11 @@ async def confirm_modify_output( ) -> None: address_layout = RustLayout( trezorui2.confirm_blob( - title="MODIFY AMOUNT", + title=TR.modify_amount__title, data=address, - verb="CONTINUE", + verb=TR.buttons__continue, verb_cancel=None, - description="Address:", + description=f"{TR.words__address}:", extra=None, ) ) @@ -1159,10 +1185,10 @@ async def confirm_modify_fee( ) items: list[tuple[str, str]] = [] if fee_rate_amount: - items.append(("New fee rate:", fee_rate_amount)) + items.append((TR.bitcoin__new_fee_rate, fee_rate_amount)) info_layout = RustLayout( trezorui2.show_info_with_cancel( - title="FEE INFORMATION", + title=TR.confirm_total__title_fee, items=items, ) ) @@ -1192,7 +1218,7 @@ async def confirm_sign_identity( ) -> None: await confirm_blob( "sign_identity", - f"Sign {proto}", + f"{TR.words__sign} {proto}", identity, challenge_visual + "\n" if challenge_visual else "", br_code=BR_TYPE_OTHER, @@ -1208,10 +1234,10 @@ async def confirm_signverify( chunkify: bool = False, ) -> None: if verify: - address_title = "VERIFY ADDRESS" + address_title = TR.sign_message__verify_address br_type = "verify_message" else: - address_title = "SIGNING ADDRESS" + address_title = TR.sign_message__confirm_address br_type = "sign_message" address_layout = RustLayout( @@ -1219,7 +1245,7 @@ async def confirm_signverify( title=address_title, data=address, description="", - verb="CONTINUE", + verb=TR.buttons__continue, extra=None, chunkify=chunkify, ) @@ -1227,14 +1253,19 @@ async def confirm_signverify( items: list[tuple[str, str]] = [] if account is not None: - items.append(("Account:", account)) + items.append((f"{TR.words__account}:", account)) if path is not None: - items.append(("Derivation path:", path)) - items.append(("Message size:", f"{len(message)} Bytes")) + items.append((TR.address_details__derivation_path, path)) + items.append( + ( + TR.sign_message__message_size, + TR.sign_message__bytes_template.format(len(message)), + ) + ) info_layout = RustLayout( trezorui2.show_info_with_cancel( - title="INFORMATION", + title=TR.words__title_information, items=items, horizontal=True, ) @@ -1242,12 +1273,12 @@ async def confirm_signverify( message_layout = RustLayout( trezorui2.confirm_blob( - title="CONFIRM MESSAGE", + title=TR.sign_message__confirm_message, description=None, data=message, extra=None, hold=not verify, - verb="CONFIRM" if verify else None, + verb=TR.buttons__confirm if verify else None, ) ) @@ -1257,7 +1288,7 @@ async def confirm_signverify( ) if result is not CONFIRMED: result = await ctx_wait( - RustLayout(trezorui2.show_mismatch(title="Address mismatch?")) + RustLayout(trezorui2.show_mismatch(title=TR.addr_mismatch__mismatch)) ) assert result in (CONFIRMED, CANCELLED) # Right button aborts action, left goes back to showing address. @@ -1304,15 +1335,21 @@ def request_passphrase_on_host() -> None: draw_simple( trezorui2.show_simple( title=None, - description="Please enter your passphrase.", + description=TR.passphrase__please_enter, ) ) +def show_wait_text(message: str) -> None: + draw_simple(trezorui2.show_wait_text(message)) + + async def request_passphrase_on_device(max_len: int) -> str: result = await interact( RustLayout( - trezorui2.request_passphrase(prompt="Enter passphrase", max_len=max_len) + trezorui2.request_passphrase( + prompt=TR.passphrase__title_enter, max_len=max_len + ) ), "passphrase_device", ButtonRequestType.PassphraseEntry, @@ -1335,9 +1372,9 @@ async def request_pin_on_device( if attempts_remaining is None: subprompt = "" elif attempts_remaining == 1: - subprompt = "Last attempt" + subprompt = TR.pin__last_attempt else: - subprompt = f"{attempts_remaining} tries left" + subprompt = f"{attempts_remaining} {TR.pin__tries_left}" result = await interact( RustLayout( @@ -1368,21 +1405,21 @@ async def pin_mismatch_popup( is_wipe_code: bool = False, ) -> None: await button_request("pin_mismatch", code=BR_TYPE_OTHER) - title = "Wipe code mismatch" if is_wipe_code else "PIN mismatch" - description = "wipe codes" if is_wipe_code else "PINs" + title = TR.wipe_code__wipe_code_mismatch if is_wipe_code else TR.pin__pin_mismatch + description = TR.wipe_code__mismatch if is_wipe_code else TR.pin__mismatch return await show_error_popup( title, - f"The {description} you entered do not match.", - button="TRY AGAIN", + description, + button=TR.buttons__try_again, ) async def wipe_code_same_as_pin_popup() -> None: await button_request("wipe_code_same_as_pin", code=BR_TYPE_OTHER) return await show_error_popup( - "Invalid wipe code", - "The wipe code must be different from your PIN.", - button="TRY AGAIN", + TR.wipe_code__invalid, + TR.wipe_code__diff_from_pin, + button=TR.buttons__try_again, ) @@ -1399,12 +1436,10 @@ async def confirm_set_new_pin( trezorui2.confirm_emphasized( title=title.upper(), items=( - "Turn on ", - (True, description), - " protection?\n\n", + (True, description + "\n\n"), information, ), - verb="TURN ON", + verb=TR.buttons__turn_on, ) ), br_type, diff --git a/core/src/trezor/ui/layouts/tt/fido.py b/core/src/trezor/ui/layouts/tt/fido.py index 5330a3cd7..9dc42c152 100644 --- a/core/src/trezor/ui/layouts/tt/fido.py +++ b/core/src/trezor/ui/layouts/tt/fido.py @@ -76,11 +76,13 @@ async def confirm_fido( async def confirm_fido_reset() -> bool: + from trezor import TR + confirm = RustLayout( trezorui2.confirm_action( - title="FIDO2 RESET", - action="erase all credentials?", - description="Do you really want to", + title=TR.fido__title_reset, + action=TR.fido__erase_credentials, + description=TR.words__really_wanna, reverse=True, ) ) diff --git a/core/src/trezor/ui/layouts/tt/homescreen.py b/core/src/trezor/ui/layouts/tt/homescreen.py index 9bcb7ea6d..c59abf1f1 100644 --- a/core/src/trezor/ui/layouts/tt/homescreen.py +++ b/core/src/trezor/ui/layouts/tt/homescreen.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING import storage.cache as storage_cache import trezorui2 -from trezor import ui +from trezor import TR, ui from . import RustLayout @@ -51,10 +51,9 @@ class Homescreen(HomescreenBase): ) -> None: level = 1 if notification is not None: - notification = notification.rstrip("!") - if "COINJOIN" in notification.upper(): + if notification == TR.homescreen__title_coinjoin_authorized: level = 3 - elif "EXPERIMENTAL" in notification.upper(): + elif notification == TR.homescreen__title_experimental_mode: level = 2 elif notification_is_error: level = 0 @@ -121,10 +120,12 @@ class Busyscreen(HomescreenBase): RENDER_INDICATOR = storage_cache.BUSYSCREEN_ON def __init__(self, delay_ms: int) -> None: + from trezor import TR + skip = storage_cache.homescreen_shown is self.RENDER_INDICATOR super().__init__( layout=trezorui2.show_progress_coinjoin( - title="Waiting for others", + title=TR.coinjoin__waiting_for_others, indeterminate=True, time_ms=delay_ms, skip_first_paint=skip, diff --git a/core/src/trezor/ui/layouts/tt/progress.py b/core/src/trezor/ui/layouts/tt/progress.py index 400510717..15c933821 100644 --- a/core/src/trezor/ui/layouts/tt/progress.py +++ b/core/src/trezor/ui/layouts/tt/progress.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING import trezorui2 -from trezor import ui +from trezor import TR, ui if TYPE_CHECKING: from typing import Any @@ -31,10 +31,11 @@ class RustProgress: def progress( - message: str = "PLEASE WAIT", + message: str | None = None, description: str | None = None, indeterminate: bool = False, ) -> ProgressLayout: + message = message or TR.progress__please_wait # def_arg return RustProgress( layout=trezorui2.show_progress( title=message.upper(), @@ -59,12 +60,12 @@ def pin_progress(message: str, description: str) -> ProgressLayout: def monero_keyimage_sync_progress() -> ProgressLayout: - return progress("SYNCING") + return progress("", TR.progress__syncing) def monero_live_refresh_progress() -> ProgressLayout: - return progress("REFRESHING", indeterminate=True) + return progress("", TR.progress__refreshing, indeterminate=True) def monero_transaction_progress_inner() -> ProgressLayout: - return progress("SIGNING TRANSACTION") + return progress("", TR.progress__signing_transaction) diff --git a/core/src/trezor/ui/layouts/tt/recovery.py b/core/src/trezor/ui/layouts/tt/recovery.py index cbe33fdee..51687b582 100644 --- a/core/src/trezor/ui/layouts/tt/recovery.py +++ b/core/src/trezor/ui/layouts/tt/recovery.py @@ -1,6 +1,7 @@ from typing import Callable, Iterable import trezorui2 +from trezor import TR from trezor.enums import ButtonRequestType from trezor.wire.context import wait as ctx_wait @@ -32,7 +33,7 @@ async def request_word_count(dry_run: bool) -> int: async def request_word(word_index: int, word_count: int, is_slip39: bool) -> str: - prompt = f"Type word {word_index + 1} of {word_count}" + prompt = TR.recovery__type_word_x_of_y_template.format(word_index + 1, word_count) if is_slip39: keyboard = RustLayout(trezorui2.request_slip39(prompt=prompt)) else: @@ -54,7 +55,9 @@ async def show_remaining_shares( for remaining, group in groups: if 0 < remaining < MAX_SHARE_COUNT: title = strings.format_plural( - "{count} more {plural} starting", remaining, "share" + TR.recovery__x_more_items_starting_template_plural, + remaining, + TR.plurals__x_shares_needed, ) words = "\n".join(group) pages.append((title, words)) @@ -63,7 +66,9 @@ async def show_remaining_shares( ): groups_remaining = group_threshold - shares_remaining.count(0) title = strings.format_plural( - "{count} more {plural} starting", groups_remaining, "group" + TR.recovery__x_more_items_starting_template_plural, + groups_remaining, + TR.plurals__x_groups_needed, ) words = "\n".join(group) pages.append((title, words)) @@ -83,10 +88,10 @@ async def show_group_share_success(share_index: int, group_index: int) -> None: RustLayout( trezorui2.show_group_share_success( lines=[ - "You have entered", - f"Share {share_index + 1}", - "from", - f"Group {group_index + 1}", + TR.recovery__you_have_entered, + TR.recovery__share_num_template.format(share_index + 1), + TR.words__from, + TR.recovery__group_num_template.format(group_index + 1), ], ) ), @@ -108,7 +113,7 @@ async def continue_recovery( if show_info: # Show this just one-time - description = "You'll only have to select the first 2-4 letters of each word." + description = TR.recovery__only_first_n_letters else: description = subtext or "" @@ -135,9 +140,10 @@ async def show_recovery_warning( br_type: str, content: str, subheader: str | None = None, - button: str = "TRY AGAIN", + button: str | None = None, br_code: ButtonRequestType = ButtonRequestType.Warning, ) -> None: + button = button or TR.buttons__try_again # def_arg await raise_if_not_confirmed( interact( RustLayout( diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index 62b84526d..0dd51dc96 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING import trezorui2 +from trezor import TR from trezor.enums import ButtonRequestType from trezor.wire import ActionCancelled from trezor.wire.context import wait as ctx_wait @@ -47,11 +48,13 @@ async def show_share_words( group_index: int | None = None, ) -> None: if share_index is None: - title = "RECOVERY SEED" + title = TR.reset__recovery_seed_title elif group_index is None: - title = f"RECOVERY SHARE #{share_index + 1}" + title = TR.reset__recovery_share_title_template.format(share_index + 1) else: - title = f"GROUP {group_index + 1} - SHARE {share_index + 1}" + title = TR.reset__group_share_title_template.format( + group_index + 1, share_index + 1 + ) pages = _split_share_into_pages(share_words) @@ -77,11 +80,13 @@ async def select_word( group_index: int | None = None, ) -> str: if share_index is None: - title: str = "CHECK SEED" + title: str = TR.reset__check_seed_title elif group_index is None: - title = f"CHECK SHARE #{share_index + 1}" + title = TR.reset__check_share_title_template.format(share_index + 1) else: - title = f"CHECK G{group_index + 1} - SHARE {share_index + 1}" + title = TR.reset__check_group_share_title_template.format( + group_index + 1, share_index + 1 + ) # It may happen (with a very low probability) # that there will be less than three unique words to choose from. @@ -94,7 +99,9 @@ async def select_word( RustLayout( trezorui2.select_word( title=title, - description=f"Select word {checked_index + 1} of {count}:", + description=TR.reset__select_word_x_of_y_template.format( + checked_index + 1, count + ), words=(words[0], words[1], words[2]), ) ) @@ -112,23 +119,23 @@ async def slip39_show_checklist(step: int, backup_type: BackupType) -> None: items = ( ( - "Set number of shares", - "Set threshold", - "Write down and check all recovery shares", + TR.reset__slip39_checklist_set_num_shares, + TR.reset__slip39_checklist_set_threshold, + TR.reset__slip39_checklist_write_down_recovery, ) if backup_type == BackupType.Slip39_Basic else ( - "Set number of groups", - "Set number of shares", - "Set size and threshold for each group", + TR.reset__slip39_checklist_set_num_groups, + TR.reset__slip39_checklist_set_num_shares, + TR.reset__slip39_checklist_set_sizes_longer, ) ) result = await interact( RustLayout( trezorui2.show_checklist( - title="BACKUP CHECKLIST", - button="CONTINUE", + title=TR.reset__slip39_checklist_title, + button=TR.buttons__continue, active=step, items=items, ) @@ -179,7 +186,9 @@ async def _prompt_number( await ctx_wait( RustLayout( trezorui2.show_simple( - title=None, description=info(value), button="OK, I UNDERSTAND" + title=None, + description=info(value), + button=TR.buttons__ok_i_understand, ) ) ) @@ -198,39 +207,41 @@ async def slip39_prompt_threshold( def description(count: int) -> str: if group_id is None: if count == 1: - return "For recovery you need 1 share." + return TR.reset__you_need_one_share elif count == max_count: - return f"For recovery you need all {count} of the shares." + return TR.reset__need_all_share_template.format(count) else: - return f"For recovery you need any {count} of the shares." + return TR.reset__need_any_share_template.format(count) else: - return f"The required number of shares to form Group {group_id + 1}." + return TR.reset__num_shares_for_group_template.format(group_id + 1) def info(count: int) -> str: - text = "The threshold sets the number of shares " + # TODO: this is madness... + text = TR.reset__the_threshold_sets_the_number_of_shares if group_id is None: - text += "needed to recover your wallet. " - text += f"Set it to {count} and you will need " + text += TR.reset__needed_to_recover_your_wallet + text += TR.reset__set_it_to_count_template.format(count) if num_of_shares == 1: - text += "1 share." + text += TR.reset__one_share elif num_of_shares == count: - text += f"all {count} of your {num_of_shares} shares." + text += TR.reset__all_x_of_y_template.format(count, num_of_shares) else: - text += f"any {count} of your {num_of_shares} shares." + text += TR.reset__any_x_of_y_template.format(count, num_of_shares) + text += "." else: - text += "needed to form a group. " - text += f"Set it to {count} and you will " + text += TR.reset__needed_to_form_a_group + text += TR.reset__set_it_to_count_template.format(count) if num_of_shares == 1: - text += "need 1 share " + text += TR.reset__one_share + " " elif num_of_shares == count: - text += f"need all {count} of {num_of_shares} shares " + text += TR.reset__all_x_of_y_template.format(count, num_of_shares) else: - text += f"need any {count} of {num_of_shares} shares " - text += f"to form Group {group_id + 1}." + text += TR.reset__any_x_of_y_template.format(count, num_of_shares) + text += " " + TR.reset__to_form_group_template.format(group_id + 1) return text return await _prompt_number( - "SET THRESHOLD", + TR.reset__title_set_threshold, description, info, count, @@ -248,19 +259,21 @@ async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: def description(i: int): if group_id is None: if i == 1: - return "Only one share will be created." + return TR.reset__only_one_share_will_be_created else: - return f"{i} people or locations will each hold one share." + return TR.reset__num_of_share_holders_template.format(i) else: - return f"Set the total number of shares in Group {group_id + 1}." + return TR.reset__total_number_of_shares_in_group_template.format( + group_id + 1 + ) if group_id is None: - info = "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet." + info = TR.reset__num_of_shares_basic_info else: - info = f"Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {group_id + 1}." + info = TR.reset__num_of_shares_advanced_info_template.format(group_id + 1) return await _prompt_number( - "SET NUMBER OF SHARES", + TR.reset__title_set_number_of_shares, description, lambda i: info, count, @@ -274,11 +287,11 @@ async def slip39_advanced_prompt_number_of_groups() -> int: count = 5 min_count = 2 max_count = 16 - description = "A group is made up of recovery shares." - info = "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds." + description = TR.reset__group_description + info = TR.reset__group_info return await _prompt_number( - "SET NUMBER OF GROUPS", + TR.reset__title_set_number_of_groups, lambda i: description, lambda i: info, count, @@ -292,11 +305,11 @@ async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: count = num_of_groups // 2 + 1 min_count = 1 max_count = num_of_groups - description = "The required number of groups for recovery." - info = "The group threshold specifies the number of groups required to recover your wallet." + description = TR.reset__required_number_of_groups + info = TR.reset__advanced_group_threshold_info return await _prompt_number( - "SET GROUP THRESHOLD", + TR.reset__title_set_group_threshold, lambda i: description, lambda i: info, count, @@ -307,19 +320,11 @@ async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: async def show_warning_backup(slip39: bool) -> None: - if slip39: - description = ( - "Never make a digital copy of your shares and never upload them online." - ) - else: - description = ( - "Never make a digital copy of your seed and never upload it online." - ) result = await interact( RustLayout( trezorui2.show_info( - title=description, - button="OK, I UNDERSTAND", + title=TR.reset__never_make_digital_copy, + button=TR.buttons__ok_i_understand, allow_cancel=False, ) ), @@ -333,17 +338,21 @@ async def show_warning_backup(slip39: bool) -> None: async def show_success_backup() -> None: from . import show_success - text = "Use your backup when you need to recover your wallet." - await show_success("success_backup", text, "Your backup is done.") + await show_success( + "success_backup", + TR.reset__use_your_backup, + TR.reset__your_backup_is_done, + ) async def show_reset_warning( br_type: str, content: str, subheader: str | None = None, - button: str = "TRY AGAIN", + button: str | None = None, br_code: ButtonRequestType = ButtonRequestType.Warning, ) -> None: + button = button or TR.buttons__try_again # def_arg await raise_if_not_confirmed( interact( RustLayout( diff --git a/core/src/trezor/utils.py b/core/src/trezor/utils.py index eb90879f1..1d3bd9c20 100644 --- a/core/src/trezor/utils.py +++ b/core/src/trezor/utils.py @@ -11,9 +11,7 @@ from trezorutils import ( # noqa: F401 USE_BACKLIGHT, USE_OPTIGA, USE_SD_CARD, - VERSION_MAJOR, - VERSION_MINOR, - VERSION_PATCH, + VERSION, bootloader_locked, check_firmware_header, consteq, diff --git a/core/tests/test_trezor.strings.py b/core/tests/test_trezor.strings.py index 3346098f9..8448cb2c6 100644 --- a/core/tests/test_trezor.strings.py +++ b/core/tests/test_trezor.strings.py @@ -22,7 +22,7 @@ class TestStrings(unittest.TestCase): for v in VECTORS: self.assertEqual(strings.format_amount(v[0], v[1]), v[2]) - def test_format_plural(self): + def test_format_plural_english(self): VECTORS = [ ("We need {count} more {plural}", 1, "share", "We need 1 more share"), ("We need {count} more {plural}", 3, "share", "We need 3 more shares"), @@ -35,6 +35,23 @@ class TestStrings(unittest.TestCase): ("We need {count} more {plural}", 1, "fuzz", "We need 1 more fuzz"), ("We need {count} more {plural}", 2, "fuzz", "We need 2 more fuzzes"), ] + for v in VECTORS: + self.assertEqual(strings.format_plural_english(v[0], v[1], v[2]), v[3]) + + with self.assertRaises(ValueError): + strings.format_plural_english("Hello", 1, "share") + + def test_format_plural(self): + VECTORS = [ + ("You are about to sign {count} {plural}", 0, "action|actions", "You are about to sign 0 actions"), + ("You are about to sign {count} {plural}", 1, "action|actions", "You are about to sign 1 action"), + ("You are about to sign {count} {plural}", 3, "action|actions", "You are about to sign 3 actions"), + ("You are about to sign {count} {plural}", 15, "action|actions", "You are about to sign 15 actions"), + ("Chystáte se podepsat {count} {plural}", 0, "akci|akce|akcí", "Chystáte se podepsat 0 akcí"), + ("Chystáte se podepsat {count} {plural}", 1, "akci|akce|akcí", "Chystáte se podepsat 1 akci"), + ("Chystáte se podepsat {count} {plural}", 3, "akci|akce|akcí", "Chystáte se podepsat 3 akce"), + ("Chystáte se podepsat {count} {plural}", 15, "akci|akce|akcí", "Chystáte se podepsat 15 akcí"), + ] for v in VECTORS: self.assertEqual(strings.format_plural(v[0], v[1], v[2]), v[3]) @@ -42,6 +59,13 @@ class TestStrings(unittest.TestCase): strings.format_plural("Hello", 1, "share") def test_format_duration_ms(self): + unit_plurals = { + "millisecond": "millisecond|milliseconds", + "second": "second|seconds", + "minute": "minute|minutes", + "hour": "hour|hours", + } + VECTORS = [ (0, "0 milliseconds"), (1, "1 millisecond"), @@ -60,7 +84,7 @@ class TestStrings(unittest.TestCase): ] for v in VECTORS: - self.assertEqual(strings.format_duration_ms(v[0]), v[1]) + self.assertEqual(strings.format_duration_ms(v[0], unit_plurals), v[1]) def test_format_timestamp(self): VECTORS = [ diff --git a/core/tools/codegen/foreign_chars.py b/core/tools/codegen/foreign_chars.py new file mode 100644 index 000000000..27591f854 --- /dev/null +++ b/core/tools/codegen/foreign_chars.py @@ -0,0 +1,104 @@ +from __future__ import annotations + +czech_chars = ( + "Á", + "Č", + "Ď", + "É", + "Ě", + "Í", + "Ň", + "Ó", + "Ř", + "Š", + "Ť", + "Ú", + "Ů", + "Ý", + "Ž", + "á", + "č", + "ď", + "é", + "ě", + "í", + "ň", + "ó", + "ř", + "š", + "ť", + "ú", + "ů", + "ý", + "ž", +) + +french_chars = ( + "À", + "Â", + "Æ", + "Ç", + "È", + "É", + "Ê", + "Ë", + "Î", + "Ï", + "Ô", + "Ù", + "Û", + "Ü", + "Ÿ", + "Œ", + "à", + "â", + "æ", + "ç", + "è", + "é", + "ê", + "ë", + "î", + "ï", + "ô", + "ù", + "û", + "ü", + "ÿ", + "œ", +) + +spanish_chars = ( + "Á", + "É", + "Í", + "Ñ", + "Ó", + "Ú", + "Ü", + "á", + "é", + "í", + "ñ", + "ó", + "ú", + "ü", + "¿", +) + +german_chars = ( + "Ä", + "Ö", + "Ü", + "ß", + "ä", + "ö", + "ü", +) + +all_languages = { + "cs": czech_chars, + "fr": french_chars, + "es": spanish_chars, + "de": german_chars, +} diff --git a/core/tools/codegen/gen_font.py b/core/tools/codegen/gen_font.py index a6a3d1e66..018d5994a 100755 --- a/core/tools/codegen/gen_font.py +++ b/core/tools/codegen/gen_font.py @@ -4,21 +4,73 @@ from __future__ import annotations +import unicodedata +from dataclasses import dataclass from pathlib import Path +from typing import TextIO +import json +import sys +# pip install freetype-py import freetype +from foreign_chars import all_languages + + +def _normalize(s: str) -> str: + return unicodedata.normalize("NFKC", s) + + HERE = Path(__file__).parent +CORE_ROOT = HERE.parent.parent FONTS_DIR = HERE / "fonts" OUT_DIR = HERE / ".." / ".." / "embed" / "lib" / "fonts" +C_FONTS_DEST = CORE_ROOT / "embed" / "lib" / "fonts" +JSON_FONTS_DEST = CORE_ROOT / "translations" / "fonts" MIN_GLYPH = ord(" ") MAX_GLYPH = ord("~") +WRITE_WIDTHS = False + +# characters for which bearingX is negative, but we choose to make it zero and modify +# advance instead +MODIFY_BEARING_X = [ + _normalize(c) + for c in ( + "Ä", + "À", + "Â", + "Æ", + "Î", + "Ï", + "î", + "ï", + "ÿ", + "Ý", + "Ÿ", + "Á", + "ý", + "A", + "X", + "Y", + "j", + "x", + "y", + "}", + ")", + ",", + "/", + "_", + ) +] + # metrics explanation: https://www.freetype.org/freetype2/docs/glyphs/metrics.png -def process_bitmap_buffer(buf: list[int], bpp: int, width: int, height: int) -> list[int]: +def process_bitmap_buffer( + buf: list[int], bpp: int, width: int, height: int +) -> list[int]: res = buf[:] if bpp == 1: for _ in range(8 - len(res) % 8): @@ -46,9 +98,9 @@ def process_bitmap_buffer(buf: list[int], bpp: int, width: int, height: int) -> for a, b, c, d in [res[i : i + 4] for i in range(0, len(res), 4)] ] elif bpp == 4: - res = [] + res: list[int] = [] for y in range(0, height): - row = buf[y * width: (y+1) * width] + row = buf[y * width : (y + 1) * width] for a, b in zip(row[::2], row[1::2]): res.append(((b & 0xF0) | (a >> 4))) if width & 1 != 0: @@ -68,167 +120,322 @@ def drop_left_columns(buf: list[int], width: int, drop: int) -> list[int]: return res -def process_face( - name: str, - style: str, - size: int, - bpp: int = 4, - shaveX: int = 0, - ext: str = "ttf", -) -> None: - print("Processing ... %s %s %s" % (name, style, size)) - file_name = FONTS_DIR / f"{name}-{style}.{ext}" - face = freetype.Face(str(file_name)) - face.set_pixel_sizes(0, size) - fontname = "%s_%s_%d" % (name.lower(), style.lower(), size) - font_ymin = 0 - font_ymax = 0 - - with open(OUT_DIR / f"font_{fontname}.c", "wt") as f: - f.write("#include \n\n") - f.write("// clang-format off\n\n") - f.write("// - the first two bytes are width and height of the glyph\n") - f.write( - "// - the third, fourth and fifth bytes are advance, bearingX and bearingY of the horizontal metrics of the glyph\n" - ) - f.write("// - the rest is packed %d-bit glyph data\n\n" % bpp) - for i in range(MIN_GLYPH, MAX_GLYPH + 1): - c = chr(i) - face.load_char(c, freetype.FT_LOAD_RENDER | freetype.FT_LOAD_TARGET_NORMAL) - bitmap = face.glyph.bitmap - metrics = face.glyph.metrics - assert metrics.width // 64 == bitmap.width - assert metrics.height // 64 == bitmap.rows - assert metrics.width % 64 == 0 - assert metrics.height % 64 == 0 - assert metrics.horiAdvance % 64 == 0 - assert metrics.horiBearingX % 64 == 0 - assert metrics.horiBearingY % 64 == 0 - assert bitmap.width == bitmap.pitch - assert len(bitmap.buffer) == bitmap.pitch * bitmap.rows - width = bitmap.width - rows = bitmap.rows - advance = metrics.horiAdvance // 64 - bearingX = metrics.horiBearingX // 64 - - remove_left = shaveX - # discard space on the left side - if shaveX > 0: - diff = min(advance, bearingX, shaveX) - advance -= diff - bearingX -= diff - remove_left -= diff - # the following code is here just for some letters (listed below) - # not using negative bearingX makes life so much easier; add it to advance instead - if bearingX < 0: - if c in "AXYjxy}),/_": - advance += -bearingX - bearingX = 0 - else: - raise ValueError("Negative bearingX for character '%s'" % c) - bearingY = metrics.horiBearingY // 64 - assert advance >= 0 and advance <= 255 - assert bearingX >= 0 and bearingX <= 255 - if bearingY < 0: # HACK - print("normalizing bearingY %d for '%s'" % (bearingY, c)) - bearingY = 0 - assert bearingY >= 0 and bearingY <= 255 - buf = list(bitmap.buffer) - # discard non-space pixels on the left side - if remove_left > 0 and width > 0: - assert bearingX == 0 - buf = drop_left_columns(buf, width, remove_left) - assert width > remove_left - width -= remove_left - assert advance > remove_left - advance -= remove_left - print( - 'Glyph "%c": removed %d pixel columns from the left' - % (c, remove_left) - ) +@dataclass +class Glyph: + char: str + width: int + rows: int + advance: int + bearingX: int + bearingY: int + buf: list[int] + num_grays: int + inverse_colors: bool = False + + @classmethod + def from_face( + cls, face: freetype.Face, c: str, shaveX: int, inverse_colors: bool = False + ) -> Glyph: + assert len(c) == 1 + bitmap = face.glyph.bitmap + metrics = face.glyph.metrics + assert metrics.width // 64 == bitmap.width + assert metrics.height // 64 == bitmap.rows + assert metrics.width % 64 == 0 + assert metrics.height % 64 == 0 + assert metrics.horiAdvance % 64 == 0 + assert metrics.horiBearingX % 64 == 0 + assert metrics.horiBearingY % 64 == 0 + assert bitmap.width == bitmap.pitch + assert len(bitmap.buffer) == bitmap.pitch * bitmap.rows + width = bitmap.width + rows = bitmap.rows + advance = metrics.horiAdvance // 64 + bearingX = metrics.horiBearingX // 64 + + remove_left = shaveX + # discard space on the left side + if shaveX > 0: + diff = min(advance, bearingX, shaveX) + advance -= diff + bearingX -= diff + remove_left -= diff + # the following code is here just for some letters (listed at start) + # not using negative bearingX makes life so much easier; add it to advance instead + if bearingX < 0: + if c in MODIFY_BEARING_X: + advance += -bearingX + bearingX = 0 + else: + raise ValueError("Negative bearingX for character '%s'" % c) + bearingY = metrics.horiBearingY // 64 + assert advance >= 0 and advance <= 255 + assert bearingX >= 0 and bearingX <= 255 + if bearingY < 0: # HACK + print("normalizing bearingY %d for '%s'" % (bearingY, c)) + bearingY = 0 + assert bearingY >= 0 and bearingY <= 255 + buf = list(bitmap.buffer) + # discard non-space pixels on the left side + if remove_left > 0 and width > 0: + assert bearingX == 0 + buf = drop_left_columns(buf, width, remove_left) + assert width > remove_left + width -= remove_left + assert advance > remove_left + advance -= remove_left print( - 'Loaded glyph "%c" ... %d x %d @ %d grays (%d bytes, metrics: %d, %d, %d)' - % ( - c, - bitmap.width, - bitmap.rows, - bitmap.num_grays, - len(bitmap.buffer), - advance, - bearingX, - bearingY, - ) + 'Glyph "%c": removed %d pixel columns from the left' % (c, remove_left) ) - f.write( - "/* %c */ static const uint8_t Font_%s_%s_%d_glyph_%d[] = { %d, %d, %d, %d, %d" - % (c, name, style, size, i, width, rows, advance, bearingX, bearingY) + + return Glyph( + char=c, + width=width, + rows=rows, + advance=advance, + bearingX=bearingX, + bearingY=bearingY, + buf=buf, + num_grays=bitmap.num_grays, + inverse_colors=inverse_colors, + ) + + def print_metrics(self) -> None: + print( + 'Loaded glyph "%c" ... %d x %d @ %d grays (%d bytes, metrics: %d, %d, %d)' + % ( + self.char, + self.width, + self.rows, + self.num_grays, + len(self.buf), + self.advance, + self.bearingX, + self.bearingY, ) - if len(buf) > 0: - f.write( - ", " - + ", ".join(["%d" % x for x in process_bitmap_buffer(buf, bpp, width, rows)]) - ) - f.write(" };\n") - - if i == ord("?"): - nonprintable = ( - "\nconst uint8_t Font_%s_%s_%d_glyph_nonprintable[] = { %d, %d, %d, %d, %d" - % (name, style, size, width, rows, advance, bearingX, bearingY) - ) - nonprintable += ", " + ", ".join( - ["%d" % (x ^ 0xFF) for x in process_bitmap_buffer(buf, bpp, width, rows)] - ) - nonprintable += " };\n" - - yMin = bearingY - rows - yMax = yMin + rows - font_ymin = min(font_ymin, yMin) - font_ymax = max(font_ymax, yMax) + ) + + def process_byte(self, b: int) -> int: + if self.inverse_colors: + return b ^ 0xFF + else: + return b + + def get_definition_line( + self, name_style_size: str, bpp: int, i: int | str, static: bool = True + ) -> str: + numbers = ", ".join(str(n) for n in self.to_bytes(bpp)) + comment = f"/* {self.char} */" + const_name = f"Font_{name_style_size}_glyph_{i}" + if static: + modifier = "static const" + else: + modifier = "const" + return f"{comment} {modifier} uint8_t {const_name}[] = {{ {numbers} }};\n" + + def to_bytes(self, bpp: int) -> bytes: + infos = [ + self.width, + self.rows, + self.advance, + self.bearingX, + self.bearingY, + ] + if self.buf: + data = [ + self.process_byte(x) + for x in process_bitmap_buffer(self.buf, bpp, self.width, self.rows) + ] + return bytes(infos + data) + else: + return bytes(infos) + + +class FaceProcessor: + def __init__( + self, + name: str, + style: str, + size: int, + bpp: int = 4, + shaveX: int = 0, + ext: str = "ttf", + ): + print("Processing ... %s %s %s" % (name, style, size)) + self.name = name + self.style = style + self.size = size + self.bpp = bpp + self.shaveX = shaveX + self.ext = ext + self.face = freetype.Face(str(FONTS_DIR / f"{name}-{style}.{ext}")) + self.face.set_pixel_sizes(0, size) # type: ignore + self.fontname = "%s_%s_%d" % (name.lower(), style.lower(), size) + self.font_ymin = 0 + self.font_ymax = 0 + + @property + def _name_style_size(self) -> str: + return f"{self.name}_{self.style}_{self.size}" + + @property + def _c_file_name(self) -> Path: + return C_FONTS_DEST / f"font_{self.fontname}.c" + + @property + def _h_file_name(self) -> Path: + return C_FONTS_DEST / f"font_{self.fontname}.h" + + def write_files(self) -> None: + self.write_c_files() + self.write_foreign_json() + if WRITE_WIDTHS: + self.write_char_widths_files() + + def write_c_files(self) -> None: + self._write_c_file() + self._write_h_file() + + def write_foreign_json(self) -> None: + for lang, language_chars in all_languages.items(): + fontdata = {} + for item in language_chars: + c = _normalize(item) + assert len(c) == 1 + self._load_char(c) + glyph = Glyph.from_face(self.face, c, self.shaveX) + glyph.print_metrics() + fontdata[c] = glyph.to_bytes(self.bpp).hex() + file = JSON_FONTS_DEST / f"font_{self.fontname}_{lang}.json" + json_content = json.dumps(fontdata, indent=2, ensure_ascii=False) + file.write_text(json_content + "\n") + def write_char_widths_files(self) -> None: + chars: set[str] = set() + widths: dict[str, int] = {} + + # "normal" ASCII characters + for i in range(MIN_GLYPH, MAX_GLYPH + 1): + c = chr(i) + chars.add(c) + # foreign language data + for _lang, lang_chars in all_languages.items(): + for c in lang_chars: + chars.add(c) + + for c in sorted(chars): + self._load_char(c) + glyph = Glyph.from_face(self.face, c, self.shaveX) + widths[c] = glyph.advance + + filename = f"font_widths_{self.fontname}.json" + with open(filename, "w", encoding="utf-8") as f: + json_content = json.dumps(widths, indent=2, ensure_ascii=False) + f.write(json_content + "\n") + + def _write_c_file(self) -> None: + with open(OUT_DIR / self._c_file_name, "wt") as f: + self._write_c_file_header(f) + self._write_c_file_content(f) + + def _write_c_file_content(self, f: TextIO) -> None: + # Write "normal" ASCII characters + for i in range(MIN_GLYPH, MAX_GLYPH + 1): + c = chr(i) + self._write_char_definition(f, c, i) + + # Write non-printable character + f.write("\n") + nonprintable = self._get_nonprintable_definition_line() f.write(nonprintable) + # Write array of all glyphs + f.write("\n") f.write( - "\nconst uint8_t * const Font_%s_%s_%d[%d + 1 - %d] = {\n" - % (name, style, size, MAX_GLYPH, MIN_GLYPH) + "const uint8_t * const Font_%s[%d + 1 - %d] = {\n" + % (self._name_style_size, MAX_GLYPH, MIN_GLYPH) ) for i in range(MIN_GLYPH, MAX_GLYPH + 1): - f.write(" Font_%s_%s_%d_glyph_%d,\n" % (name, style, size, i)) + f.write(" Font_%s_glyph_%d,\n" % (self._name_style_size, i)) f.write("};\n") - with open(OUT_DIR / f"font_{fontname}.h", "wt") as f: - f.write("#include \n\n") - f.write("#if TREZOR_FONT_BPP != %d\n" % bpp) - f.write("#error Wrong TREZOR_FONT_BPP (expected %d)\n" % bpp) - f.write("#endif\n") + def _write_char_definition(self, f: TextIO, c: str, i: int) -> None: + self._load_char(c) + glyph = Glyph.from_face(self.face, c, self.shaveX) + glyph.print_metrics() + definition_line = glyph.get_definition_line(self._name_style_size, self.bpp, i) + f.write(definition_line) - f.write("#define Font_%s_%s_%d_HEIGHT %d\n" % (name, style, size, size)) - f.write( - "#define Font_%s_%s_%d_MAX_HEIGHT %d\n" - % (name, style, size, font_ymax - font_ymin) - ) - f.write("#define Font_%s_%s_%d_BASELINE %d\n" % (name, style, size, -font_ymin)) + # Update mix/max metrics + yMin = glyph.bearingY - glyph.rows + yMax = yMin + glyph.rows + self.font_ymin = min(self.font_ymin, yMin) + self.font_ymax = max(self.font_ymax, yMax) + + def _write_c_file_header(self, f: TextIO) -> None: + f.write("#include \n\n") + f.write("// clang-format off\n\n") + f.write("// - the first two bytes are width and height of the glyph\n") f.write( - "extern const uint8_t* const Font_%s_%s_%d[%d + 1 - %d];\n" - % (name, style, size, MAX_GLYPH, MIN_GLYPH) + "// - the third, fourth and fifth bytes are advance, bearingX and bearingY of the horizontal metrics of the glyph\n" ) - f.write( - "extern const uint8_t Font_%s_%s_%d_glyph_nonprintable[];\n" - % (name, style, size) + f.write("// - the rest is packed %d-bit glyph data\n\n" % self.bpp) + + def _get_nonprintable_definition_line(self) -> str: + c = "?" + self._load_char(c) + glyph = Glyph.from_face(self.face, c, self.shaveX, inverse_colors=True) + return glyph.get_definition_line( + self._name_style_size, self.bpp, "nonprintable", static=False ) + def _load_char(self, c: str) -> None: + self.face.load_char(c, freetype.FT_LOAD_RENDER | freetype.FT_LOAD_TARGET_NORMAL) # type: ignore + + def _write_h_file(self) -> None: + with open(OUT_DIR / self._h_file_name, "wt") as f: + f.write("#include \n\n") + f.write("#if TREZOR_FONT_BPP != %d\n" % self.bpp) + f.write("#error Wrong TREZOR_FONT_BPP (expected %d)\n" % self.bpp) + f.write("#endif\n") + + f.write("#define Font_%s_HEIGHT %d\n" % (self._name_style_size, self.size)) + f.write( + "#define Font_%s_MAX_HEIGHT %d\n" + % (self._name_style_size, self.font_ymax - self.font_ymin) + ) + f.write( + "#define Font_%s_BASELINE %d\n" + % (self._name_style_size, -self.font_ymin) + ) + f.write( + "extern const uint8_t* const Font_%s[%d + 1 - %d];\n" + % (self._name_style_size, MAX_GLYPH, MIN_GLYPH) + ) + f.write( + "extern const uint8_t Font_%s_glyph_nonprintable[];\n" + % (self._name_style_size) + ) + + +if __name__ == "__main__": + if len(sys.argv) > 1 and "width" in sys.argv[1]: + WRITE_WIDTHS = True # type: ignore + + FaceProcessor("Roboto", "Regular", 20).write_files() + FaceProcessor("Roboto", "Bold", 20).write_files() -process_face("Roboto", "Regular", 20) -process_face("Roboto", "Bold", 20) + FaceProcessor("TTHoves", "Regular", 21, ext="otf").write_files() + FaceProcessor("TTHoves", "DemiBold", 21, ext="otf").write_files() + FaceProcessor("TTHoves", "Bold", 17, ext="otf").write_files() + FaceProcessor("RobotoMono", "Medium", 20).write_files() -process_face("TTHoves", "Regular", 21, ext="otf") -process_face("TTHoves", "DemiBold", 21, ext="otf") -process_face("TTHoves", "Bold", 17, ext="otf") -process_face("RobotoMono", "Medium", 20) + FaceProcessor("PixelOperator", "Regular", 8, bpp=1, shaveX=1).write_files() -process_face("PixelOperator", "Regular", 8, bpp=1, shaveX=1) -process_face("PixelOperator", "Bold", 8, bpp=1, shaveX=1) -process_face("PixelOperatorMono", "Regular", 8, bpp=1, shaveX=1) + FaceProcessor("PixelOperator", "Bold", 8, bpp=1, shaveX=1).write_files() + FaceProcessor("PixelOperatorMono", "Regular", 8, bpp=1, shaveX=1).write_files() -# For model R -process_face("Unifont", "Regular", 16, bpp=1, shaveX=1, ext="otf") -process_face("Unifont", "Bold", 16, bpp=1, shaveX=1, ext="otf") + # For model R + FaceProcessor("Unifont", "Regular", 16, bpp=1, shaveX=1, ext="otf").write_files() + # NOTE: Unifont Bold does not seem to have czech characters + FaceProcessor("Unifont", "Bold", 16, bpp=1, shaveX=1, ext="otf").write_files() diff --git a/core/tools/translations/.gitignore b/core/tools/translations/.gitignore new file mode 100644 index 000000000..a63be151f --- /dev/null +++ b/core/tools/translations/.gitignore @@ -0,0 +1,2 @@ +missing*.json +mapping*.json diff --git a/core/tools/translations/check_missing_rust.py b/core/tools/translations/check_missing_rust.py new file mode 100644 index 000000000..d8798e974 --- /dev/null +++ b/core/tools/translations/check_missing_rust.py @@ -0,0 +1,80 @@ +from __future__ import annotations + +import json +import re +from pathlib import Path + +HERE = Path(__file__).parent +CORE = HERE.parent.parent + +RUST_DIR = CORE / "embed" / "rust" / "src" / "ui" +MAPPING_FILE = HERE / "mapping_rust.json" + +IGNORE_FILES = ["cs.rs", "en.rs", "fr.rs", "general.rs", "fido_icons.rs"] +IGNORE_DIRS = ["bootloader"] + + +def extract_strings(file_path: Path) -> list[str]: + with open(file_path, "r") as file: + strings: list[str] = [] + line_starts_break = ["mod tests"] + line_starts_pause = ["fn trace"] + line_starts_continue = ["#[cfg", "//"] + in_line_continue = [ + "Err(", + "assert_if_debugging_ui", + "panic!(", + "value_error!(", + "unwrap!(", + ] + is_paused = False + for line in file: + if is_paused: + if line.startswith("}"): + is_paused = False + continue + if any([line.strip().startswith(start) for start in line_starts_break]): + break + if any([line.strip().startswith(start) for start in line_starts_pause]): + is_paused = True + continue + if any([line.strip().startswith(start) for start in line_starts_continue]): + continue + if any([substr in line for substr in in_line_continue]): + continue + if "//" in line: + line = line[: line.index("//")] + new = re.findall(r'"(.*?)"', line) + strings.extend(new) + return strings + + +def ignore_string(string: str) -> bool: + if string.endswith(".toif"): + return True + if string.startswith("model_"): + return True + if string.startswith("ui_"): + return True + if len(string) < 4: + return True + if "__" in string: + return True + return False + + +if __name__ == "__main__": + all_rust_files = list(RUST_DIR.glob("**/*.rs")) + all_strings: dict[str, list[str]] = {} + for file_path in all_rust_files: + if file_path.name in IGNORE_FILES: + continue + if any([ignore_dir in str(file_path) for ignore_dir in IGNORE_DIRS]): + continue + strings = extract_strings(file_path) + strings = list(set(strings)) + strings = [s for s in strings if s] + strings = [string for string in strings if not ignore_string(string)] + if strings: + all_strings[str(file_path)] = strings + MAPPING_FILE.write_text(json.dumps(all_strings, indent=4)) diff --git a/core/tools/translations/check_missing_upy.py b/core/tools/translations/check_missing_upy.py new file mode 100644 index 000000000..fe4469853 --- /dev/null +++ b/core/tools/translations/check_missing_upy.py @@ -0,0 +1,273 @@ +from __future__ import annotations + +import ast +import json +from pathlib import Path +from typing import Any + +HERE = Path(__file__).parent +CORE = HERE.parent.parent +CORE_SRC = CORE / "src" +KEY_PREFIX = "" + +MAPPING_FILE = HERE / "mapping_upy.json" +IGNORE_FILE = HERE / "ignore_upy.json" + +if IGNORE_FILE.exists(): + content = json.loads(IGNORE_FILE.read_text()) + IGNORE_SET: set[str] = set(content.keys()) +else: + IGNORE_SET = set() # type: ignore + + +def find_all_strings(filename: str | Path) -> list[str]: + with open(filename, "r") as file: + file_content = file.read() + + tree = ast.parse(file_content) + strings: list[str] = [] + + class StringVisitor(ast.NodeVisitor): + def visit_Str(self, node: ast.Str): + strings.append(node.s) + + def visit_JoinedStr(self, node: ast.JoinedStr): + for value in node.values: + if isinstance(value, ast.Str): + strings.append(value.s) + + visitor = StringVisitor() + visitor.visit(tree) + + return strings + + +def find_strings_to_ignore(filename: str | Path) -> list[str]: + with open(filename, "r") as file: + file_content = file.read() + + tree = ast.parse(file_content) + strings: list[str] = [] + + def ignore_func(func_name: str) -> bool: + if not func_name: + return True + substrs = ["Error", "Exception", "wire.", "log.", "ensure", "mem_trace"] + if any(substr in func_name for substr in substrs): + return True + if func_name in ( + "_log", + "info", + "warning", + "debug", + "Success", + "SdCardUnavailable", + "NotInitialized", + "ActionCancelled", + "UnexpectedMessage", + "NotEnoughFunds", + "Failure", + "PinCancelled", + "TypeVar", + "getattr", + "_validate_public_key", + "check_mem", + "halt", + "pack", + "mem_trace", + ): + return True + return False + + def get_final_attribute_name(node: ast.AST) -> str: + """Recursively extracts the final attribute name from a nested attribute expression.""" + if isinstance(node, ast.Name): + return node.id + elif isinstance(node, ast.Attribute): + return get_final_attribute_name(node.value) + "." + node.attr + return "" + + def include_all_strings(arg: ast.expr) -> None: + if isinstance(arg, ast.Str): + strings.append(arg.s) + elif isinstance(arg, ast.JoinedStr): + for value in arg.values: + if isinstance(value, ast.Str): + strings.append(value.s) + elif isinstance(value, ast.FormattedValue): + # This part is an expression inside an f-string + expr_as_str = ast.dump(value.value, annotate_fields=False) + strings.append(expr_as_str) + + class IgnoreStringVisitor(ast.NodeVisitor): + def visit_Call(self, node: ast.Call): + func_name = get_final_attribute_name(node.func) + if ignore_func(func_name): + for arg in node.args + [kw.value for kw in node.keywords]: + include_all_strings(arg) + # Continue visiting the children of this node (!!!Necessary!!!) + self.generic_visit(node) + + def visit_Assert(self, node: ast.Assert): + error_message = node.msg + if error_message: + include_all_strings(error_message) + self.generic_visit(node) + + def visit_Assign(self, node: ast.Assign): + ignore_variables = [ + "msg_wire", + "msg_type", + ] + for target in node.targets: + if isinstance(target, ast.Name) and target.id in ignore_variables: + value = node.value + include_all_strings(value) + self.generic_visit(node) + + def visit_FunctionDef(self, node: ast.FunctionDef): + for arg in node.args.args: + annotation = arg.annotation + if annotation: + include_all_strings(annotation) + return_annotation = node.returns + if return_annotation: + include_all_strings(return_annotation) + self.generic_visit(node) + + def visit_AsyncFunctionDef(self, node: ast.AsyncFunctionDef) -> Any: + for arg in node.args.args: + annotation = arg.annotation + if annotation: + include_all_strings(annotation) + return_annotation = node.returns + if return_annotation: + include_all_strings(return_annotation) + self.generic_visit(node) + + def visit_AnnAssign(self, node: ast.AnnAssign): + annotation = node.annotation + include_all_strings(annotation) + self.generic_visit(node) + + visitor = IgnoreStringVisitor() + visitor.visit(tree) + + # get all the top-level string comments + for node in tree.body: + if isinstance(node, ast.Expr) and isinstance( + node.value, (ast.Str, ast.JoinedStr) + ): + strings.append(node.value.s) # type: ignore + + return strings + + +def find_docstrings(filename: str | Path) -> list[str]: + with open(filename, "r") as file: + file_content = file.read() + + tree = ast.parse(file_content) + + functions = [ + f + for f in ast.walk(tree) + if isinstance(f, (ast.FunctionDef, ast.AsyncFunctionDef)) + ] + function_docs = [ast.get_docstring(f) for f in functions] + + classes = [c for c in ast.walk(tree) if isinstance(c, ast.ClassDef)] + class_docs = [ast.get_docstring(c) for c in classes] + + all_docstrings = function_docs + class_docs + + module_docstring = ast.get_docstring(tree) + if module_docstring: + all_docstrings.append(module_docstring) + + return [doc for doc in all_docstrings if doc] + + +def check_file(file: str | Path) -> list[str]: + all_strings = find_all_strings(file) + + def is_docstring(string: str) -> bool: + return "\n " in string or (string.startswith("\n") and string.endswith("\n")) + + all_strings = [string for string in all_strings if not is_docstring(string)] + ignore_strings = find_strings_to_ignore(file) + docstrings = find_docstrings(file) + + # Remove duplicates + all_strings = list(set(all_strings)) + ignore_strings = set(ignore_strings) + docstrings = set(docstrings) + + to_ignore = ignore_strings | docstrings + + # Remove strings that are passed to error and other non-translatable functions + return [s for s in all_strings if s not in to_ignore] + + +def check_file_report(file: str | Path) -> None: + all_files = {str(file): check_file(file)} + report_all_files(all_files) + + +def check_folder_resursive_report( + folder: str | Path, ignore_files: list[str] | None = None +) -> None: + if ignore_files is None: + ignore_files = [] + all_files: dict[str, list[str]] = {} + for file in Path(folder).rglob("*.py"): + if file.name in ignore_files: + continue + file_strings = check_file(file) + all_files[str(file)] = file_strings + report_all_files(all_files) + + +def report_all_files(all_files: dict[str, list[str]]) -> None: + str_mapping: dict[str, str] = {} + for _file, strings in all_files.items(): + for string in strings: + if "_" in string: + continue + str_id = ( + string.lower() + .strip() + .replace(" ", "_") + .replace("-", "_") + .replace(":", "") + .replace("?", "") + ) + if KEY_PREFIX: + str_id = f"{KEY_PREFIX}__{str_id}" + if str_id in IGNORE_SET: + continue + str_mapping[str_id] = string + MAPPING_FILE.write_text(json.dumps(str_mapping, indent=4)) + + +if __name__ == "__main__": + ignore_files = [ + "coininfo.py", + "nem_mosaics.py", + "knownapps.py", + "networks.py", + "tokens.py", + "all_modules.py", + "workflow_handlers.py", + "messages.py", + "errors.py", + ] + + # folder = CORE_SRC / "apps" + # folder = CORE_SRC / "trezor" + folder = CORE_SRC + check_folder_resursive_report(folder, ignore_files=ignore_files) + + # file = CORE_SRC / "trezor/ui/layouts/tt_v2/reset.py" + # KEY_PREFIX = "TR.reset" # type: ignore + # check_file_report(file) diff --git a/core/tools/translations/flatten_json.py b/core/tools/translations/flatten_json.py new file mode 100644 index 000000000..c306b6f90 --- /dev/null +++ b/core/tools/translations/flatten_json.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +import json + +from helpers import ALL_LANGUAGES, TRANSLATIONS_DIR + + +def flatten_data(data: dict[str, dict[str, str]]) -> dict[str, str]: + items: list[tuple[str, str]] = [] + for section_name, section in data.items(): + for k, v in section.items(): + name = f"{section_name}__{k}" + items.append((name, v)) + items.sort(key=lambda x: x[0]) + return dict(items) + + +for lang in ALL_LANGUAGES: + lang_file = TRANSLATIONS_DIR / f"{lang}.json" + lang_data = json.loads(lang_file.read_text()) + translations_data = lang_data["translations"] + lang_data["translations"] = flatten_data(translations_data) + + lang_file.write_text( + json.dumps(lang_data, indent=2, sort_keys=True, ensure_ascii=False) + "\n" + ) diff --git a/core/tools/translations/font_widths.json b/core/tools/translations/font_widths.json new file mode 100644 index 000000000..4dda552cb --- /dev/null +++ b/core/tools/translations/font_widths.json @@ -0,0 +1,666 @@ +{ + "TT": { + "normal": { + " ": 5, + "!": 5, + "\"": 7, + "#": 14, + "$": 13, + "%": 16, + "&": 13, + "'": 4, + "(": 7, + ")": 7, + "*": 10, + "+": 11, + ",": 4, + "-": 9, + ".": 4, + "/": 7, + "0": 14, + "1": 7, + "2": 11, + "3": 12, + "4": 11, + "5": 12, + "6": 12, + "7": 10, + "8": 12, + "9": 12, + ":": 4, + ";": 4, + "<": 11, + "=": 11, + ">": 11, + "?": 11, + "@": 19, + "A": 14, + "B": 13, + "C": 15, + "D": 15, + "E": 12, + "F": 12, + "G": 16, + "H": 15, + "I": 5, + "J": 8, + "K": 12, + "L": 11, + "M": 19, + "N": 15, + "O": 16, + "P": 13, + "Q": 16, + "R": 13, + "S": 13, + "T": 12, + "U": 14, + "V": 14, + "W": 21, + "X": 13, + "Y": 12, + "Z": 12, + "[": 7, + "\\": 7, + "]": 7, + "^": 9, + "_": 9, + "`": 5, + "a": 11, + "b": 12, + "c": 11, + "d": 12, + "e": 12, + "f": 7, + "g": 12, + "h": 12, + "i": 5, + "j": 6, + "k": 10, + "l": 5, + "m": 18, + "n": 12, + "o": 12, + "p": 12, + "q": 12, + "r": 7, + "s": 10, + "t": 7, + "u": 12, + "v": 11, + "w": 17, + "x": 10, + "y": 10, + "z": 9, + "{": 7, + "|": 7, + "}": 7, + "~": 12, + "¿": 11, + "À": 14, + "Á": 14, + "Â": 14, + "Ä": 14, + "Æ": 20, + "Ç": 15, + "È": 12, + "É": 12, + "Ê": 12, + "Ë": 12, + "Í": 5, + "Î": 6, + "Ï": 6, + "Ñ": 15, + "Ó": 16, + "Ô": 16, + "Ö": 16, + "Ù": 14, + "Ú": 14, + "Û": 14, + "Ü": 14, + "Ý": 12, + "ß": 12, + "à": 11, + "á": 11, + "â": 11, + "ä": 11, + "æ": 19, + "ç": 11, + "è": 12, + "é": 12, + "ê": 12, + "ë": 12, + "í": 5, + "î": 6, + "ï": 6, + "ñ": 12, + "ó": 12, + "ô": 12, + "ö": 12, + "ù": 12, + "ú": 12, + "û": 12, + "ü": 12, + "ý": 10, + "ÿ": 10, + "Č": 15, + "č": 11, + "Ď": 15, + "ď": 13, + "Ě": 12, + "ě": 12, + "Ň": 15, + "ň": 12, + "Œ": 23, + "œ": 20, + "Ř": 13, + "ř": 7, + "Š": 13, + "š": 10, + "Ť": 12, + "ť": 8, + "Ů": 14, + "ů": 12, + "Ÿ": 12, + "Ž": 12, + "ž": 9 + }, + "bold": { + " ": 5, + "!": 5, + "\"": 8, + "#": 13, + "$": 11, + "%": 14, + "&": 11, + "'": 4, + "(": 7, + ")": 7, + "*": 8, + "+": 10, + ",": 5, + "-": 8, + ".": 5, + "/": 7, + "0": 12, + "1": 7, + "2": 10, + "3": 10, + "4": 10, + "5": 10, + "6": 10, + "7": 9, + "8": 10, + "9": 10, + ":": 5, + ";": 5, + "<": 10, + "=": 10, + ">": 10, + "?": 9, + "@": 16, + "A": 13, + "B": 11, + "C": 12, + "D": 12, + "E": 10, + "F": 10, + "G": 13, + "H": 12, + "I": 5, + "J": 7, + "K": 11, + "L": 10, + "M": 16, + "N": 13, + "O": 13, + "P": 11, + "Q": 13, + "R": 12, + "S": 11, + "T": 10, + "U": 12, + "V": 12, + "W": 17, + "X": 12, + "Y": 12, + "Z": 11, + "[": 7, + "\\": 7, + "]": 7, + "^": 8, + "_": 8, + "`": 5, + "a": 10, + "b": 11, + "c": 10, + "d": 11, + "e": 10, + "f": 7, + "g": 10, + "h": 10, + "i": 5, + "j": 6, + "k": 9, + "l": 5, + "m": 15, + "n": 10, + "o": 10, + "p": 11, + "q": 11, + "r": 7, + "s": 9, + "t": 7, + "u": 10, + "v": 9, + "w": 14, + "x": 10, + "y": 10, + "z": 9, + "{": 7, + "|": 7, + "}": 7, + "~": 10, + "¿": 9, + "À": 13, + "Á": 13, + "Â": 13, + "Ä": 13, + "Æ": 17, + "Ç": 12, + "È": 10, + "É": 10, + "Ê": 10, + "Ë": 10, + "Í": 5, + "Î": 6, + "Ï": 6, + "Ñ": 13, + "Ó": 13, + "Ô": 13, + "Ö": 13, + "Ù": 12, + "Ú": 12, + "Û": 12, + "Ü": 12, + "Ý": 12, + "ß": 10, + "à": 10, + "á": 10, + "â": 10, + "ä": 10, + "æ": 15, + "ç": 10, + "è": 10, + "é": 10, + "ê": 10, + "ë": 10, + "í": 5, + "î": 6, + "ï": 6, + "ñ": 10, + "ó": 10, + "ô": 10, + "ö": 10, + "ù": 10, + "ú": 10, + "û": 10, + "ü": 10, + "ý": 10, + "ÿ": 10, + "Č": 12, + "č": 10, + "Ď": 12, + "ď": 13, + "Ě": 10, + "ě": 10, + "Ň": 13, + "ň": 10, + "Œ": 18, + "œ": 16, + "Ř": 12, + "ř": 7, + "Š": 11, + "š": 9, + "Ť": 10, + "ť": 9, + "Ů": 12, + "ů": 10, + "Ÿ": 12, + "Ž": 11, + "ž": 9 + } + }, + "TS3": { + "normal": { + " ": 4, + "!": 4, + "\"": 6, + "#": 7, + "$": 6, + "%": 8, + "&": 6, + "'": 4, + "(": 6, + ")": 6, + "*": 6, + "+": 6, + ",": 4, + "-": 5, + ".": 4, + "/": 4, + "0": 6, + "1": 6, + "2": 6, + "3": 6, + "4": 6, + "5": 6, + "6": 6, + "7": 6, + "8": 6, + "9": 6, + ":": 4, + ";": 4, + "<": 4, + "=": 5, + ">": 4, + "?": 6, + "@": 8, + "A": 6, + "B": 6, + "C": 6, + "D": 6, + "E": 6, + "F": 6, + "G": 6, + "H": 6, + "I": 4, + "J": 6, + "K": 6, + "L": 6, + "M": 8, + "N": 6, + "O": 6, + "P": 6, + "Q": 6, + "R": 6, + "S": 6, + "T": 6, + "U": 6, + "V": 6, + "W": 8, + "X": 6, + "Y": 6, + "Z": 6, + "[": 6, + "\\": 4, + "]": 6, + "^": 6, + "_": 4, + "`": 4, + "a": 6, + "b": 6, + "c": 6, + "d": 6, + "e": 6, + "f": 5, + "g": 6, + "h": 6, + "i": 4, + "j": 6, + "k": 6, + "l": 4, + "m": 8, + "n": 6, + "o": 6, + "p": 6, + "q": 6, + "r": 6, + "s": 6, + "t": 5, + "u": 6, + "v": 6, + "w": 8, + "x": 6, + "y": 6, + "z": 6, + "{": 6, + "|": 4, + "}": 6, + "~": 7, + "¿": 6, + "À": 6, + "Á": 6, + "Â": 6, + "Ä": 6, + "Æ": 10, + "Ç": 6, + "È": 6, + "É": 6, + "Ê": 6, + "Ë": 6, + "Í": 4, + "Î": 4, + "Ï": 4, + "Ñ": 6, + "Ó": 6, + "Ô": 6, + "Ö": 6, + "Ù": 6, + "Ú": 6, + "Û": 6, + "Ü": 6, + "Ý": 6, + "ß": 6, + "à": 6, + "á": 6, + "â": 6, + "ä": 6, + "æ": 10, + "ç": 6, + "è": 6, + "é": 6, + "ê": 6, + "ë": 6, + "í": 4, + "î": 4, + "ï": 4, + "ñ": 6, + "ó": 6, + "ô": 6, + "ö": 6, + "ù": 6, + "ú": 6, + "û": 6, + "ü": 6, + "ý": 6, + "ÿ": 6, + "Č": 6, + "č": 6, + "Ď": 6, + "ď": 11, + "Ě": 6, + "ě": 6, + "Ň": 6, + "ň": 6, + "Œ": 10, + "œ": 10, + "Ř": 6, + "ř": 6, + "Š": 6, + "š": 6, + "Ť": 6, + "ť": 10, + "Ů": 6, + "ů": 6, + "Ÿ": 6, + "Ž": 6, + "ž": 6 + }, + "bold": { + " ": 4, + "!": 5, + "\"": 6, + "#": 8, + "$": 8, + "%": 13, + "&": 7, + "'": 5, + "(": 7, + ")": 7, + "*": 6, + "+": 7, + ",": 5, + "-": 5, + ".": 5, + "/": 5, + "0": 7, + "1": 7, + "2": 7, + "3": 7, + "4": 7, + "5": 7, + "6": 7, + "7": 7, + "8": 7, + "9": 7, + ":": 5, + ";": 5, + "<": 5, + "=": 5, + ">": 5, + "?": 7, + "@": 8, + "A": 7, + "B": 7, + "C": 7, + "D": 7, + "E": 7, + "F": 7, + "G": 7, + "H": 7, + "I": 5, + "J": 7, + "K": 7, + "L": 7, + "M": 8, + "N": 7, + "O": 7, + "P": 7, + "Q": 7, + "R": 7, + "S": 7, + "T": 7, + "U": 7, + "V": 7, + "W": 8, + "X": 7, + "Y": 7, + "Z": 7, + "[": 7, + "\\": 5, + "]": 6, + "^": 7, + "_": 4, + "`": 5, + "a": 7, + "b": 7, + "c": 7, + "d": 7, + "e": 7, + "f": 6, + "g": 7, + "h": 7, + "i": 5, + "j": 7, + "k": 7, + "l": 5, + "m": 8, + "n": 7, + "o": 7, + "p": 7, + "q": 7, + "r": 7, + "s": 7, + "t": 6, + "u": 7, + "v": 7, + "w": 8, + "x": 7, + "y": 7, + "z": 7, + "{": 6, + "|": 5, + "}": 6, + "~": 8, + "¿": 7, + "À": 7, + "Á": 7, + "Â": 7, + "Ä": 7, + "Æ": 11, + "Ç": 7, + "È": 7, + "É": 7, + "Ê": 7, + "Ë": 7, + "Í": 5, + "Î": 5, + "Ï": 5, + "Ñ": 7, + "Ó": 7, + "Ô": 7, + "Ö": 7, + "Ù": 7, + "Ú": 7, + "Û": 7, + "Ü": 7, + "Ý": 7, + "ß": 7, + "à": 7, + "á": 7, + "â": 7, + "ä": 7, + "æ": 11, + "ç": 7, + "è": 7, + "é": 7, + "ê": 7, + "ë": 7, + "í": 5, + "î": 5, + "ï": 5, + "ñ": 7, + "ó": 7, + "ô": 7, + "ö": 7, + "ù": 7, + "ú": 7, + "û": 7, + "ü": 7, + "ý": 7, + "ÿ": 7, + "Č": 7, + "č": 7, + "Ď": 7, + "ď": 13, + "Ě": 7, + "ě": 7, + "Ň": 7, + "ň": 7, + "Œ": 11, + "œ": 11, + "Ř": 7, + "ř": 7, + "Š": 7, + "š": 7, + "Ť": 7, + "ť": 11, + "Ů": 7, + "ů": 7, + "Ÿ": 7, + "Ž": 7, + "ž": 7 + } + } +} diff --git a/core/tools/translations/helpers.py b/core/tools/translations/helpers.py new file mode 100644 index 000000000..f54109506 --- /dev/null +++ b/core/tools/translations/helpers.py @@ -0,0 +1,10 @@ +from pathlib import Path + +HERE = Path(__file__).parent +CORE = HERE.parent.parent + +TRANSLATIONS_DIR = CORE / "translations" + +ENGLISH_LANG = "en" +FOREIGN_LANGUAGES = ["cs", "de", "es", "fr"] +ALL_LANGUAGES = [ENGLISH_LANG] + FOREIGN_LANGUAGES diff --git a/core/tools/translations/rules.json b/core/tools/translations/rules.json new file mode 100644 index 000000000..dbb11e5e5 --- /dev/null +++ b/core/tools/translations/rules.json @@ -0,0 +1,830 @@ +{ + "addr_mismatch__contact_support_at": "text,2", + "addr_mismatch__key_mismatch": "text,1", + "addr_mismatch__mismatch": "text,1", + "addr_mismatch__support_url": "text,1", + "addr_mismatch__wrong_derivation_path": "text,2", + "addr_mismatch__xpub_mismatch": "text,1", + "address__public_key": "text,1", + "address__title_cosigner": "title,1", + "address__title_receive_address": "title,1", + "address__title_yours": "title,1", + "address_details__derivation_path": "text,1", + "address_details__title_receive_address": "title,1", + "address_details__title_receiving_to": "title,1", + "authenticate__confirm_template": "text,3", + "authenticate__header": "text,1", + "auto_lock__change_template": "text,3", + "auto_lock__title": "title,1", + "backup__can_back_up_anytime": "text,3", + "backup__it_should_be_backed_up": "text,2", + "backup__it_should_be_backed_up_now": "text,2", + "backup__new_wallet_created": "text,2", + "backup__new_wallet_successfully_created": "text,2", + "backup__recover_anytime": "text,3", + "backup__title_backup_wallet": "title,1", + "backup__title_skip": "title,1", + "backup__want_to_skip": "text,3", + "binance__buy": "text,1", + "binance__confirm_cancel": "text,1", + "binance__confirm_input": "text,1", + "binance__confirm_order": "text,1", + "binance__confirm_output": "text,1", + "binance__order_id": "text,1", + "binance__pair": "text,1", + "binance__price": "text,1", + "binance__quantity": "text,1", + "binance__sell": "text,1", + "binance__sender_address": "text,1", + "binance__side": "text,1", + "bitcoin__commitment_data": "text,1", + "bitcoin__confirm_locktime": "text,1", + "bitcoin__create_proof_of_ownership": "text,2", + "bitcoin__high_mining_fee_template": "text,3", + "bitcoin__locktime_no_effect": "text,2", + "bitcoin__locktime_set_to": "text,1", + "bitcoin__locktime_set_to_blockheight": "text,2", + "bitcoin__lot_of_change_outputs": "text,3", + "bitcoin__multiple_accounts": "text,1", + "bitcoin__new_fee_rate": "text,1", + "bitcoin__simple_send_of": "text,1", + "bitcoin__ticket_amount": "text,1", + "bitcoin__title_confirm_details": "title,1", + "bitcoin__title_finalize_transaction": "title,2", + "bitcoin__title_high_mining_fee": "title,1", + "bitcoin__title_meld_transaction": "title,1", + "bitcoin__title_modify_amount": "title,1", + "bitcoin__title_payjoin": "title,1", + "bitcoin__title_proof_of_ownership": "title,1", + "bitcoin__title_purchase_ticket": "title,1", + "bitcoin__title_update_transaction": "title,1", + "bitcoin__unknown_path": "text,1", + "bitcoin__unknown_transaction": "text,1", + "bitcoin__unusually_high_fee": "text,2", + "bitcoin__unverified_external_inputs": "text,3", + "bitcoin__valid_signature": "text,1", + "bitcoin__voting_rights": "text,1", + "buttons__abort": "button,1", + "buttons__access": "button,1", + "buttons__again": "button,1", + "buttons__allow": "button,1", + "buttons__back": "button,1", + "buttons__back_up": "button,1", + "buttons__cancel": "button,1", + "buttons__change": "button,1", + "buttons__check": "button,1", + "buttons__check_again": "button,1", + "buttons__close": "button,1", + "buttons__confirm": "button,1", + "buttons__continue": "button,1", + "buttons__details": "button,1", + "buttons__enable": "button,1", + "buttons__enter": "button,1", + "buttons__enter_share": "button,1", + "buttons__export": "button,1", + "buttons__format": "button,1", + "buttons__go_back": "button,1", + "buttons__hold_to_confirm": "button,1", + "buttons__info": "button,1", + "buttons__install": "button,1", + "buttons__more_info": "button,1", + "buttons__ok_i_understand": "button,1", + "buttons__purchase": "button,1", + "buttons__quit": "button,1", + "buttons__restart": "button,1", + "buttons__retry": "button,1", + "buttons__select": "button,1", + "buttons__set": "button,1", + "buttons__show_all": "button,1", + "buttons__show_details": "button,1", + "buttons__show_words": "button,1", + "buttons__skip": "button,1", + "buttons__try_again": "button,1", + "buttons__turn_off": "button,1", + "buttons__turn_on": "button,1", + "cardano__addr_base": "text,1", + "cardano__addr_enterprise": "text,1", + "cardano__addr_legacy": "text,1", + "cardano__addr_pointer": "text,1", + "cardano__addr_reward": "text,1", + "cardano__address_no_staking": "text,2", + "cardano__amount_burned_decimals_unknown": "text,2", + "cardano__amount_minted_decimals_unknown": "text,2", + "cardano__amount_sent_decimals_unknown": "text,2", + "cardano__anonymous_pool": "text,2", + "cardano__asset_fingerprint": "text,1", + "cardano__auxiliary_data_hash": "text,1", + "cardano__block": "text,1", + "cardano__catalyst": "text,1", + "cardano__certificate": "text,1", + "cardano__change_output": "text,1", + "cardano__check_all_items": "text,2", + "cardano__choose_level_of_details": "text,1", + "cardano__collateral_input_id": "text,1", + "cardano__collateral_input_index": "text,1", + "cardano__collateral_output_contains_tokens": "text,2", + "cardano__collateral_return": "text,1", + "cardano__confirm": "text,1", + "cardano__confirm_signing_stake_pool": "text,3", + "cardano__confirm_transaction": "text,1", + "cardano__confirming_a_multisig_transaction": "text,2", + "cardano__confirming_a_plutus_transaction": "text,2", + "cardano__confirming_pool_registration": "text,2", + "cardano__confirming_transction": "text,2", + "cardano__cost": "text,1", + "cardano__credential_mismatch": "text,3", + "cardano__datum_hash": "text,1", + "cardano__delegating_to": "text,1", + "cardano__for_account_and_index_template": "text,2", + "cardano__for_account_template": "text,1", + "cardano__for_key_hash": "text,1", + "cardano__for_script": "text,1", + "cardano__inline_datum": "text,1", + "cardano__input_id": "text,1", + "cardano__input_index": "text,1", + "cardano__intro_text_change": "text,3", + "cardano__intro_text_owned_by_device": "text,3", + "cardano__intro_text_registration_payment": "text,4", + "cardano__key_hash": "text,1", + "cardano__margin": "text,1", + "cardano__multisig_path": "text,1", + "cardano__nested_scripts_template": "text,2", + "cardano__network": "text,1", + "cardano__no_output_tx": "text,3", + "cardano__nonce": "text,1", + "cardano__other": "text,1", + "cardano__path": "text,1", + "cardano__pledge": "text,1", + "cardano__pointer": "text,1", + "cardano__policy_id": "text,1", + "cardano__pool_metadata_hash": "text,1", + "cardano__pool_metadata_url": "text,1", + "cardano__pool_owner": "text,1", + "cardano__pool_reward_account": "text,1", + "cardano__reference_input_id": "text,1", + "cardano__reference_input_index": "text,1", + "cardano__reference_script": "text,1", + "cardano__required_signer": "text,1", + "cardano__reward": "text,1", + "cardano__reward_address": "text,2", + "cardano__reward_eligibility_warning": "text,4", + "cardano__rewards_go_to": "text,1", + "cardano__script": "text,1", + "cardano__script_all": "text,1", + "cardano__script_any": "text,1", + "cardano__script_data_hash": "text,1", + "cardano__script_hash": "text,1", + "cardano__script_invalid_before": "text,1", + "cardano__script_invalid_hereafter": "text,1", + "cardano__script_key": "text,1", + "cardano__script_n_of_k": "text,1", + "cardano__script_reward": "text,1", + "cardano__sending": "text,1", + "cardano__show_simple": "text,1", + "cardano__sign_tx_path_template": "text,2", + "cardano__stake_delegation": "text,1", + "cardano__stake_deregistration": "text,2", + "cardano__stake_pool_registration": "text,1", + "cardano__stake_pool_registration_pool_id": "text,2", + "cardano__stake_registration": "text,1", + "cardano__staking_key_for_account": "text,1", + "cardano__to_pool": "text,1", + "cardano__token_minting_path": "text,1", + "cardano__total_collateral": "text,1", + "cardano__transaction": "text,1", + "cardano__transaction_contains_minting_or_burning": "text,3", + "cardano__transaction_contains_script_address_no_datum": "text,5", + "cardano__transaction_fee": "text,1", + "cardano__transaction_id": "text,1", + "cardano__transaction_no_collateral_input": "text,4", + "cardano__transaction_no_script_data_hash": "text,4", + "cardano__transaction_output_contains_tokens": "text,3", + "cardano__ttl": "text,1", + "cardano__unknown_collateral_amount": "text,2", + "cardano__unusual_path": "text,1", + "cardano__valid_since": "text,1", + "cardano__verify_script": "text,1", + "cardano__vote_key_registration": "text,2", + "cardano__vote_public_key": "text,1", + "cardano__voting_purpose": "text,1", + "cardano__warning": "text,1", + "cardano__weight": "text,1", + "cardano__withdrawal_for_address_template": "text,2", + "cardano__x_of_y_signatures_template": "text,2", + "coinjoin__access_account": "text,3", + "coinjoin__do_not_disconnect": "text,2", + "coinjoin__max_mining_fee": "text,1", + "coinjoin__max_rounds": "text,1", + "coinjoin__title": "title,1", + "coinjoin__title_do_not_disconnect": "title,2", + "coinjoin__title_progress": "title,1", + "coinjoin__waiting_for_others": "text,1", + "confirm_total__fee_rate": "text,1", + "confirm_total__sending_from_account": "text,1", + "confirm_total__title_fee": "title,1", + "confirm_total__title_sending_from": "title,1", + "debug__loading_seed": "text,1", + "debug__loading_seed_not_recommended": "text,2", + "device_name__change_template": "text,3", + "device_name__title": "title,1", + "entropy__send": "text,2", + "entropy__title": "title,1", + "entropy__title_confirm": "title,1", + "eos__about_to_sign_template": "text,2", + "eos__action_name": "text,1", + "eos__arbitrary_data": "text,1", + "eos__buy_ram": "text,1", + "eos__bytes": "text,1", + "eos__cancel_vote": "text,1", + "eos__checksum": "text,1", + "eos__code": "text,1", + "eos__contract": "text,1", + "eos__cpu": "text,1", + "eos__creator": "text,1", + "eos__delegate": "text,1", + "eos__delete_auth": "text,1", + "eos__from": "text,1", + "eos__link_auth": "text,1", + "eos__memo": "text,1", + "eos__name": "text,1", + "eos__net": "text,1", + "eos__new_account": "text,1", + "eos__owner": "text,1", + "eos__parent": "text,1", + "eos__payer": "text,1", + "eos__permission": "text,1", + "eos__proxy": "text,1", + "eos__receiver": "text,1", + "eos__refund": "text,1", + "eos__requirement": "text,1", + "eos__sell_ram": "text,1", + "eos__sender": "text,1", + "eos__sign_transaction": "text,1", + "eos__threshold": "text,1", + "eos__to": "text,1", + "eos__transfer": "text,1", + "eos__type": "text,1", + "eos__undelegate": "text,1", + "eos__unlink_auth": "text,1", + "eos__update_auth": "text,1", + "eos__vote_for_producers": "text,1", + "eos__vote_for_proxy": "text,1", + "eos__voter": "text,1", + "ethereum__amount_sent": "text,1", + "ethereum__contract": "text,1", + "ethereum__data_size_template": "text,1", + "ethereum__gas_limit": "text,1", + "ethereum__gas_price": "text,1", + "ethereum__max_gas_price": "text,1", + "ethereum__name_and_version": "text,1", + "ethereum__new_contract": "text,1", + "ethereum__no_message_field": "text,1", + "ethereum__priority_fee": "text,1", + "ethereum__show_full_array": "text,1", + "ethereum__show_full_domain": "text,1", + "ethereum__show_full_message": "text,1", + "ethereum__show_full_struct": "text,1", + "ethereum__sign_eip712": "text,2", + "ethereum__title_confirm_data": "title,1", + "ethereum__title_confirm_domain": "title,1", + "ethereum__title_confirm_message": "title,1", + "ethereum__title_confirm_struct": "title,1", + "ethereum__title_confirm_typed_data": "title,1", + "ethereum__title_signing_address": "title,1", + "ethereum__units_template": "text,1", + "ethereum__unknown_token": "text,1", + "ethereum__valid_signature": "text,1", + "experimental_mode__enable": "text,2", + "experimental_mode__only_for_dev": "text,2", + "experimental_mode__title": "title,1", + "fido__already_registered": "text,1", + "fido__device_already_registered": "text,3", + "fido__device_already_registered_with_template": "text,2", + "fido__device_not_registered": "text,3", + "fido__does_not_belong": "text,4", + "fido__erase_credentials": "text,1", + "fido__export_credentials": "text,4", + "fido__not_registered": "text,1", + "fido__not_registered_with_template": "text,3", + "fido__please_enable_pin_protection": "text,2", + "fido__title_authenticate": "title,1", + "fido__title_import_credential": "title,1", + "fido__title_list_credentials": "title,1", + "fido__title_register": "title,1", + "fido__title_remove_credential": "title,1", + "fido__title_reset": "title,1", + "fido__title_u2f_auth": "title,1", + "fido__title_u2f_register": "title,1", + "fido__title_verify_user": "title,1", + "fido__unable_to_verify_user": "text,2", + "fido__wanna_erase_credentials": "text,2", + "firmware_update__title": "title,1", + "firmware_update__title_fingerprint": "title,1", + "homescreen__click_to_connect": "text,1", + "homescreen__click_to_unlock": "text,1", + "homescreen__title_backup_failed": "title,1", + "homescreen__title_backup_needed": "title,1", + "homescreen__title_coinjoin_authorized": "title,1", + "homescreen__title_experimental_mode": "title,1", + "homescreen__title_hold_to_lock": "title,1", + "homescreen__title_no_usb_connection": "title,1", + "homescreen__title_pin_not_set": "title,1", + "homescreen__title_seedless": "title,1", + "homescreen__title_set": "title,1", + "inputs__back": "text,1", + "inputs__cancel": "text,1", + "inputs__delete": "text,1", + "inputs__enter": "text,1", + "inputs__return": "text,1", + "inputs__show": "text,1", + "inputs__space": "text,1", + "joint__title": "title,1", + "joint__to_the_total_amount": "text,2", + "joint__you_are_contributing": "text,2", + "lockscreen__tap_to_connect": "text,1", + "lockscreen__tap_to_unlock": "text,1", + "lockscreen__title_locked": "title,1", + "lockscreen__title_not_connected": "title,1", + "misc__decrypt_value": "text,1", + "misc__encrypt_value": "text,1", + "misc__title_suite_labeling": "title,1", + "modify_amount__decrease_amount": "text,1", + "modify_amount__increase_amount": "text,1", + "modify_amount__new_amount": "text,1", + "modify_amount__title": "title,1", + "modify_fee__decrease_fee": "text,1", + "modify_fee__fee_rate": "text,1", + "modify_fee__increase_fee": "text,1", + "modify_fee__new_transaction_fee": "text,1", + "modify_fee__no_change": "text,1", + "modify_fee__title": "title,1", + "modify_fee__transaction_fee": "text,1", + "monero__confirm_export": "text,1", + "monero__confirm_ki_sync": "text,1", + "monero__confirm_refresh": "text,1", + "monero__confirm_unlock_time": "text,1", + "monero__hashing_inputs": "text,1", + "monero__payment_id": "text,1", + "monero__postprocessing": "text,1", + "monero__processing": "text,1", + "monero__processing_inputs": "text,1", + "monero__processing_outputs": "text,1", + "monero__signing": "text,1", + "monero__signing_inputs": "text,1", + "monero__unlock_time_set_template": "text,2", + "monero__wanna_export_tx_der": "text,3", + "monero__wanna_export_tx_key": "text,2", + "monero__wanna_export_watchkey": "text,3", + "monero__wanna_start_refresh": "text,2", + "monero__wanna_sync_key_images": "text,2", + "nem__absolute": "text,1", + "nem__activate": "text,1", + "nem__add": "text,1", + "nem__confirm_action": "text,1", + "nem__confirm_address": "text,1", + "nem__confirm_creation_fee": "text,1", + "nem__confirm_mosaic": "text,1", + "nem__confirm_multisig_fee": "text,1", + "nem__confirm_namespace": "text,1", + "nem__confirm_payload": "text,1", + "nem__confirm_properties": "text,1", + "nem__confirm_rental_fee": "text,1", + "nem__confirm_transfer_of": "text,1", + "nem__convert_account_to_multisig": "text,2", + "nem__cosign_transaction_for": "text,1", + "nem__cosignatory": "text,1", + "nem__create_mosaic": "text,1", + "nem__create_namespace": "text,1", + "nem__deactivate": "text,1", + "nem__decrease": "text,1", + "nem__description": "text,1", + "nem__divisibility_and_levy_cannot_be_shown": "text,3", + "nem__encrypted": "text,1", + "nem__final_confirm": "text,1", + "nem__immutable": "text,1", + "nem__increase": "text,1", + "nem__initial_supply": "text,1", + "nem__initiate_transaction_for": "text,1", + "nem__levy_divisibility": "text,1", + "nem__levy_fee": "text,1", + "nem__levy_fee_of": "text,2", + "nem__levy_mosaic": "text,1", + "nem__levy_namespace": "text,1", + "nem__levy_recipient": "text,1", + "nem__levy_type": "text,1", + "nem__modify_supply_for": "text,1", + "nem__modify_the_number_of_cosignatories_by": "text,2", + "nem__mutable": "text,1", + "nem__of": "text,1", + "nem__percentile": "text,1", + "nem__raw_units_template": "text,1", + "nem__remote_harvesting": "text,1", + "nem__remove": "text,1", + "nem__set_minimum_cosignatories_to": "text,2", + "nem__sign_tx_fee_template": "text,3", + "nem__supply_change": "text,1", + "nem__supply_units_template": "text,2", + "nem__transferable": "text,1", + "nem__under_namespace": "text,1", + "nem__unencrypted": "text,1", + "nem__unknown_mosaic": "text,1", + "passphrase__access_hidden_wallet": "text,1", + "passphrase__always_on_device": "text,4", + "passphrase__from_host_not_shown": "text,5", + "passphrase__hidden_wallet": "title,1", + "passphrase__hide": "text,3", + "passphrase__next_screen_will_show_passphrase": "text,3", + "passphrase__please_enter": "text,2", + "passphrase__revoke_on_device": "text,3", + "passphrase__title_confirm": "title,1", + "passphrase__title_enter": "title,1", + "passphrase__title_hide": "title,1", + "passphrase__title_settings": "title,1", + "passphrase__title_source": "title,1", + "passphrase__turn_off": "text,3", + "passphrase__turn_on": "text,3", + "pin__change": "text,2", + "pin__changed": "text,2", + "pin__cursor_will_change": "text,4", + "pin__diff_from_wipe_code": "text,3", + "pin__disabled": "text,3", + "pin__enabled": "text,3", + "pin__enter": "text,1", + "pin__enter_new": "text,1", + "pin__entered_not_valid": "text,3", + "pin__info": "text,3", + "pin__invalid_pin": "text,1", + "pin__last_attempt": "text,1", + "pin__mismatch": "text,2", + "pin__pin_mismatch": "text,1", + "pin__please_check_again": "text,2", + "pin__reenter_new": "text,1", + "pin__reenter_to_confirm": "text,3", + "pin__should_be_long": "text,3", + "pin__title_check_pin": "title,1", + "pin__title_settings": "title,1", + "pin__title_wrong_pin": "title,1", + "pin__tries_left": "text,1", + "pin__turn_off": "text,3", + "pin__turn_on": "text,2", + "pin__wrong_pin": "text,1", + "plurals__contains_x_keys": "text,1", + "plurals__lock_after_x_hours": "text,1", + "plurals__lock_after_x_milliseconds": "text,2", + "plurals__lock_after_x_minutes": "text,1", + "plurals__lock_after_x_seconds": "text,1", + "plurals__sign_x_actions": "text,1", + "plurals__transaction_of_x_operations": "text,1", + "plurals__x_groups_needed": "text,1", + "plurals__x_shares_needed": "text,1", + "progress__authenticity_check": "text,1", + "progress__done": "text,1", + "progress__loading_transaction": "text,1", + "progress__one_second_left": "text,1", + "progress__please_wait": "text,1", + "progress__processing": "text,1", + "progress__refreshing": "text,1", + "progress__signing_transaction": "text,1", + "progress__syncing": "text,1", + "progress__x_seconds_left_template": "text,1", + "reboot_to_bootloader__restart": "text,3", + "reboot_to_bootloader__title": "title,1", + "reboot_to_bootloader__version_by_template": "text,2", + "recovery__cancel_dry_run": "text,2", + "recovery__check_dry_run": "text,2", + "recovery__cursor_will_change": "text,4", + "recovery__dry_run_bip39_valid_match": "text,4", + "recovery__dry_run_bip39_valid_mismatch": "text,4", + "recovery__dry_run_slip39_valid_match": "text,4", + "recovery__dry_run_slip39_valid_mismatch": "text,4", + "recovery__enter_any_share": "text,2", + "recovery__enter_backup": "text,2", + "recovery__enter_different_share": "text,2", + "recovery__enter_share_from_diff_group": "text,2", + "recovery__group_num_template": "text,1", + "recovery__group_threshold_reached": "text,2", + "recovery__invalid_seed_entered": "text,3", + "recovery__invalid_share_entered": "text,3", + "recovery__more_shares_needed": "text,2", + "recovery__num_of_words": "text,2", + "recovery__only_first_n_letters": "text,4", + "recovery__progress_will_be_lost": "text,2", + "recovery__select_num_of_words": "text,3", + "recovery__share_already_entered": "text,2", + "recovery__share_from_another_shamir": "text,3", + "recovery__share_num_template": "text,1", + "recovery__title": "title,1", + "recovery__title_cancel_dry_run": "title,1", + "recovery__title_cancel_recovery": "title,1", + "recovery__title_dry_run": "title,1", + "recovery__title_recover": "title,1", + "recovery__title_remaining_shares": "title,1", + "recovery__type_word_x_of_y_template": "text,1", + "recovery__wallet_recovered": "text,3", + "recovery__wanna_cancel_dry_run": "text,3", + "recovery__wanna_cancel_recovery": "text,3", + "recovery__word_count_template": "text,1", + "recovery__word_x_of_y_template": "text,1", + "recovery__x_more_items_starting_template_plural": "text,2", + "recovery__x_more_shares_needed_template_plural": "text,2", + "recovery__x_of_y_entered_template": "text,2", + "recovery__you_have_entered": "text,1", + "reset__advanced_group_threshold_info": "text,4", + "reset__all_x_of_y_template": "text,1", + "reset__any_x_of_y_template": "text,1", + "reset__button_create": "button,1", + "reset__button_recover": "button,1", + "reset__by_continuing": "text,3", + "reset__check_backup_title": "title,1", + "reset__check_group_share_title_template": "title,1", + "reset__check_seed_title": "title,1", + "reset__check_share_title_template": "title,1", + "reset__continue_with_next_share": "text,2", + "reset__continue_with_share_template": "text,2", + "reset__finished_verifying_group_template": "text,4", + "reset__finished_verifying_seed": "text,4", + "reset__finished_verifying_shares": "text,4", + "reset__group_description": "text,2", + "reset__group_info": "text,7", + "reset__group_share_checked_successfully_template": "text,2", + "reset__group_share_title_template": "title,1", + "reset__more_info_at": "text,1", + "reset__need_all_share_template": "text,2", + "reset__need_any_share_template": "text,2", + "reset__needed_to_form_a_group": "text,2", + "reset__needed_to_recover_your_wallet": "text,2", + "reset__never_make_digital_copy": "text,4", + "reset__num_of_share_holders_template": "text,3", + "reset__num_of_shares_advanced_info_template": "text,7", + "reset__num_of_shares_basic_info": "text,6", + "reset__num_shares_for_group_template": "text,3", + "reset__number_of_shares_info": "text,3", + "reset__one_share": "text,1", + "reset__only_one_share_will_be_created": "text,2", + "reset__recovery_seed_title": "title,1", + "reset__recovery_share_title_template": "title,1", + "reset__required_number_of_groups": "text,3", + "reset__select_correct_word": "text,3", + "reset__select_word_template": "text,1", + "reset__select_word_x_of_y_template": "text,1", + "reset__set_it_to_count_template": "text,2", + "reset__share_checked_successfully_template": "text,2", + "reset__share_words_title": "title,1", + "reset__slip39_checklist_num_groups": "text,1", + "reset__slip39_checklist_num_shares": "text,1", + "reset__slip39_checklist_set_num_groups": "text,1", + "reset__slip39_checklist_set_num_shares": "text,1", + "reset__slip39_checklist_set_sizes": "text,2", + "reset__slip39_checklist_set_sizes_longer": "text,2", + "reset__slip39_checklist_set_threshold": "text,1", + "reset__slip39_checklist_title": "title,1", + "reset__slip39_checklist_write_down": "text,2", + "reset__slip39_checklist_write_down_recovery": "text,2", + "reset__the_threshold_sets_the_number_of_shares": "text,2", + "reset__threshold_info": "text,3", + "reset__title_backup_is_done": "title,1", + "reset__title_create_wallet": "title,1", + "reset__title_create_wallet_shamir": "title,2", + "reset__title_group_threshold": "title,1", + "reset__title_number_of_groups": "title,1", + "reset__title_number_of_shares": "title,1", + "reset__title_set_group_threshold": "title,1", + "reset__title_set_number_of_groups": "title,2", + "reset__title_set_number_of_shares": "title,2", + "reset__title_set_threshold": "title,1", + "reset__to_form_group_template": "text,2", + "reset__tos_link": "text,1", + "reset__total_number_of_shares_in_group_template": "text,2", + "reset__use_your_backup": "text,3", + "reset__write_down_words_template": "text,2", + "reset__wrong_word_selected": "text,2", + "reset__you_need_one_share": "text,2", + "reset__your_backup_is_done": "text,1", + "ripple__confirm_tag": "text,1", + "ripple__destination_tag_template": "text,2", + "rotation__change_template": "text,3", + "rotation__east": "text,1", + "rotation__north": "text,1", + "rotation__south": "text,1", + "rotation__title_change": "title,1", + "rotation__west": "text,1", + "safety_checks__approve_unsafe_always": "text,4", + "safety_checks__approve_unsafe_temporary": "text,4", + "safety_checks__enforce_strict": "text,4", + "safety_checks__title": "title,1", + "safety_checks__title_safety_override": "title,1", + "sd_card__all_data_will_be_lost": "text,3", + "sd_card__card_required": "text,1", + "sd_card__disable": "text,4", + "sd_card__disabled": "text,3", + "sd_card__enable": "text,4", + "sd_card__enabled": "text,3", + "sd_card__error": "text,1", + "sd_card__format_card": "text,1", + "sd_card__insert_correct_card": "text,4", + "sd_card__please_insert": "text,3", + "sd_card__please_unplug_and_insert": "text,4", + "sd_card__problem_accessing": "text,3", + "sd_card__refresh": "text,4", + "sd_card__refreshed": "text,4", + "sd_card__restart": "text,3", + "sd_card__title": "title,1", + "sd_card__title_problem": "title,1", + "sd_card__unknown_filesystem": "text,2", + "sd_card__unplug_and_insert_correct": "text,4", + "sd_card__use_different_card": "text,4", + "sd_card__wanna_format": "text,3", + "sd_card__wrong_sd_card": "text,1", + "send__address_path": "text,1", + "send__confirm_sending": "text,1", + "send__from_multiple_accounts": "text,2", + "send__including_fee": "text,1", + "send__maximum_fee": "text,1", + "send__receiving_to_multisig": "text,2", + "send__title_confirm_sending": "title,1", + "send__title_joint_transaction": "title,1", + "send__title_receiving_to": "title,1", + "send__title_sending": "title,1", + "send__title_sending_amount": "title,1", + "send__title_sending_to": "title,1", + "send__to_the_total_amount": "text,1", + "send__total_amount": "text,1", + "send__transaction_id": "text,1", + "send__you_are_contributing": "text,1", + "share_words__words_in_order": "text,2", + "share_words__wrote_down_all": "text,2", + "sign_message__bytes_template": "text,1", + "sign_message__confirm_address": "title,1", + "sign_message__confirm_message": "title,1", + "sign_message__message_size": "text,1", + "sign_message__verify_address": "text,1", + "solana__account_index": "text,1", + "solana__associated_token_account": "text,2", + "solana__confirm_multisig": "text,1", + "solana__expected_fee": "text,1", + "solana__instruction_accounts_template": "text,3", + "solana__instruction_data": "text,1", + "solana__instruction_is_multisig": "text,3", + "solana__is_provided_via_lookup_table_template": "text,2", + "solana__lookup_table_address": "text,1", + "solana__multiple_signers": "text,1", + "solana__token_address": "text,1", + "solana__transaction_contains_unknown_instructions": "text,2", + "solana__transaction_requires_x_signers_template": "text,3", + "stellar__account_merge": "text,1", + "stellar__account_thresholds": "text,1", + "stellar__add_signer": "text,1", + "stellar__add_trust": "text,1", + "stellar__all_will_be_sent_to": "text,1", + "stellar__allow_trust": "text,1", + "stellar__asset": "text,1", + "stellar__balance_id": "text,1", + "stellar__bump_sequence": "text,1", + "stellar__buying": "text,1", + "stellar__claim_claimable_balance": "text,2", + "stellar__clear_data": "text,1", + "stellar__clear_flags": "text,1", + "stellar__confirm_issuer": "text,1", + "stellar__confirm_memo": "text,1", + "stellar__confirm_network": "text,1", + "stellar__confirm_operation": "text,1", + "stellar__confirm_stellar": "text,1", + "stellar__confirm_timebounds": "text,1", + "stellar__create_account": "text,1", + "stellar__debited_amount": "text,1", + "stellar__delete": "text,1", + "stellar__delete_passive_offer": "text,1", + "stellar__delete_trust": "text,1", + "stellar__destination": "text,1", + "stellar__exchanges_require_memo": "text,3", + "stellar__final_confirm": "text,1", + "stellar__hash": "text,1", + "stellar__high": "text,1", + "stellar__home_domain": "text,1", + "stellar__inflation": "text,1", + "stellar__initial_balance": "text,1", + "stellar__initialize_signing_with": "text,1", + "stellar__issuer_template": "text,1", + "stellar__key": "text,1", + "stellar__limit": "text,1", + "stellar__low": "text,1", + "stellar__master_weight": "text,1", + "stellar__medium": "text,1", + "stellar__new_offer": "text,1", + "stellar__new_passive_offer": "text,1", + "stellar__no_memo_set": "text,1", + "stellar__no_restriction": "text,1", + "stellar__on_network_template": "text,1", + "stellar__path_pay": "text,1", + "stellar__path_pay_at_least": "text,1", + "stellar__pay": "text,1", + "stellar__pay_at_most": "text,1", + "stellar__preauth_transaction": "text,1", + "stellar__price_per_template": "text,1", + "stellar__private_network": "text,1", + "stellar__remove_signer": "text,1", + "stellar__revoke_trust": "text,1", + "stellar__selling": "text,1", + "stellar__set_data": "text,1", + "stellar__set_flags": "text,1", + "stellar__set_sequence_to_template": "text,1", + "stellar__sign_tx_count_template": "text,2", + "stellar__sign_tx_fee_template": "text,2", + "stellar__source_account": "text,1", + "stellar__testnet_network": "text,1", + "stellar__trusted_account": "text,1", + "stellar__update": "text,1", + "stellar__valid_from": "text,1", + "stellar__valid_to": "text,1", + "stellar__value_sha256": "text,1", + "stellar__wanna_clean_value_key_template": "text,2", + "stellar__your_account": "text,1", + "tezos__baker_address": "text,1", + "tezos__balance": "text,1", + "tezos__ballot": "text,1", + "tezos__confirm_delegation": "text,1", + "tezos__confirm_origination": "text,1", + "tezos__delegator": "text,1", + "tezos__proposal": "text,1", + "tezos__register_delegate": "text,1", + "tezos__remove_delegation": "text,1", + "tezos__submit_ballot": "text,1", + "tezos__submit_proposal": "text,1", + "tezos__submit_proposals": "text,1", + "tutorial__middle_click": "text,4", + "tutorial__press_and_hold": "text,4", + "tutorial__ready_to_use": "text,3", + "tutorial__scroll_down": "text,8", + "tutorial__sure_you_want_skip": "text,4", + "tutorial__title_hello": "title,1", + "tutorial__title_screen_scroll": "title,1", + "tutorial__title_skip": "title,1", + "tutorial__title_tutorial_complete": "title,1", + "tutorial__use_trezor": "text,5", + "tutorial__welcome_press_right": "text,4", + "u2f__get": "text,2", + "u2f__set_template": "text,2", + "u2f__title_get": "title,1", + "u2f__title_set": "title,1", + "wipe__info": "text,2", + "wipe__title": "title,1", + "wipe__want_to_wipe": "text,3", + "wipe_code__change": "text,2", + "wipe_code__changed": "text,2", + "wipe_code__diff_from_pin": "text,3", + "wipe_code__disabled": "text,2", + "wipe_code__enabled": "text,2", + "wipe_code__enter_new": "text,1", + "wipe_code__info": "text,3", + "wipe_code__invalid": "text,1", + "wipe_code__mismatch": "text,2", + "wipe_code__reenter": "text,1", + "wipe_code__reenter_to_confirm": "text,2", + "wipe_code__title_check": "title,1", + "wipe_code__title_invalid": "title,2", + "wipe_code__title_settings": "title,1", + "wipe_code__turn_off": "text,2", + "wipe_code__turn_on": "text,2", + "wipe_code__wipe_code_mismatch": "text,1", + "word_count__title": "title,1", + "words__account": "text,1", + "words__account_colon": "text,1", + "words__address": "text,1", + "words__amount": "text,1", + "words__are_you_sure": "text,1", + "words__array_of": "text,1", + "words__blockhash": "text,1", + "words__buying": "text,1", + "words__confirm": "text,1", + "words__confirm_fee": "text,1", + "words__contains": "text,1", + "words__continue_anyway": "text,1", + "words__continue_with": "text,1", + "words__error": "text,1", + "words__fee": "text,1", + "words__from": "text,1", + "words__keep_it_safe": "text,2", + "words__know_what_your_doing": "text,4", + "words__my_trezor": "text,1", + "words__no": "text,1", + "words__outputs": "text,1", + "words__please_check_again": "text,2", + "words__please_try_again": "text,1", + "words__really_wanna": "text,1", + "words__recipient": "text,1", + "words__sign": "text,1", + "words__signer": "text,1", + "words__title_check": "title,1", + "words__title_group": "title,1", + "words__title_information": "title,1", + "words__title_remember": "title,1", + "words__title_share": "title,1", + "words__title_shares": "title,1", + "words__title_success": "title,1", + "words__title_summary": "title,1", + "words__title_threshold": "title,1", + "words__unknown": "text,1", + "words__warning": "text,1", + "words__writable": "text,1", + "words__yes": "text,1" +} diff --git a/core/tools/translations/sort_keys.py b/core/tools/translations/sort_keys.py new file mode 100644 index 000000000..8f525a6a7 --- /dev/null +++ b/core/tools/translations/sort_keys.py @@ -0,0 +1,18 @@ +import json + +from helpers import ALL_LANGUAGES, TRANSLATIONS_DIR + +for lang in ALL_LANGUAGES: + lang_file = TRANSLATIONS_DIR / f"{lang}.json" + lang_data = json.loads(lang_file.read_text()) + + for section_name, section in lang_data["translations"].items(): + for key in section: + if "title" in key: + lang_data["translations"][section_name][key] = lang_data[ + "translations" + ][section_name][key].upper() + + lang_file.write_text( + json.dumps(lang_data, indent=2, sort_keys=True, ensure_ascii=False) + "\n" + ) diff --git a/core/tools/translations/translate_missing.py b/core/tools/translations/translate_missing.py new file mode 100644 index 000000000..9469c0f14 --- /dev/null +++ b/core/tools/translations/translate_missing.py @@ -0,0 +1,90 @@ +import json +from typing import Any, Dict + +from googletrans import Translator +from helpers import FOREIGN_LANGUAGES, TRANSLATIONS_DIR + +MISSING_VALUE = "TODO:missing" + + +def translate_dict( + d: Dict[str, Any], translator: Translator, from_lang: str, to_lang: str +) -> Dict[str, Any]: + new_dict: dict[str, Any] = {} + for key, value in d.items(): + if isinstance(value, dict): + new_dict[key] = translate_dict(value, translator, from_lang, to_lang) + else: + try: + translated_text = translator.translate( + value, src=from_lang, dest=to_lang + ).text + new_dict[key] = translated_text + " (TODO)" + except Exception as e: + print(f"Error translating {value}: {e}") + new_dict[key] = MISSING_VALUE + return new_dict + + +def update_nested_dict(target: dict, source: dict) -> None: + for key, value in target.items(): + if key in source: + if isinstance(value, dict): + update_nested_dict(value, source[key]) + else: + target[key] = source[key] + + +def extend_nested_dict(bigger: dict, smaller: dict) -> None: + for key, value in smaller.items(): + if key in bigger: + if isinstance(value, dict) and isinstance(bigger[key], dict): + extend_nested_dict(bigger[key], value) + else: + bigger[key] = value + else: + bigger[key] = value + + +if __name__ == "__main__": + translator = Translator() + TRANSLATE = True + + with open(TRANSLATIONS_DIR / "en.json", "r") as f: + en_dict = json.load(f)["translations"] + en_keys = set(en_dict.keys()) + + for language in FOREIGN_LANGUAGES: + lang_file = TRANSLATIONS_DIR / f"{language}.json" + lang_data = json.loads(lang_file.read_text()) + translations = lang_data["translations"] + lang_keys = set(translations.keys()) + + print(f"Translating to {language}") + missing = en_keys - lang_keys + print("missing", missing) + missing_dict = {key: MISSING_VALUE for key in missing} + if TRANSLATE: + update_nested_dict(missing_dict, en_dict) + translated_dict = translate_dict(missing_dict, translator, "en", language) + else: + translated_dict = missing_dict + print("translated_dict", translated_dict) + extend_nested_dict(lang_data["translations"], translated_dict) + + def remove_unmatched_items( + main_dict: Dict[Any, Any], secondary_dict: Dict[Any, Any] + ) -> None: + keys_to_remove = [key for key in secondary_dict if key not in main_dict] + for key in keys_to_remove: + del secondary_dict[key] + + for key, value in secondary_dict.items(): + if isinstance(value, dict) and key in main_dict: + remove_unmatched_items(main_dict[key], value) + + remove_unmatched_items(en_dict, lang_data["translations"]) + + lang_file.write_text( + json.dumps(lang_data, indent=2, sort_keys=True, ensure_ascii=False) + "\n" + ) diff --git a/core/tools/translations/validate_same_keys.py b/core/tools/translations/validate_same_keys.py new file mode 100644 index 000000000..3445a352c --- /dev/null +++ b/core/tools/translations/validate_same_keys.py @@ -0,0 +1,41 @@ +from __future__ import annotations + +import json +from pathlib import Path + +from helpers import FOREIGN_LANGUAGES, HERE, TRANSLATIONS_DIR + + +def get_lang_keys(lang: str) -> set[str]: + lang_file = TRANSLATIONS_DIR / f"{lang}.json" + lang_data = json.loads(lang_file.read_text())["translations"] + return set(lang_data.keys()) + + +def do_check(lang: str, missing_file: Path) -> bool: + lang_keys = get_lang_keys(lang) + en_keys = get_lang_keys("en") + + if lang_keys == en_keys: + print(f"SUCCESS: {lang} and en files have the same keys") + return True + else: + print(f"{lang} and en files have different keys") + print(f"{lang} - en:", len(lang_keys - en_keys)) + print(f"en - {lang}:", len(en_keys - lang_keys)) + missing_lang = en_keys - lang_keys + missing_en = lang_keys - en_keys + missing_file.write_text(json.dumps(list(missing_lang), indent=2)) + print(f"Diff written into {missing_file}") + if missing_en: + print(f"Extra keys: {missing_en}") + return False + + +if __name__ == "__main__": + is_ok = True + for lang in FOREIGN_LANGUAGES: + is_ok &= do_check(lang, HERE / f"missing_{lang}.json") + if not is_ok: + print("ERROR: there were some inconsistencies") + exit(1) diff --git a/core/tools/translations/validate_strings.py b/core/tools/translations/validate_strings.py new file mode 100644 index 000000000..952784e31 --- /dev/null +++ b/core/tools/translations/validate_strings.py @@ -0,0 +1,254 @@ +from __future__ import annotations + +import json +from dataclasses import dataclass +import sys + +from helpers import HERE, TRANSLATIONS_DIR + + +@dataclass +class TooLong: + key: str + value: str + lines: list[str] + en: str + lines_en: list[str] + + def __str__(self) -> str: + return f"{self.key}: {self.value} --- {self.en} ({len(self.lines)} / {len(self.lines_en)})" + + +altcoins = [ + "binance", + "cardano", + "ethereum", + "eos", + "monero", + "nem", + "stellar", + "solana", + "ripple", + "tezos", +] + + +def get_value(key: str) -> str: + if "title" in key: + return "title,1" + if "button" in key: + return "button,1" + return "text,1" + + +# rules = {k: get_value(k) for k in translation_content} +# rules_file.write_text(json.dumps(rules, indent=2, sort_keys=True)) + +SCREEN_TEXT_WIDTHS = {"TT": 240 - 12, "TS3": 128} + +FONT_MAPPING = { + "TT": { + "title": "bold", + "text": "normal", + "bold": "bold", + "button": "bold", + }, + "TS3": { + "title": "bold", + "text": "normal", + "bold": "bold", + "button": "normal", + }, +} + +DEVICES = ["TT", "TS3"] + +FONTS_FILE = HERE / "font_widths.json" + +FONTS: dict[str, dict[str, dict[str, int]]] = json.loads(FONTS_FILE.read_text()) + + +def will_fit(text: str, type: str, device: str, lines: int) -> bool: + needed_lines = get_needed_lines(text, type, device) + return needed_lines <= lines + + +def get_needed_lines(text: str, type: str, device: str) -> int: + return len(assemble_lines(text, type, device)) + + +# def assemble_lines(text: str, type: str, device: str) -> list[str]: +# space_width = get_text_width(" ", type, device) +# words = text.split(" ") +# current_line_length = 0 +# current_line = [] +# assembled_lines: list[str] = [] + +# screen_width = SCREEN_TEXT_WIDTHS[device] + +# for word in words: +# word_width = get_text_width(word, type, device) +# if current_line_length + word_width <= screen_width: +# current_line.append(word) +# current_line_length += word_width + space_width +# else: +# assembled_lines.append(" ".join(current_line)) +# current_line = [word] +# current_line_length = word_width + space_width + +# assembled_lines.append(" ".join(current_line)) +# return assembled_lines + + +def assemble_lines(text: str, type: str, device: str) -> list[str]: + space_width = get_text_width(" ", type, device) + words = text.replace("\r", "\n").split(" ") # Splitting explicitly by space + current_line_length = 0 + current_line = [] + assembled_lines: list[str] = [] + + screen_width = SCREEN_TEXT_WIDTHS[device] + + for word in words: + segments = word.split("\n") + for i, segment in enumerate(segments): + if segment: + segment_width = get_text_width(segment, type, device) + if current_line_length + segment_width <= screen_width: + current_line.append(segment) + current_line_length += segment_width + space_width + else: + assembled_lines.append(" ".join(current_line)) + current_line = [segment] + current_line_length = segment_width + space_width + # If this is not the last segment, add a newline + if i < len(segments) - 1: + assembled_lines.append(" ".join(current_line)) + current_line = [] + current_line_length = 0 + + if current_line: # Append the last line if it's not empty + assembled_lines.append(" ".join(current_line)) + + return assembled_lines + + +def fill_line_with_underscores(lines: list[str], type: str, device: str) -> list[str]: + filled_lines: list[str] = [] + screen_width = SCREEN_TEXT_WIDTHS[device] + + for line in lines: + line_width = get_text_width(line, type, device) + while line_width < screen_width: + line += "_" + line_width = get_text_width(line, type, device) + filled_lines.append(line[:-1]) + + return filled_lines + + +def print_lines(lines: list[str]) -> None: + for line in lines: + print(line) + + +def get_text_width(text: str, type: str, device: str) -> int: + font = FONT_MAPPING[device][type] + widths = FONTS[device][font] + return sum(widths.get(c, 8) for c in text) + + +def check(language: str) -> list[TooLong]: + en_file = TRANSLATIONS_DIR / "en.json" + en_content = json.loads(en_file.read_text())["translations"] + + translation_file = TRANSLATIONS_DIR / f"{language}.json" + rules_file = HERE / "rules.json" + rules_content = json.loads(rules_file.read_text()) + + translation_content = json.loads(translation_file.read_text())["translations"] + translation_content = { + k: v.replace(" (TODO)", "") for k, v in translation_content.items() + } + translation_content = { + k: v.replace(" (TOO LONG)", "") for k, v in translation_content.items() + } + + wrong: dict[str, TooLong] = {} + + # new_rules: dict[str, str] = {} + + for k, v in list(translation_content.items())[:]: + if k.split("__")[0] in altcoins: + continue + if k.split("__")[0] == "plurals": + continue + + rule = rules_content.get(k) + if not rule: + print(f"Missing rule for {k}") + continue + type, lines = rule.split(",") + lines = int(lines) + + # most_needed_lines = 0 + + for model in DEVICES: + if model == "TT" and k.startswith("tutorial"): + continue + + if not will_fit(v, type, model, lines): + too_long = TooLong( + k, + v, + assemble_lines(v, type, model), + en_content[k], + assemble_lines(en_content[k], type, model), + ) + wrong[k] = too_long + + for _, too_long in wrong.items(): + print(too_long) + + print(len(wrong)) + + return list(wrong.values()) + + +def test() -> None: + def test_fits_exactly(text: str, type: str, device: str, lines: int) -> None: + assert not will_fit(text, type, device, lines - 1) + assert will_fit(text, type, device, lines) + + for model in DEVICES: + assert will_fit("Hello world", "title", model, 2) + assert will_fit("Hello world", "title", model, 1) + assert will_fit("By continuing you agree", "text", model, 1) + assert not will_fit("Confirming a transaction", "text", model, 1) + assert will_fit("Confirming a transaction", "text", model, 2) + assert will_fit("Loading private seed is not recommended.", "text", model, 2) + assert will_fit("CONFIRM TRANSACTION", "title", model, 1) + assert not will_fit("RECEIVE ADDRESS (MULTISIG)", "title", model, 1) + test_fits_exactly( + "I have\nfour\nlines\rhere", + "text", + model, + 4, + ) + + assert will_fit("Choose level of details", "text", "TT", 1) + test_fits_exactly( + "Do you really want to enforce strict safety checks (recommended)?", + "text", + "TT", + 4, + ) + + +if __name__ == "__main__": + lang = "de" + if len(sys.argv) > 1: + lang = sys.argv[1] + + test() + check(lang) diff --git a/core/translations/.gitignore b/core/translations/.gitignore new file mode 100644 index 000000000..dd03bee22 --- /dev/null +++ b/core/translations/.gitignore @@ -0,0 +1 @@ +translation-*.bin diff --git a/core/translations/cli.py b/core/translations/cli.py new file mode 100644 index 000000000..f2811ecda --- /dev/null +++ b/core/translations/cli.py @@ -0,0 +1,287 @@ +from __future__ import annotations + +import datetime +import json +import logging +import typing as t +import subprocess +from pathlib import Path + +import click + +from trezorlib import cosi, models, merkle_tree +from trezorlib._internal import translations + +HERE = Path(__file__).parent.resolve() +LOG = logging.getLogger(__name__) + +ALL_MODELS = {models.T2B1, models.T2T1} + +PRIVATE_KEYS_DEV = [byte * 32 for byte in (b"\xdd", b"\xde", b"\xdf")] + +PUBLIC_KEYS_PROD = [ + bytes.fromhex(key) + for key in ( + # TODO add production public keys + "aabbccdd" * 8, + "11223344" * 8, + "55667788" * 8, + ) +] + +VERSION_H = HERE.parent / "embed" / "firmware" / "version.h" +SIGNATURES_JSON = HERE / "signatures.json" + + +class SignatureInfo(t.TypedDict): + merkle_root: str + signature: str | None + datetime: str + commit: str + + +class SignatureFile(t.TypedDict): + current: SignatureInfo + history: list[SignatureInfo] + + +def _version_from_version_h() -> translations.VersionTuple: + defines: t.Dict[str, int] = {} + with open(VERSION_H) as f: + for line in f: + try: + define, symbol, number = line.rstrip().split() + assert define == "#define" + defines[symbol] = int(number) + except Exception: + # not a #define, not a number, wrong number of parts + continue + + return ( + defines["VERSION_MAJOR"], + defines["VERSION_MINOR"], + defines["VERSION_PATCH"], + defines["VERSION_BUILD"], + ) + + +def make_signature_info(merkle_root: bytes, signature: bytes | None) -> SignatureInfo: + now = datetime.datetime.utcnow() + commit = ( + subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=HERE) + .decode("ascii") + .strip() + ) + return SignatureInfo( + merkle_root=merkle_root.hex(), + signature=signature.hex() if signature is not None else None, + datetime=now.isoformat(), + commit=commit, + ) + + +def update_merkle_root(signature_file: SignatureFile, merkle_root: bytes) -> bool: + """Update signatures.json with the new Merkle root. + + Returns True if the signature file was updated, False if it was already up-to-date. + """ + current = signature_file["current"] + + if current["merkle_root"] == merkle_root.hex(): + # Merkle root is already up to date + return False + + if current["signature"] is None: + # current content is not signed. just overwrite with a new one + signature_file["current"] = make_signature_info(merkle_root, None) + SIGNATURES_JSON.write_text(json.dumps(signature_file, indent=2)) + return True + + # move current to history + signature_file["history"].insert(0, current) + # create new current + signature_file["current"] = make_signature_info(merkle_root, None) + return True + + +def generate_all_blobs(rewrite_version: bool) -> list[translations.TranslationsBlob]: + order = translations.order_from_json(json.loads((HERE / "order.json").read_text())) + fonts_dir = HERE / "fonts" + + current_version = _version_from_version_h() + current_version_str = ".".join(str(v) for v in current_version) + + common_version = None + + all_languages = [lang_file.stem for lang_file in HERE.glob("??.json")] + all_blobs: list[translations.TranslationsBlob] = [] + for lang in all_languages: + if lang == "en": + continue + + for model in ALL_MODELS: + try: + blob_json = json.loads((HERE / f"{lang}.json").read_text()) + blob_version = translations.version_from_json( + blob_json["header"]["version"] + ) + if rewrite_version: + version = current_version + if blob_version != current_version: + blob_json["header"]["version"] = current_version_str + (HERE / f"{lang}.json").write_text( + json.dumps(blob_json, indent=2) + "\n" + ) + + else: + version = blob_version + if common_version is None: + common_version = version + elif blob_version != common_version: + raise ValueError( + f"Language {lang} has version {version} but expected {common_version}" + ) + + blob = translations.blob_from_defs( + blob_json, order, model, version, fonts_dir + ) + all_blobs.append(blob) + except Exception as e: + import traceback + + traceback.print_exc() + LOG.warning(f"Failed to build {lang} for {model.internal_name}: {e}") + continue + + LOG.info(f"Built {lang} for {model.internal_name}") + + return all_blobs + + +def build_all_blobs( + all_blobs: list[translations.TranslationsBlob], + merkle_tree: merkle_tree.MerkleTree, + sigmask: int, + signature: bytes, + production: bool = False, +) -> None: + for blob in all_blobs: + proof = translations.Proof( + merkle_proof=merkle_tree.get_proof(blob.header_bytes), + signature=signature, + sigmask=sigmask, + ) + blob.proof = proof + header = blob.header + model = header.model.value.decode("ascii") + version = ".".join(str(v) for v in header.firmware_version[:3]) + if production: + suffix = "" + else: + suffix = "-unsigned" + filename = f"translation-{model}-{header.language}-{version}{suffix}.bin" + (HERE / filename).write_bytes(blob.build()) + LOG.info(f"Wrote {header.language} for {model} v{version}: {filename}") + + +@click.group() +def cli() -> None: + pass + + +@cli.command() +def gen() -> None: + """Generate all language blobs for all models. + + The generated blobs will be signed with the development keys. + """ + all_blobs = generate_all_blobs(rewrite_version=True) + tree = merkle_tree.MerkleTree(b.header_bytes for b in all_blobs) + root = tree.get_root_hash() + signature = cosi.sign_with_privkeys(root, PRIVATE_KEYS_DEV) + sigmask = 0b111 + build_all_blobs(all_blobs, tree, sigmask, signature) + + signature_file = json.loads(SIGNATURES_JSON.read_text()) + if update_merkle_root(signature_file, root): + SIGNATURES_JSON.write_text(json.dumps(signature_file, indent=2) + "\n") + click.echo("Updated signatures.json") + else: + click.echo("signatures.json is already up-to-date") + + +@cli.command() +def merkle_root() -> None: + """Print the Merkle root of all language blobs.""" + all_blobs = generate_all_blobs(rewrite_version=False) + tree = merkle_tree.MerkleTree(b.header_bytes for b in all_blobs) + root = tree.get_root_hash() + + signature_file: SignatureFile = json.loads(SIGNATURES_JSON.read_text()) + if signature_file["current"]["merkle_root"] != root.hex(): + raise click.ClickException( + f"Merkle root mismatch!\n" + f"Expected: {root.hex()}\n" + f"Stored in signatures.json: {signature_file['current']['merkle_root']}\n" + "Run `make_all_blobs.py gen` to update the stored Merkle root." + ) + + click.echo(root.hex()) + + +@cli.command() +@click.argument("signature_hex", required=False) +@click.option("--force", is_flag=True) +def sign(signature_hex: str | None, force: bool) -> None: + """Insert a signature into language blobs. + + If signature_hex is not provided, the signature will be located in signatures.json. + """ + all_blobs = generate_all_blobs(rewrite_version=False) + tree = merkle_tree.MerkleTree(b.header_bytes for b in all_blobs) + root = tree.get_root_hash() + + signature_file: SignatureFile = json.loads(SIGNATURES_JSON.read_text()) + if signature_file["current"]["merkle_root"] != root.hex(): + raise click.ClickException( + f"Merkle root mismatch!\n" + f"Expected: {root.hex()}\n" + f"Stored in signatures.json: {signature_file['current']['merkle_root']}" + ) + + if signature_hex is None: + if signature_file["current"]["signature"] is None: + raise click.ClickException("Please provide a signature.") + signature_hex = signature_file["current"]["signature"] + elif ( + not force + and signature_file["current"]["signature"] is not None + and signature_file["current"]["signature"] != signature_hex + ): + raise click.ClickException( + "A different signature is already present in signatures.json\n" + "Use --force to overwrite it." + ) + else: + # Update signature file data. It will be written only if the signature verifies. + signature_file["current"]["signature"] = signature_hex + signature_file["current"]["datetime"] = datetime.datetime.utcnow().isoformat() + + signature_bytes = bytes.fromhex(signature_hex) + sigmask, signature = signature_bytes[0], signature_bytes[1:] + + try: + cosi.verify(signature, root, 2, PUBLIC_KEYS_PROD, sigmask) + except Exception as e: + if force: + LOG.warning(f"Invalid signature: {e}. --force is provided, writing anyway.") + pass + else: + raise click.ClickException(f"Invalid signature: {e}") from e + + SIGNATURES_JSON.write_text(json.dumps(signature_file, indent=2) + "\n") + build_all_blobs(all_blobs, tree, sigmask, signature, production=True) + + +if __name__ == "__main__": + cli() diff --git a/core/translations/crowdin.py b/core/translations/crowdin.py new file mode 100644 index 000000000..1ac121fd1 --- /dev/null +++ b/core/translations/crowdin.py @@ -0,0 +1,55 @@ +import subprocess +import tempfile +from pathlib import Path +import json +import sys +import os + +HERE = Path(__file__).parent + + +def download() -> None: + with tempfile.TemporaryDirectory() as temp_dir: + command = f"crowdin download --all --verbose --token $CROWDIN_TOKEN --base-path={temp_dir}" + print("command", command) + + subprocess.run(command, shell=True, check=True) + + for directory in Path(temp_dir).iterdir(): + print("directory", directory) + lang_name = directory.name + en_file = directory / "en.json" + if not en_file.exists(): + print("Skipping - no en.json inside", lang_name) + continue + print("Processing", lang_name) + data = json.loads(en_file.read_text()) + lang_file = HERE / f"{lang_name}.json" + if not lang_file.exists(): + print("Skipping - no lang_file on our side", lang_name) + continue + lang_file_data = json.loads(lang_file.read_text()) + lang_file_data["translations"] = data["translations"] + lang_file.write_text(json.dumps(lang_file_data, indent=2, sort_keys=True, ensure_ascii=False) + "\n") + print("Translations updated", lang_name) + + +def upload() -> None: + command = "crowdin upload sources --token $CROWDIN_TOKEN" + print("command", command) + + subprocess.run(command, shell=True, check=True) + + +if __name__ == "__main__": + if not os.environ.get("CROWDIN_TOKEN"): + print("CROWDIN_TOKEN env variable not set") + sys.exit(1) + + if "download" in sys.argv: + download() + elif "upload" in sys.argv: + upload() + else: + print("Usage: python crowdin.py [download|upload]") + sys.exit(1) diff --git a/core/translations/crowdin.yml b/core/translations/crowdin.yml new file mode 100644 index 000000000..60a74024a --- /dev/null +++ b/core/translations/crowdin.yml @@ -0,0 +1,12 @@ +"project_id": "625982" +"base_path": "." +# api_token is being supplied on via `--token $CROWDIN_TOKEN` CLI option +"base_url": "https://api.crowdin.com" +"preserve_hierarchy": true + +files: [ + { + "source": "en.json", + "translation": "%two_letters_code%/%original_file_name%", + } +] diff --git a/core/translations/cs.json b/core/translations/cs.json new file mode 100644 index 000000000..7348035ed --- /dev/null +++ b/core/translations/cs.json @@ -0,0 +1,856 @@ +{ + "fonts": { + "T2B1": { + "1_FONT_NORMAL": "font_pixeloperator_regular_8_cs.json", + "2_FONT_BOLD": "font_pixeloperator_bold_8_cs.json", + "3_FONT_MONO": "font_pixeloperatormono_regular_8_cs.json", + "4_FONT_BIG": "font_unifont_regular_16_cs.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_cs.json" + }, + "T2T1": { + "1_FONT_NORMAL": "font_tthoves_regular_21_cs.json", + "2_FONT_BOLD": "font_tthoves_bold_17_cs.json", + "3_FONT_MONO": "font_robotomono_medium_20_cs.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_cs.json" + } + }, + "header": { + "language": "cs-CZ", + "version": "2.6.5" + }, + "translations": { + "addr_mismatch__contact_support_at": "Prosím, obraťte se na podporu Trezor na", + "addr_mismatch__key_mismatch": "Nesouhlasí klíč?", + "addr_mismatch__mismatch": "Nesouhlasí adresa?", + "addr_mismatch__support_url": "trezor.io/support", + "addr_mismatch__wrong_derivation_path": "Špatná derivační cesta pro zvolený účet.", + "addr_mismatch__xpub_mismatch": "Nesouhlasí XPUB?", + "address__public_key": "Veřejný klíč", + "address__title_cosigner": "SPOLUPODEPSÁNÍ", + "address__title_receive_address": "ADRESA PRO PŘIJETÍ", + "address__title_yours": "VAŠE", + "address_details__derivation_path": "Cesta odvození:", + "address_details__title_receive_address": "PŘIJMOUT ADRESU", + "address_details__title_receiving_to": "PŘIJÍMÁNÍ DO", + "authenticate__confirm_template": "Povolit připojený počítač potvrdit váš {} je pravý?", + "authenticate__header": "Ověřené zařízení", + "auto_lock__change_template": "Automaticky zamknout Trezor po {} nečinnosti?", + "auto_lock__title": "AUTO-ZÁMKOVÁNÍ", + "backup__can_back_up_anytime": "Svůj Trezor můžete zálohovat jednou, kdykoli.", + "backup__it_should_be_backed_up": "Měli byste nyní zálohovat svou novou peněženku.", + "backup__it_should_be_backed_up_now": "Proveďte zálohu!", + "backup__new_wallet_created": "Nová peněženka vytvořena.", + "backup__new_wallet_successfully_created": "Nová peněženka úspěšně vytvořena.", + "backup__recover_anytime": "Kdykoli můžete použít zálohu k obnovení peněženky.", + "backup__title_backup_wallet": "ZÁLOHOVAT PENĚŽENKU", + "backup__title_skip": "PŘESKOČIT ZÁLOHU", + "backup__want_to_skip": "Jste si jisti, že chcete přeskočit zálohu?", + "binance__buy": "Koupit", + "binance__confirm_cancel": "Potvrdit zrušení", + "binance__confirm_input": "Potvrdit vstup", + "binance__confirm_order": "Potvrdit objednávku", + "binance__confirm_output": "Potvrdit výstup", + "binance__order_id": "ID objednávky:", + "binance__pair": "Pár:", + "binance__price": "Cena:", + "binance__quantity": "Množství:", + "binance__sell": "Prodat", + "binance__sender_address": "Adresa odesílatele:", + "binance__side": "Strana:", + "bitcoin__commitment_data": "Data závazku:", + "bitcoin__confirm_locktime": "Potvrdit locktime", + "bitcoin__create_proof_of_ownership": "Chcete vytvořit důkaz vlastnictví?", + "bitcoin__high_mining_fee_template": "Poplatek za těžbu\n{}\nje neočekávaně vysoký.", + "bitcoin__locktime_no_effect": "Locktime je nastaven, ale nebude mít žádný účinek.", + "bitcoin__locktime_set_to": "Locktime nastaven:", + "bitcoin__locktime_set_to_blockheight": "Locktime nastaven na výšku bloku:", + "bitcoin__lot_of_change_outputs": "Mnoho výstupů změn.", + "bitcoin__multiple_accounts": "Více účtů", + "bitcoin__new_fee_rate": "Nová sazba poplatku:", + "bitcoin__simple_send_of": "Jednoduché odeslání", + "bitcoin__ticket_amount": "Částka lístku:", + "bitcoin__title_confirm_details": "POTVRDIT DETAILY", + "bitcoin__title_finalize_transaction": "DOKONČIT TRANSAKCI", + "bitcoin__title_high_mining_fee": "VYSOKÝ POPLATEK ZA TĚŽBU", + "bitcoin__title_meld_transaction": "SPOJIT TRANSAKCE", + "bitcoin__title_modify_amount": "UPRAVIT ČÁSTKU", + "bitcoin__title_payjoin": "PAYJOIN", + "bitcoin__title_proof_of_ownership": "DŮKAZ VLASTNICTVÍ", + "bitcoin__title_purchase_ticket": "KOUPIT LÍSTEK", + "bitcoin__title_update_transaction": "AKTUALIZOVAT TRANSAKCI", + "bitcoin__unknown_path": "Neznámá cesta", + "bitcoin__unknown_transaction": "Neznámá transakce", + "bitcoin__unusually_high_fee": "Neobvykle vysoký poplatek.", + "bitcoin__unverified_external_inputs": "Transakce obsahuje neověřené vnější vstupy.", + "bitcoin__valid_signature": "Podpis je platný.", + "bitcoin__voting_rights": "Právo hlasovat pro:", + "buttons__abort": "ZRUŠIT", + "buttons__access": "PŘÍSTUP", + "buttons__again": "ZNOVU", + "buttons__allow": "DOVOLIT", + "buttons__back": "ZADNÍ", + "buttons__back_up": "ZÁLOHOVAT", + "buttons__cancel": "ZRUŠIT", + "buttons__change": "ZMĚNIT", + "buttons__check": "ZKONTROLOVAT", + "buttons__check_again": "ZKONTROLOVAT ZNOVU", + "buttons__close": "ZAVŘÍT", + "buttons__confirm": "POTVRDIT", + "buttons__continue": "POKRAČOVAT", + "buttons__details": "DETAILY", + "buttons__enable": "POVOLIT", + "buttons__enter": "ZADAT", + "buttons__enter_share": "ZADAT PODÍL", + "buttons__export": "EXPORTOVAT", + "buttons__format": "FORMÁTOVAT", + "buttons__go_back": "VRÁTIT", + "buttons__hold_to_confirm": "PODRŽTE", + "buttons__info": "INFORMACE", + "buttons__install": "NAINSTALUJTE", + "buttons__more_info": "VÍCE INFORMACÍ", + "buttons__ok_i_understand": "OK, CHÁPU", + "buttons__purchase": "KOUPI", + "buttons__quit": "UKONČIT", + "buttons__restart": "RESTARTOVAT", + "buttons__retry": "ZNOVU", + "buttons__select": "VYBRAT", + "buttons__set": "NASTAVIT", + "buttons__show_all": "UKÁZAT VŠE", + "buttons__show_details": "UKÁZAT DETAILY", + "buttons__show_words": "UKÁZAT SLOVA", + "buttons__skip": "PŘESKOČIT", + "buttons__try_again": "ZKUSIT ZNOVU", + "buttons__turn_off": "VYPNOUT", + "buttons__turn_on": "ZAPNOUT", + "cardano__addr_base": "Základ", + "cardano__addr_enterprise": "Podnik", + "cardano__addr_legacy": "Dědictví", + "cardano__addr_pointer": "Ukazatel", + "cardano__addr_reward": "Odměna", + "cardano__address_no_staking": "adresa - žádné odměny za stávkování.", + "cardano__amount_burned_decimals_unknown": "Spálená částka:", + "cardano__amount_minted_decimals_unknown": "Vytvořená částka:", + "cardano__amount_sent_decimals_unknown": "Odeslána částka (desetinná čára neznámá):", + "cardano__anonymous_pool": "Pool nemá metadata (anonymní pool)", + "cardano__asset_fingerprint": "Otisk aktiv:", + "cardano__auxiliary_data_hash": "Hash pomocných dat:", + "cardano__block": "Blok", + "cardano__catalyst": "Katalyzátor", + "cardano__certificate": "Certifikát", + "cardano__change_output": "Změnit výstup", + "cardano__check_all_items": "Pečlivě zkontrolujte všechny položky.", + "cardano__choose_level_of_details": "Vyberte úroveň detailů:", + "cardano__collateral_input_id": "ID vstupu zajištění:", + "cardano__collateral_input_index": "Index vstupu zajištění:", + "cardano__collateral_output_contains_tokens": "Výstup zajištění obsahuje tokeny.", + "cardano__collateral_return": "Návrat zajištění", + "cardano__confirm": "Potvrdit:", + "cardano__confirm_signing_stake_pool": "Potvrdit podepsání registrace stávkového poolu jako vlastníka.", + "cardano__confirm_transaction": "Potvrdit transakci", + "cardano__confirming_a_multisig_transaction": "Potvrzování multisig transakce.", + "cardano__confirming_a_plutus_transaction": "Potvrzení transakce Plutus.", + "cardano__confirming_pool_registration": "Potvrzení registrace stávkového poolu.", + "cardano__confirming_transction": "Potvrzení transakce.", + "cardano__cost": "Náklady", + "cardano__credential_mismatch": "Pověření neodpovídá platebnímu pověření.", + "cardano__datum_hash": "Datum hash:", + "cardano__delegating_to": "Delegace na:", + "cardano__for_account_and_index_template": "pro účet {} a index {}:", + "cardano__for_account_template": "pro účet {}:", + "cardano__for_key_hash": "pro hash klíče:", + "cardano__for_script": "pro skript:", + "cardano__inline_datum": "Vložená data", + "cardano__input_id": "ID vstupu:", + "cardano__input_index": "Index vstupu:", + "cardano__intro_text_change": "Následující adresa je adresa změny. Její", + "cardano__intro_text_owned_by_device": "Následující adresa patří tomuto zařízení. Její", + "cardano__intro_text_registration_payment": "Adresa platby za registraci hlasovacího klíče patří tomuto zařízení. Její", + "cardano__key_hash": "hash klíče", + "cardano__margin": "Marže", + "cardano__multisig_path": "cesta multi-podpisu", + "cardano__nested_scripts_template": "Obsahuje {} vnořené skripty.", + "cardano__network": "Síť:", + "cardano__no_output_tx": "Transakce nemá výstupy, síť nelze ověřit.", + "cardano__nonce": "Nonce:", + "cardano__other": "jiné", + "cardano__path": "cesta", + "cardano__pledge": "Záruka", + "cardano__pointer": "ukazatel", + "cardano__policy_id": "ID politiky:", + "cardano__pool_metadata_hash": "Hash metadat poolu:", + "cardano__pool_metadata_url": "URL metadat poolu:", + "cardano__pool_owner": "Vlastník poolu:", + "cardano__pool_reward_account": "Účet odměn poolu:", + "cardano__reference_input_id": "ID referenčního vstupu:", + "cardano__reference_input_index": "Index referenčního vstupu:", + "cardano__reference_script": "Referenční skript", + "cardano__required_signer": "Požadovaný podepsaný", + "cardano__reward": "odměna", + "cardano__reward_address": "Adresa je odměna.", + "cardano__reward_eligibility_warning": "Varování: Adresa není platná adresa pro platby, není způsobilá pro odměny.", + "cardano__rewards_go_to": "Odměny jdou na:", + "cardano__script": "skript", + "cardano__script_all": "Vše", + "cardano__script_any": "Jakýkoliv", + "cardano__script_data_hash": "Hash dat skriptu:", + "cardano__script_hash": "Skript hash:", + "cardano__script_invalid_before": "Neplatné před", + "cardano__script_invalid_hereafter": "Neplatné odteď", + "cardano__script_key": "Klíč", + "cardano__script_n_of_k": "N z K", + "cardano__script_reward": "odměna skriptu", + "cardano__sending": "Odesílání", + "cardano__show_simple": "Zobrazit jednoduše", + "cardano__sign_tx_path_template": "Podepsat transakci pomocí {}:", + "cardano__stake_delegation": "Delegace stávky", + "cardano__stake_deregistration": "Zrušení registrace stávkového klíče", + "cardano__stake_pool_registration": "Registrace stávkového poolu", + "cardano__stake_pool_registration_pool_id": "Registrace stávkového poolu\nID poolu:", + "cardano__stake_registration": "Registrace stávkového klíče", + "cardano__staking_key_for_account": "Stávkový klíč pro účet", + "cardano__to_pool": "do poolu:", + "cardano__token_minting_path": "cesta ražby tokenů", + "cardano__total_collateral": "Celkové zajištění", + "cardano__transaction": "Transakce", + "cardano__transaction_contains_minting_or_burning": "Transakce obsahuje ražbu nebo spálení tokenů.", + "cardano__transaction_contains_script_address_no_datum": "Následující výstup transakce obsahuje skriptovou adresu, ale neobsahuje data.", + "cardano__transaction_fee": "Poplatek za transakci:", + "cardano__transaction_id": "ID transakce:", + "cardano__transaction_no_collateral_input": "Transakce neobsahuje vstupy zajištění. Skript Plutus nebude moci běžet.", + "cardano__transaction_no_script_data_hash": "Transakce neobsahuje hash dat skriptu. Skript Plutus nebude moci běžet.", + "cardano__transaction_output_contains_tokens": "Následující výstup transakce obsahuje tokeny.", + "cardano__ttl": "TTL:", + "cardano__unknown_collateral_amount": "Neznámá částka zajištění.", + "cardano__unusual_path": "Neobvyklá cesta.", + "cardano__valid_since": "Platné od:", + "cardano__verify_script": "Ověřit skript", + "cardano__vote_key_registration": "Registrace hlasovacího klíče (CIP-36)", + "cardano__vote_public_key": "Veřejný klíč hlasování:", + "cardano__voting_purpose": "Účel hlasování:", + "cardano__warning": "Varování", + "cardano__weight": "Váha:", + "cardano__withdrawal_for_address_template": "Potvrdit výběr pro adresu {}:", + "cardano__x_of_y_signatures_template": "Vyžaduje {} z {} podpisů.", + "coinjoin__access_account": "Přístup k vašemu coinjoin účtu?", + "coinjoin__do_not_disconnect": "Neodpojujte svůj Trezor!", + "coinjoin__max_mining_fee": "Maximální poplatek za těžbu:", + "coinjoin__max_rounds": "Maximální počet kol:", + "coinjoin__title": "AUTORIZOVAT COINJOIN", + "coinjoin__title_do_not_disconnect": "NEODPOJUJTE SVŮJ TREZOR!", + "coinjoin__title_progress": "COINJOIN V PRŮBĚHU", + "coinjoin__waiting_for_others": "Čekání na ostatní", + "confirm_total__fee_rate": "Sazba poplatku:", + "confirm_total__sending_from_account": "Odesílání z účtu:", + "confirm_total__title_fee": "INFORMACE O POPLATKU", + "confirm_total__title_sending_from": "ODESLÁNÍ OD", + "debug__loading_seed": "Načítání seedu", + "debug__loading_seed_not_recommended": "Načítání soukromého seedu není doporučeno.", + "device_name__change_template": "Změnit název zařízení na {}?", + "device_name__title": "NÁZEV ZAŘÍZENÍ", + "entropy__send": "Opravdu chcete odeslat entropii?", + "entropy__title": "VNITŘNÍ ENTROPIE", + "entropy__title_confirm": "POTVRDIT ENTROPII", + "eos__about_to_sign_template": "Chystáte se podepsat {}.", + "eos__action_name": "Název akce:", + "eos__arbitrary_data": "Libovolná data", + "eos__buy_ram": "Koupit RAM", + "eos__bytes": "Byty:", + "eos__cancel_vote": "Zrušit hlasování", + "eos__checksum": "Kontrolní součet:", + "eos__code": "Kód:", + "eos__contract": "Smlouva:", + "eos__cpu": "CPU:", + "eos__creator": "Tvůrce:", + "eos__delegate": "Delegovat", + "eos__delete_auth": "Smazat ověření", + "eos__from": "Od:", + "eos__link_auth": "Propojit ověření", + "eos__memo": "Poznámka", + "eos__name": "Jméno:", + "eos__net": "NET:", + "eos__new_account": "Nový účet", + "eos__owner": "Vlastník:", + "eos__parent": "Rodič:", + "eos__payer": "Plátce:", + "eos__permission": "Oprávnění:", + "eos__proxy": "Proxy:", + "eos__receiver": "Příjemce:", + "eos__refund": "Vrátit peníze", + "eos__requirement": "Požadavek:", + "eos__sell_ram": "Prodat RAM", + "eos__sender": "Odesílatel:", + "eos__sign_transaction": "Podepsat transakci", + "eos__threshold": "Práh:", + "eos__to": "Do:", + "eos__transfer": "Převod:", + "eos__type": "Typ:", + "eos__undelegate": "Zrušit delegaci", + "eos__unlink_auth": "Odpojit ověření", + "eos__update_auth": "Aktualizovat ověření", + "eos__vote_for_producers": "Hlasovat pro producenty", + "eos__vote_for_proxy": "Hlasovat pro proxy", + "eos__voter": "Volitel:", + "ethereum__amount_sent": "Odeslaná částka:", + "ethereum__contract": "Smlouva:", + "ethereum__data_size_template": "Velikost: {} bajtů", + "ethereum__gas_limit": "Limit plynu:", + "ethereum__gas_price": "Cena plynu:", + "ethereum__max_gas_price": "Maximální cena plynu:", + "ethereum__name_and_version": "Jméno a verze", + "ethereum__new_contract": "nová smlouva?", + "ethereum__no_message_field": "Žádné pole zprávy", + "ethereum__priority_fee": "Prioritní poplatek:", + "ethereum__show_full_array": "Zobrazit celé pole", + "ethereum__show_full_domain": "Zobrazit celou doménu", + "ethereum__show_full_message": "Zobrazit celou zprávu", + "ethereum__show_full_struct": "Zobrazit celou strukturu", + "ethereum__sign_eip712": "Opravdu podepsat data podle EIP-712?", + "ethereum__title_confirm_data": "POTVRDIT DATA", + "ethereum__title_confirm_domain": "POTVRDIT DOMÉNU", + "ethereum__title_confirm_message": "POTVRDIT ZPRÁVU", + "ethereum__title_confirm_struct": "POTVRDIT STRUKTURU", + "ethereum__title_confirm_typed_data": "POTVRDIT ZAPSANÁ DATA", + "ethereum__title_signing_address": "ADRESA PRO PODEPSÁNÍ", + "ethereum__units_template": "{} jednotek", + "ethereum__unknown_token": "Neznámý token", + "ethereum__valid_signature": "Podpis je platný.", + "experimental_mode__enable": "Povolit experimentální funkce?", + "experimental_mode__only_for_dev": "Pouze pro vývoj a beta testování!", + "experimental_mode__title": "EXPERIMENTÁLNÍ REŽIM", + "fido__already_registered": "Již zaregistrováno", + "fido__device_already_registered": "Toto zařízení je již zaregistrováno s touto aplikací.", + "fido__device_already_registered_with_template": "Toto zařízení je již zaregistrováno s {}.", + "fido__device_not_registered": "Toto zařízení není zaregistrováno s touto aplikací.", + "fido__does_not_belong": "Kredence nepatří tomuto autentikátoru.", + "fido__erase_credentials": "Opravdu chcete smazat všechny pověření?", + "fido__export_credentials": "Exportovat informace z tohoto autentikátoru?", + "fido__not_registered": "Není zaregistrováno", + "fido__not_registered_with_template": "Toto zařízení není zaregistrováno s\n{}.", + "fido__please_enable_pin_protection": "Prosím, povolte ochranu PIN.", + "fido__title_authenticate": "FIDO2 AUTENTIZACE", + "fido__title_import_credential": "IMPORTOVAT KREDENCE", + "fido__title_list_credentials": "UKAŽ KREDENCE", + "fido__title_register": "FIDO2 REGISTRACE", + "fido__title_remove_credential": "ODSTRANIT KREDENCE", + "fido__title_reset": "RESET FIDO2", + "fido__title_u2f_auth": "U2F AUTENTIZACE", + "fido__title_u2f_register": "U2F REGISTRACE", + "fido__title_verify_user": "FIDO2 OVĚŘIT UŽIVATELE", + "fido__unable_to_verify_user": "Nelze ověřit uživatele.", + "fido__wanna_erase_credentials": "Opravdu chcete smazat všechny přihlašovací údaje?", + "firmware_update__title": "AKTUALIZOVAT FIRMWARE", + "firmware_update__title_fingerprint": "FW OTISKY PRSTŮ", + "homescreen__click_to_connect": "Klikněte pro připojení", + "homescreen__click_to_unlock": "Klikněte pro odemčení", + "homescreen__title_backup_failed": "ZÁLOHA SELHALA", + "homescreen__title_backup_needed": "ZÁLOHA POTŘEBNÁ", + "homescreen__title_coinjoin_authorized": "COINJOIN AUTORIZOVÁNO", + "homescreen__title_experimental_mode": "EXPERIMENTÁLNÍ REŽIM", + "homescreen__title_no_usb_connection": "ŽÁDNÉ USB PŘIPOJENÍ", + "homescreen__title_pin_not_set": "PIN NEBYL NASTAVEN", + "homescreen__title_seedless": "BEZ SEMÍNKA", + "homescreen__title_set": "ZMĚNIT ÚVODNÍ OBRAZOVKU?", + "inputs__back": "ZPĚT", + "inputs__cancel": "ZRUŠIT", + "inputs__delete": "SMAZAT", + "inputs__enter": "ZADAT", + "inputs__return": "VRÁTIT", + "inputs__show": "UKÁZAT", + "inputs__space": "MEZERNÍK", + "joint__title": "SPOLEČNÁ TRANSAKCE", + "joint__to_the_total_amount": "Celkové částce:", + "joint__you_are_contributing": "Přispíváte:", + "language__change_to": "Změnit jazyk na {}?", + "language__changed": "Jazyk byl úspěšně změněn", + "language__progress": "Probíhá změna jazyka", + "language__title": "NASTAVENÍ JAZYKA", + "lockscreen__tap_to_connect": "Klepněte pro připojení", + "lockscreen__tap_to_unlock": "Klepněte pro odemčení", + "lockscreen__title_locked": "ZAMKNUTO", + "lockscreen__title_not_connected": "NEPŘIPOJENO", + "misc__decrypt_value": "Dešifrovat hodnotu", + "misc__encrypt_value": "Zašifrovat hodnotu", + "misc__title_suite_labeling": "OZNAČENÍ SUITE", + "modify_amount__decrease_amount": "Snížit částku o:", + "modify_amount__increase_amount": "Zvýšit částku o:", + "modify_amount__new_amount": "Nová částka:", + "modify_amount__title": "UPRAVIT ČÁSTKU", + "modify_fee__decrease_fee": "Snížit poplatek o:", + "modify_fee__fee_rate": "Sazba poplatku:", + "modify_fee__increase_fee": "Zvýšit poplatek o:", + "modify_fee__new_transaction_fee": "Nový transakční poplatek:", + "modify_fee__no_change": "Váš poplatek se nezměnil.", + "modify_fee__title": "UPRAVIT POPLATEK", + "modify_fee__transaction_fee": "Transakční poplatek:", + "monero__confirm_export": "Potvrdit export", + "monero__confirm_ki_sync": "Potvrdit synchronizaci klíčových obrázků", + "monero__confirm_refresh": "Potvrdit obnovení", + "monero__confirm_unlock_time": "Potvrdit čas odemknutí", + "monero__hashing_inputs": "Hašování vstupů", + "monero__payment_id": "ID platby", + "monero__postprocessing": "Dokončování zpracování...", + "monero__processing": "Zpracovávání...", + "monero__processing_inputs": "Zpracování vstupů", + "monero__processing_outputs": "Zpracování výstupů", + "monero__signing": "Podepisování...", + "monero__signing_inputs": "Podepisování vstupů", + "monero__unlock_time_set_template": "Čas odemknutí této transakce je nastaven na {}", + "monero__wanna_export_tx_der": "Opravdu chcete exportovat tx_der pro tx_proof?", + "monero__wanna_export_tx_key": "Opravdu chcete exportovat tx_key?", + "monero__wanna_export_watchkey": "Opravdu chcete exportovat pouze sledovací pověření?", + "monero__wanna_start_refresh": "Opravdu chcete spustit obnovení?", + "monero__wanna_sync_key_images": "Opravdu chcete synchronizovat klíčové obrázky?", + "nem__absolute": "absolutní", + "nem__activate": "Aktivovat", + "nem__add": "Přidat", + "nem__confirm_action": "Potvrdit akci", + "nem__confirm_address": "Potvrdit adresu", + "nem__confirm_creation_fee": "Potvrdit poplatek za vytvoření", + "nem__confirm_mosaic": "Potvrdit mozaiku", + "nem__confirm_multisig_fee": "Potvrdit vícepodepisový poplatek", + "nem__confirm_namespace": "Potvrdit jmenný prostor", + "nem__confirm_payload": "Potvrdit náklad", + "nem__confirm_properties": "Potvrdit vlastnosti", + "nem__confirm_rental_fee": "Potvrdit nájemné", + "nem__confirm_transfer_of": "Potvrdit převod", + "nem__convert_account_to_multisig": "Převést účet na vícepodepisový účet?", + "nem__cosign_transaction_for": "Spolupodepsat transakci pro", + "nem__cosignatory": " spolupodepisovatel", + "nem__create_mosaic": "Vytvořit mozaiku", + "nem__create_namespace": "Vytvořit jmenný prostor", + "nem__deactivate": "Deaktivovat", + "nem__decrease": "Snížit", + "nem__description": "Popis:", + "nem__divisibility_and_levy_cannot_be_shown": "Dělitelnost a zpoplatnění nelze zobrazit pro neznámé mozaiky", + "nem__encrypted": "Zašifrované:", + "nem__final_confirm": "Konečné potvrzení", + "nem__immutable": "neměnitelný", + "nem__increase": "Zvýšit", + "nem__initial_supply": "Počáteční zásoba:", + "nem__initiate_transaction_for": "Zahájit transakci pro", + "nem__levy_divisibility": "Dělitelnost zpoplatnění:", + "nem__levy_fee": "Poplatek za zpoplatnění:", + "nem__levy_fee_of": "Poplatek ze zpoplatnění:", + "nem__levy_mosaic": "Mozaika zpoplatnění:", + "nem__levy_namespace": "Jmenný prostor zpoplatnění:", + "nem__levy_recipient": "Příjemce zpoplatnění:", + "nem__levy_type": "Typ zpoplatnění:", + "nem__modify_supply_for": "Upravit zásobu pro", + "nem__modify_the_number_of_cosignatories_by": "Upravit počet spolupodepisovatelů o ", + "nem__mutable": "měnitelný", + "nem__of": "z", + "nem__percentile": "percentil", + "nem__raw_units_template": "{} surové jednotky", + "nem__remote_harvesting": " vzdálená sklizeň?", + "nem__remove": "Odebrat", + "nem__set_minimum_cosignatories_to": "Nastavit minimální počet spolupodepisovatelů na ", + "nem__sign_tx_fee_template": "Podepsat tuto transakci\na zaplatit {}\nza síťový poplatek?", + "nem__supply_change": "Změna zásob", + "nem__supply_units_template": "{} zásoby po {} celých jednotkách?", + "nem__transferable": "Přenosné?", + "nem__under_namespace": "pod jmenným prostorem", + "nem__unencrypted": "Nezašifrované:", + "nem__unknown_mosaic": "Neznámá mozaika!", + "passphrase__access_hidden_wallet": "Přistoupit ke skryté peněžence?", + "passphrase__always_on_device": "Opravdu chcete heslo vždy zadávat na zařízení?", + "passphrase__from_host_not_shown": "Heslo poskytnuté hostitelem bude použita, ale nebude zobrazeno kvůli nastavení zařízení.", + "passphrase__hidden_wallet": "Skrytá peněženka", + "passphrase__hide": "Skrýt heslo pocházející z hostitele?", + "passphrase__next_screen_will_show_passphrase": "Další obrazovka zobrazí heslo.", + "passphrase__please_enter": "Prosím, zadejte své heslo.", + "passphrase__revoke_on_device": "Chcete zrušit nastavení hesla na zařízení?", + "passphrase__title_confirm": "POTVRDIT HESLO", + "passphrase__title_enter": "ZADAT HESLO", + "passphrase__title_hide": "SKRÝT HESLO", + "passphrase__title_settings": "NASTAVENÍ HESLA", + "passphrase__title_source": "ZDROJ HESLA", + "passphrase__turn_off": "Vypnout ochranu heslem?", + "passphrase__turn_on": "Zapnout ochranu heslem?", + "pin__change": "Změnit PIN?", + "pin__changed": "PIN změněn", + "pin__cursor_will_change": "Pozice kurzoru se bude mezi zadáními měnit pro zvýšení bezpečnosti.", + "pin__diff_from_wipe_code": "PIN nesmí být stejný jako kód pro vymazání.", + "pin__disabled": "Ochrana PIN vypnuta.", + "pin__enabled": "Ochrana PIN zapnuta.", + "pin__enter": "Zadat PIN", + "pin__enter_new": "Zadejte nový PIN", + "pin__entered_not_valid": "Zadaný PIN není platný.", + "pin__info": "PIN bude vyžadován pro přístup k tomuto zařízení.", + "pin__invalid_pin": "Neplatný PIN", + "pin__last_attempt": "Poslední pokus", + "pin__mismatch": "Zadané PINy nesouhlasí!", + "pin__pin_mismatch": "NESHODA PIN", + "pin__please_check_again": "Zkontrolujte prosím znovu.", + "pin__reenter_new": "Znovu PIN", + "pin__reenter_to_confirm": "Pro potvrzení znovu zadejte PIN.", + "pin__should_be_long": "PIN by měl být 4-50 číslic dlouhý.", + "pin__title_check_pin": "ZKONTROLOVAT PIN", + "pin__title_settings": "NASTAVENÍ PINU", + "pin__title_wrong_pin": "ŠPATNÝ ŠPENDLÍK", + "pin__tries_left": "zbývající pokusy", + "pin__turn_off": "Opravdu chcete vypnout ochranu PIN?", + "pin__turn_on": "Zapnout ochranu PIN?", + "pin__wrong_pin": "Špatný PIN", + "plurals__contains_x_keys": "klíč|klíče|klíčů", + "plurals__lock_after_x_hours": "hodině|hodinách|hodinách", + "plurals__lock_after_x_milliseconds": "milisekundě|milisekundách|milisekundách", + "plurals__lock_after_x_minutes": "minutě|minutách|minutách", + "plurals__lock_after_x_seconds": "sekundě|sekundách|sekundách", + "plurals__sign_x_actions": "akci|akce|akcí", + "plurals__transaction_of_x_operations": "operace|operací|operací", + "plurals__x_groups_needed": "skupina|skupiny|skupin", + "plurals__x_shares_needed": "podíl|podíly|podílů", + "progress__authenticity_check": "Kontrola autentičnosti ...", + "progress__done": "Hotovo", + "progress__loading_transaction": "Načítání transakce...", + "progress__locking_device": "Zamykání zařízení...", + "progress__one_second_left": "Zbývá 1 sekunda", + "progress__please_wait": "PROSÍM ČEKEJTE", + "progress__processing": "PROCESOVÁNÍ", + "progress__refreshing": "Obnovování...", + "progress__signing_transaction": "Podpis transakce...", + "progress__syncing": "Synchronizace...", + "progress__x_seconds_left_template": "Zbývá {} sekund", + "reboot_to_bootloader__restart": "Chcete restartovat Trezor v režimu bootloader?", + "reboot_to_bootloader__title": "PŘEJÍT DO REŽIMU BOOTLOADER", + "reboot_to_bootloader__version_by_template": "Verze firmwaru {}\nod {}", + "recovery__cancel_dry_run": "Zrušit kontrolu zálohy", + "recovery__check_dry_run": "Zkontrolovat zálohu?", + "recovery__cursor_will_change": "Pozice kurzoru se změní mezi položkami pro zvýšenou bezpečnost.", + "recovery__dry_run_bip39_valid_match": "Zadané záchranné semínko je platné a odpovídá tomu v zařízení.", + "recovery__dry_run_bip39_valid_mismatch": "Zadané záchranné semínko je platné, ale neodpovídá tomu v zařízení.", + "recovery__dry_run_slip39_valid_match": "Zadané záchranné podíly jsou platné a odpovídají tomu, co je aktuálně v zařízení.", + "recovery__dry_run_slip39_valid_mismatch": "Zadané záchranné podíly jsou platné, ale neodpovídají tomu, co je aktuálně v zařízení.", + "recovery__enter_any_share": "Zadejte libovolný podíl", + "recovery__enter_backup": "Zadejte svou zálohu", + "recovery__enter_different_share": "Zadejte prosím odlišný podíl.", + "recovery__enter_share_from_diff_group": "Zadejte podíl z odlišné skupiny.", + "recovery__group_num_template": "Skupina {}", + "recovery__group_threshold_reached": "Práh skupiny dosažen.", + "recovery__invalid_seed_entered": "Zadáno neplatné záchranné semínko.", + "recovery__invalid_share_entered": "Zadán neplatný záchranný podíl.", + "recovery__more_shares_needed": "Potřebuje se více podílů", + "recovery__num_of_words": "Vyberte počet slov ve vaší záloze.", + "recovery__only_first_n_letters": "Budete muset vybrat pouze první 2-4 písmena každého slova.", + "recovery__progress_will_be_lost": "Veškerý pokrok bude ztracen.", + "recovery__select_num_of_words": "Vyberte počet slov ve vaší záloze.", + "recovery__share_already_entered": "Podíl již byl zadán", + "recovery__share_from_another_shamir": "Zadali jste podíl z jiného Shamir Backupu.", + "recovery__share_num_template": "Podíl {}", + "recovery__title": "OBNOVIT PENĚŽENKU", + "recovery__title_cancel_dry_run": "ZRUŠIT KONTROLU ZÁLOHY", + "recovery__title_cancel_recovery": "ZRUŠIT OBNOVENÍ", + "recovery__title_dry_run": "KONTROLA ZÁLOHY", + "recovery__title_recover": "OBNOVIT PENĚŽENKU", + "recovery__title_remaining_shares": "ZBÝVAJÍCÍ PODÍLY", + "recovery__type_word_x_of_y_template": "Napište slovo {} z {}", + "recovery__wallet_recovered": "Peněženka úspěšně obnovena", + "recovery__wanna_cancel_dry_run": "Jste si jisti, že chcete zrušit kontrolu zálohy?", + "recovery__wanna_cancel_recovery": "Jste si jisti, že chcete zrušit proces obnovení?", + "recovery__word_count_template": "({} slov)", + "recovery__word_x_of_y_template": "SLOVO {} Z {}", + "recovery__x_more_items_starting_template_plural": "Ještě {count} {plural} začínající", + "recovery__x_more_shares_needed_template_plural": "Potřebujete ještě {count} {plural}.", + "recovery__x_of_y_entered_template": "{} z {} podílů úspěšně zadáno.", + "recovery__you_have_entered": "Zadali jste", + "reset__advanced_group_threshold_info": "Prah skupiny určuje počet skupin potřebných k obnovení vaší peněženky.", + "reset__all_x_of_y_template": "všechny {} z {} podílů", + "reset__any_x_of_y_template": "libovolný {} z {} podílů", + "reset__button_create": "VYTVOŘIT PENĚŽENKU", + "reset__button_recover": "OBNOVIT PENĚŽENKU", + "reset__by_continuing": "Pokračováním souhlasíte s podmínkami společnosti Trezor.", + "reset__check_backup_title": "ZKONTROLOVAT ZÁLOHU", + "reset__check_group_share_title_template": "KONTROLA G{} - PODÍL {}", + "reset__check_seed_title": "ZKONTROLOVAT SEED", + "reset__check_share_title_template": "KONTROLA PODÍL #{}", + "reset__continue_with_next_share": "Pokračujte s dalším podílem.", + "reset__continue_with_share_template": "Pokračujte s podílem #{}.", + "reset__finished_verifying_group_template": "Dokončili jste ověření svých záchranných podílů pro skupinu {}.", + "reset__finished_verifying_seed": "Dokončili jste ověření svého záchranného semínka.", + "reset__finished_verifying_shares": "Dokončili jste ověření svých záchranných podílů.", + "reset__group_description": "Skupina se skládá z obnovovacích podílů.", + "reset__group_info": "Každá skupina má stanovený počet podílů a vlastní práh. V dalších krocích nastavíte počty podílů a prahy.", + "reset__group_share_checked_successfully_template": "Skupina {} - Podíl {} úspěšně zkontrolován.", + "reset__group_share_title_template": "SKUPINA {} - PODÍL {}", + "reset__more_info_at": "Více informací na", + "reset__need_all_share_template": "K obnovení budete potřebovat všechny {} podíly.", + "reset__need_any_share_template": "K obnovení budete potřebovat libovolný {} z podílů.", + "reset__needed_to_form_a_group": "potřebné k vytvoření skupiny. ", + "reset__needed_to_recover_your_wallet": "potřebné k obnovení vaší peněženky. ", + "reset__never_make_digital_copy": "Nikdy nedělejte digitální kopii své zálohy nebo ji neukládejte online!", + "reset__num_of_share_holders_template": "{} lidí nebo míst bude držet jeden podíl.", + "reset__num_of_shares_advanced_info_template": "Každý obnovovací podíl je posloupnost 20 slov. V dalším kroku zvolíte prahový počet podílů potřebných k vytvoření skupiny {}.", + "reset__num_of_shares_basic_info": "Každý obnovovací podíl je posloupnost 20 slov. V dalším kroku zvolíte, kolik podílů potřebujete k obnovení vaší peněženky.", + "reset__num_shares_for_group_template": "Požadovaný počet podílů pro vytvoření skupiny {}.", + "reset__number_of_shares_info": "= celkový počet unikátních seznamů slov použitých pro zálohu peněženky.", + "reset__one_share": "1 podíl", + "reset__only_one_share_will_be_created": "Bude vytvořen pouze jeden podíl.", + "reset__recovery_seed_title": "OBNOVIT SEED", + "reset__recovery_share_title_template": "OBNOVIT PODÍL #{}", + "reset__required_number_of_groups": "Požadovaný počet skupin pro obnovení.", + "reset__select_correct_word": "Vyberte správné slovo pro každou pozici.", + "reset__select_word_template": "VYBRAT {} SLOVO", + "reset__select_word_x_of_y_template": "Vyberte slovo {} z {}:", + "reset__set_it_to_count_template": "Nastavte na {} a budete potřebovat ", + "reset__share_checked_successfully_template": "Záchranný podíl #{} úspěšně zkontrolován.", + "reset__share_words_title": "STANDARDNÍ ZÁLOHA", + "reset__slip39_checklist_num_groups": "Počet skupin", + "reset__slip39_checklist_num_shares": "Počet podílů", + "reset__slip39_checklist_set_num_groups": "Nastavit počet skupin", + "reset__slip39_checklist_set_num_shares": "Nastavit počet akcií", + "reset__slip39_checklist_set_sizes": "Nastavit velikosti a prahy", + "reset__slip39_checklist_set_sizes_longer": "Nastavit velikosti a prahové hodnoty pro každou skupinu", + "reset__slip39_checklist_set_threshold": "Nastavit práh", + "reset__slip39_checklist_title": "KONTROLNÍ SEZNAM ZÁLOHY", + "reset__slip39_checklist_write_down": "Zapsat a ověřit podíly", + "reset__slip39_checklist_write_down_recovery": "Zapište si a zkontrolujte všechny obnovovací akcie", + "reset__the_threshold_sets_the_number_of_shares": "Prah určuje počet podílů ", + "reset__threshold_info": "= minimální počet unikátních seznamů slov použitých pro obnovení.", + "reset__title_backup_is_done": "ZÁLOHA JE HOTOVÁ", + "reset__title_create_wallet": "VYTVOŘIT PENĚŽENKU", + "reset__title_create_wallet_shamir": "VYTVOŘIT PENĚŽENKU (SHAMIR)", + "reset__title_group_threshold": "PRÁH SKUPINY", + "reset__title_number_of_groups": "POČET SKUPIN", + "reset__title_number_of_shares": "POČET PODÍLŮ", + "reset__title_set_group_threshold": "NASTAVIT PRAHOVÝ POČET SKUPIN", + "reset__title_set_number_of_groups": "NASTAVIT POČET SKUPIN", + "reset__title_set_number_of_shares": "NASTAVIT POČET PODÍLŮ", + "reset__title_set_threshold": "NASTAVIT PRAH", + "reset__to_form_group_template": "pro vytvoření skupiny {}.", + "reset__tos_link": "trezor.io/tos", + "reset__total_number_of_shares_in_group_template": "Nastavte celkový počet podílů ve skupině {}.", + "reset__use_your_backup": "Použijte zálohu, pokud potřebujete obnovit svou peněženku.", + "reset__write_down_words_template": "Zapište všechna {} slova v pořadí.", + "reset__wrong_word_selected": "Vybráno nesprávné slovo!", + "reset__you_need_one_share": "K obnovení potřebujete 1 podíl.", + "reset__your_backup_is_done": "Vaše záloha je hotova.", + "ripple__confirm_tag": "Potvrdit značku", + "ripple__destination_tag_template": "Cílová značka: {}", + "rotation__change_template": "Chcete změnit rotaci zařízení na {}?", + "rotation__east": "východ", + "rotation__north": "sever", + "rotation__south": "jih", + "rotation__title_change": "ZMĚNIT ROTACI", + "rotation__west": "západ", + "safety_checks__approve_unsafe_always": "Trezor vám umožní schválit některé akce, které by mohly být nebezpečné.", + "safety_checks__approve_unsafe_temporary": "Trezor vám dočasně umožní schválit některé akce, které by mohly být nebezpečné.", + "safety_checks__enforce_strict": "Opravdu chcete vynutit přísné kontroly bezpečnosti (doporučeno)?", + "safety_checks__title": "KONTROLY BEZPEČNOSTI", + "safety_checks__title_safety_override": "PŘEPÍNÁNÍ BEZPEČNOSTI", + "sd_card__all_data_will_be_lost": "Všechna data na SD kartě budou ztracena.", + "sd_card__card_required": "Vyžadována SD karta.", + "sd_card__disable": "Opravdu chcete odebrat ochranu SD karty ze svého zařízení?", + "sd_card__disabled": "Úspěšně jste zakázali ochranu SD karty.", + "sd_card__enable": "Opravdu chcete zajistit své zařízení ochranou SD karty?", + "sd_card__enabled": "Úspěšně jste povolili ochranu SD karty.", + "sd_card__error": "Chyba SD karty", + "sd_card__format_card": "Naformátovat SD kartu", + "sd_card__insert_correct_card": "Vložte do zařízení správnou SD kartu.", + "sd_card__please_insert": "Vložte prosím vaši SD kartu.", + "sd_card__please_unplug_and_insert": "Odpojte prosím zařízení a vložte vaši SD kartu.", + "sd_card__problem_accessing": "Došlo k problému při přístupu k SD kartě.", + "sd_card__refresh": "Opravdu chcete nahradit aktuální tajemství SD karty nově vygenerovaným?", + "sd_card__refreshed": "Úspěšně jste obnovili ochranu SD karty.", + "sd_card__restart": "Chcete restartovat Trezor v režimu bootloader?", + "sd_card__title": "OCHRANA SD KARTY", + "sd_card__title_problem": "PROBLÉM SE SD KARTOU", + "sd_card__unknown_filesystem": "Neznámý souborový systém", + "sd_card__unplug_and_insert_correct": "Odpojte zařízení a vložte správnou SD kartu.", + "sd_card__use_different_card": "Použijte jinou kartu nebo naformátujte SD kartu na souborový systém FAT32", + "sd_card__wanna_format": "Opravdu chcete naformátovat SD kartu?", + "sd_card__wrong_sd_card": "Špatná SD karta", + "send__address_path": "Adresová cesta", + "send__confirm_sending": "Potvrdit_odeslání", + "send__from_multiple_accounts": "Odesílání z více účtů.", + "send__including_fee": "Včetně poplatku:", + "send__maximum_fee": "Maximální poplatek:", + "send__receiving_to_multisig": "Přijímání na multisig adresu.", + "send__title_confirm_sending": "POTVRDIT ODESLÁNÍ", + "send__title_joint_transaction": "SPOLEČNÁ TRANSAKCE", + "send__title_receiving_to": "PŘIJÍMÁNÍ NA", + "send__title_sending": "ODESÍLÁNÍ", + "send__title_sending_amount": "ČÁSTKA K ODESLÁNÍ", + "send__title_sending_to": "ODESLÁNÍ NA", + "send__to_the_total_amount": "Celková částka:", + "send__total_amount": "Celková částka:", + "send__transaction_id": "ID transakce:", + "send__you_are_contributing": "Přispíváte:", + "share_words__words_in_order": " slova v pořadí.", + "share_words__wrote_down_all": "Napsal jsem všechny ", + "sign_message__bytes_template": "{} Bajty", + "sign_message__confirm_address": "POTVRDIT ADRESU", + "sign_message__confirm_message": "POTVRDIT ZPRÁVU", + "sign_message__message_size": "Velikost zprávy:", + "sign_message__verify_address": "Ověřte adresu", + "solana__account_index": "Index účtu", + "solana__associated_token_account": "Přidružený účet tokenů", + "solana__confirm_multisig": "Potvrďte multisig", + "solana__expected_fee": "Očekávaný poplatek", + "solana__instruction_accounts_template": "Instrukce obsahuje {} účty a její data jsou {} bajty dlouhé.", + "solana__instruction_data": "Instruktážní data", + "solana__instruction_is_multisig": "Následující instrukce je instrukce multisig.", + "solana__is_provided_via_lookup_table_template": "{} je poskytován prostřednictvím vyhledávací tabulky.", + "solana__lookup_table_address": "Adresa tabulky vyhledávání", + "solana__multiple_signers": "Více signatářů", + "solana__token_address": "Adresa tokenů", + "solana__transaction_contains_unknown_instructions": "Transakce obsahuje neznámé pokyny.", + "solana__transaction_requires_x_signers_template": "Transakce vyžaduje {} signatáři, který zvyšuje poplatek.", + "stellar__account_merge": "Sloučení účtů", + "stellar__account_thresholds": "Práhové hodnoty účtu", + "stellar__add_signer": "Přidat podepisovatele", + "stellar__add_trust": "Přidat důvěru", + "stellar__all_will_be_sent_to": "Vše XLM bude odesláno na:", + "stellar__allow_trust": "Povolit důvěru", + "stellar__asset": "Aktiva", + "stellar__balance_id": "ID rovnováhy", + "stellar__bump_sequence": "Zvýšit sekvenci", + "stellar__buying": "Kupování:", + "stellar__claim_claimable_balance": "Nárokuj balanci.", + "stellar__clear_data": "Vymazat data", + "stellar__clear_flags": "Vymazat příznaky", + "stellar__confirm_issuer": "Potvrdit vydavatele", + "stellar__confirm_memo": "Potvrdit poznámku", + "stellar__confirm_network": "Potvrdit síť", + "stellar__confirm_operation": "Potvrdit operaci", + "stellar__confirm_stellar": "Potvrdit Stellar", + "stellar__confirm_timebounds": "Potvrdit časová omezení", + "stellar__create_account": "Vytvořit účet", + "stellar__debited_amount": "Odepsaná částka", + "stellar__delete": "Smazat", + "stellar__delete_passive_offer": "Smazat pasivní nabídku", + "stellar__delete_trust": "Smazat důvěru", + "stellar__destination": "Cíl:", + "stellar__exchanges_require_memo": "Důležité: Mnoho směnáren vyžaduje poznámku při vkladu", + "stellar__final_confirm": "Konečné potvrzení", + "stellar__hash": "Haš:", + "stellar__high": "Vysoký:", + "stellar__home_domain": "Domovská doména", + "stellar__inflation": "Inflace", + "stellar__initial_balance": "Počáteční zůstatek", + "stellar__initialize_signing_with": "Inicializovat podepisování s", + "stellar__issuer_template": "{} vydavatel:", + "stellar__key": "Klíč:", + "stellar__limit": "Limit:", + "stellar__low": "Nízký:", + "stellar__master_weight": "Hlavní váha:", + "stellar__medium": "Střední:", + "stellar__new_offer": "Nová nabídka", + "stellar__new_passive_offer": "Nová pasivní nabídka", + "stellar__no_memo_set": "Žádná poznámka nenastavena!", + "stellar__no_restriction": "[bez omezení]", + "stellar__on_network_template": "Transakce je na {}", + "stellar__path_pay": "Platba cestou", + "stellar__path_pay_at_least": "Platba cestou alespoň", + "stellar__pay": "Platit:", + "stellar__pay_at_most": "Zaplatit nejvýše:", + "stellar__preauth_transaction": "Předautentizovaná transakce:", + "stellar__price_per_template": "Cena za {}:", + "stellar__private_network": "soukromá síť", + "stellar__remove_signer": "Odebrat podepisovatele", + "stellar__revoke_trust": "Zrušit důvěru", + "stellar__selling": "Prodej:", + "stellar__set_data": "Nastavit data", + "stellar__set_flags": "Nastavit příznaky", + "stellar__set_sequence_to_template": "Nastavit sekvenci na {}?", + "stellar__sign_tx_count_template": "Podepsat tuto transakci složenou z {}", + "stellar__sign_tx_fee_template": "a zaplatit {} za poplatek?", + "stellar__source_account": "Zdrojový účet:", + "stellar__testnet_network": "testovací síť", + "stellar__trusted_account": "Důvěryhodný účet", + "stellar__update": "Aktualizovat", + "stellar__valid_from": "Platné od (UTC)", + "stellar__valid_to": "Platné do (UTC)", + "stellar__value_sha256": "Hodnota (SHA-256):", + "stellar__wanna_clean_value_key_template": "Chcete vymazat klíč hodnoty {}?", + "stellar__your_account": "váš účet", + "tezos__baker_address": "Adresa pekaře:", + "tezos__balance": "Zůstatek:", + "tezos__ballot": "Hlasovací lístek:", + "tezos__confirm_delegation": "Potvrdit delegaci", + "tezos__confirm_origination": "Potvrdit vznik", + "tezos__delegator": "Delegátor:", + "tezos__proposal": "Návrh", + "tezos__register_delegate": "Registrovat delegáta", + "tezos__remove_delegation": "Odstranit delegaci", + "tezos__submit_ballot": "Odeslat hlasovací lístek", + "tezos__submit_proposal": "Předložit návrh", + "tezos__submit_proposals": "Předložit návrhy", + "tutorial__middle_click": "Stiskněte současně vlevo a vpravo pro potvrzení.", + "tutorial__press_and_hold": "Stiskněte a podržte pravé tlačítko pro schválení důležitých operací.", + "tutorial__ready_to_use": "Jste připraveni používat Trezor.", + "tutorial__scroll_down": "Stiskněte vpravo pro posun dolů a přečtěte si veškerý obsah, pokud text nezapadne na jednu obrazovku. Stiskněte vlevo pro posun nahoru.", + "tutorial__sure_you_want_skip": "Jste si jisti, že chcete tutoriál přeskočit?", + "tutorial__title_hello": "AHOJ", + "tutorial__title_screen_scroll": "POSUN OBRAZOVKY", + "tutorial__title_skip": "PŘESKOČIT TUTORIÁL", + "tutorial__title_tutorial_complete": "TUTORIÁL DOKONČEN", + "tutorial__use_trezor": "Trezor má levé a pravé tlačítko.\n\rPokračujte vpravo.", + "tutorial__welcome_press_right": "Vítejte v Trezoru. Stiskněte vpravo pro pokračování.", + "u2f__get": "Zvýšit a získat U2F čítač?", + "u2f__set_template": "Nastavit U2F čítač na {}?", + "u2f__title_get": "ZÍSKAT U2F ČÍTAČ", + "u2f__title_set": "NASTAVIT U2F ČÍTAČ", + "wipe__info": "Všechna data budou smazána.", + "wipe__title": "VYMAZAT ZAŘÍZENÍ", + "wipe__want_to_wipe": "Opravdu chcete vymazat zařízení?\n", + "wipe_code__change": "Změnit kód pro vymazání?", + "wipe_code__changed": "Kód pro vymazání změněn", + "wipe_code__diff_from_pin": "Kód pro vymazání musí být odlišný od vašeho PINu.\nZkuste to prosím znovu.", + "wipe_code__disabled": "Kód pro vymazání zakázán.", + "wipe_code__enabled": "Kód pro vymazání povolen.", + "wipe_code__enter_new": "Zadejte nový kód pro vymazání", + "wipe_code__info": "Kód vymaže všechna data z tohoto zařízení.", + "wipe_code__invalid": "Neplatný kód pro vymazání", + "wipe_code__mismatch": "Zadané kódy pro vymazání nesouhlasí!", + "wipe_code__reenter": "Znovu zadejte kód pro vymazání", + "wipe_code__reenter_to_confirm": "Pro potvrzení znovu zadejte kód pro vymazání.", + "wipe_code__title_check": "ZKONTROLOVAT KÓD PRO VYMAZÁNÍ", + "wipe_code__title_invalid": "NEPLATNÝ KÓD PRO VYMAZÁNÍ", + "wipe_code__title_settings": "NASTAVENÍ VÝMAZU", + "wipe_code__turn_off": "Vypnout ochranu kódem pro vymazání?", + "wipe_code__turn_on": "Zapnout ochranu kódem pro vymazání?", + "wipe_code__wipe_code_mismatch": "NESHODA KÓDU PRO VYMAZÁNÍ", + "word_count__title": "POČET SLOV", + "words__account": "Účet", + "words__account_colon": "Účet:", + "words__address": "Adresa", + "words__amount": "Částka:", + "words__are_you_sure": "Jste si jisti?", + "words__array_of": "Pole o", + "words__blockhash": "Blockhash", + "words__buying": "Koupit", + "words__confirm": "Potvrdit", + "words__confirm_fee": "Potvrdit poplatek", + "words__contains": "Obsahuje", + "words__continue_anyway": "Přesto pokračovat?", + "words__continue_with": "Pokračovat s", + "words__error": "Chyba", + "words__fee": "Poplatek", + "words__from": "od", + "words__keep_it_safe": "Uchovávejte v bezpečí!", + "words__know_what_your_doing": "Pokračujte pouze, pokud víte, co děláte!", + "words__my_trezor": "Můj Trezor", + "words__no": "Ne", + "words__outputs": "výstupy", + "words__please_check_again": "Zkontrolujte to prosím znovu", + "words__please_try_again": "Zkuste to prosím znovu", + "words__really_wanna": "Opravdu chcete", + "words__recipient": "Příjemce", + "words__sign": "Podepsat", + "words__signer": "Signer", + "words__title_check": "KONTROLA", + "words__title_group": "SKUPINA", + "words__title_information": "INFORMACE", + "words__title_remember": "PAMATOVAT", + "words__title_share": "PODÍL", + "words__title_shares": "PODÍLY", + "words__title_success": "ÚSPĚCH", + "words__title_summary": "SHRNUTÍ", + "words__title_threshold": "PRÁH", + "words__unknown": "Neznámý", + "words__warning": "Varování", + "words__writable": "Zapisovatelný", + "words__yes": "Ano" + } +} diff --git a/core/translations/de.json b/core/translations/de.json new file mode 100644 index 000000000..d867bed5d --- /dev/null +++ b/core/translations/de.json @@ -0,0 +1,856 @@ +{ + "fonts": { + "T2B1": { + "1_FONT_NORMAL": "font_pixeloperator_regular_8_de.json", + "2_FONT_BOLD": "font_pixeloperator_bold_8_de.json", + "3_FONT_MONO": "font_pixeloperatormono_regular_8_de.json", + "4_FONT_BIG": "font_unifont_regular_16_de.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_de.json" + }, + "T2T1": { + "1_FONT_NORMAL": "font_tthoves_regular_21_de.json", + "2_FONT_BOLD": "font_tthoves_bold_17_de.json", + "3_FONT_MONO": "font_robotomono_medium_20_de.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_de.json" + } + }, + "header": { + "language": "de-DE", + "version": "2.6.5" + }, + "translations": { + "addr_mismatch__contact_support_at": "Bitte wenden Sie sich an den Trezor -Support unter", + "addr_mismatch__key_mismatch": "Schlüsselfehlanpassung?", + "addr_mismatch__mismatch": "Adressenkonflikt?", + "addr_mismatch__support_url": "trezor.io/support", + "addr_mismatch__wrong_derivation_path": "Falscher Ableitungspfad für ausgewähltes Konto.", + "addr_mismatch__xpub_mismatch": "XPUB Mismatch?", + "address__public_key": "Öffentlicher Schlüssel", + "address__title_cosigner": "MITUNTERZEICHNER", + "address__title_receive_address": "EMPFÄNGERADRESSE", + "address__title_yours": "DEINER", + "address_details__derivation_path": "Ableitungspfad:", + "address_details__title_receive_address": "EMPFÄNGERADRESSE", + "address_details__title_receiving_to": "EMPFÄNGER", + "authenticate__confirm_template": "Erlauben Sie den angeschlossenen Computer, zu bestätigen, dass Ihr {} echt ist?", + "authenticate__header": "AUTHENTIFIZIEREN", + "auto_lock__change_template": "Trezor nach {} Inaktivität automatisch sperren?", + "auto_lock__title": "AUTO-LOCK-VERZÖGERUNG", + "backup__can_back_up_anytime": "Du kannst deinen Trezor jederzeit einmalig sichern.", + "backup__it_should_be_backed_up": "Du solltest jetzt dein neues Wallet sichern.", + "backup__it_should_be_backed_up_now": "Es sollte jetzt gesichert werden!", + "backup__new_wallet_created": "Neues Wallet wurde erstellt.", + "backup__new_wallet_successfully_created": "Neues Wallet wurde erfolgreich erstellt.", + "backup__recover_anytime": "Mit dem Backup kannst du jederzeit dein Wallet wiederherstellen.", + "backup__title_backup_wallet": "WALLET-BACKUP", + "backup__title_skip": "BACKUP ÜBERSPRINGEN", + "backup__want_to_skip": "Möchtest du das Backup wirklich überspringen?", + "binance__buy": "Kaufen", + "binance__confirm_cancel": "Abbrechen bestätigen", + "binance__confirm_input": "Eingabe bestätigen", + "binance__confirm_order": "Order bestätigen", + "binance__confirm_output": "Ausgabe bestätigen", + "binance__order_id": "Order-ID:", + "binance__pair": "Paar:", + "binance__price": "Preis:", + "binance__quantity": "Menge:", + "binance__sell": "Verkaufen", + "binance__sender_address": "Senderadresse:", + "binance__side": "Seite:", + "bitcoin__commitment_data": "Commitment-Daten:", + "bitcoin__confirm_locktime": "Sperrzeit bestätigen", + "bitcoin__create_proof_of_ownership": "Möchtest du einen Eigentumsnachweis erstellen?", + "bitcoin__high_mining_fee_template": "Die Mining-Gebühr von\n{}\nist unerwartet hoch.", + "bitcoin__locktime_no_effect": "Sperrzeit ist festgelegt, hat aber keine Auswirkungen.", + "bitcoin__locktime_set_to": "Sperrzeit festgelegt auf:", + "bitcoin__locktime_set_to_blockheight": "Sperrzeit festgelegt auf Blockhöhe:", + "bitcoin__lot_of_change_outputs": "Viele Wechselgeldausgaben.", + "bitcoin__multiple_accounts": "Mehrere Konten", + "bitcoin__new_fee_rate": "Neuer Gebührensatz:", + "bitcoin__simple_send_of": "Einfaches Senden von", + "bitcoin__ticket_amount": "Ticketbetrag:", + "bitcoin__title_confirm_details": "DETAILS BESTÄTIGEN", + "bitcoin__title_finalize_transaction": "TRANSAKTION ABSCHLIESSEN", + "bitcoin__title_high_mining_fee": "HOHE MINING-GEBÜHR", + "bitcoin__title_meld_transaction": "TRANSAKTION ZUSAMMENFÜHREN", + "bitcoin__title_modify_amount": "BETRAG ÄNDERN", + "bitcoin__title_payjoin": "PAYJOIN", + "bitcoin__title_proof_of_ownership": "EIGENTUMSNACHWEIS", + "bitcoin__title_purchase_ticket": "TICKET KAUFEN", + "bitcoin__title_update_transaction": "TRANSAKTION AKTUALISIEREN", + "bitcoin__unknown_path": "Unbekannter Pfad", + "bitcoin__unknown_transaction": "Unbekannte Transaktion", + "bitcoin__unusually_high_fee": "Ungewöhnlich hohe Gebühr.", + "bitcoin__unverified_external_inputs": "Die Transaktion enthält nicht verifizierte externe Eingaben.", + "bitcoin__valid_signature": "Die Signatur ist gültig.", + "bitcoin__voting_rights": "Stimmrechte an:", + "buttons__abort": "ABBRECHEN", + "buttons__access": "ZUGRIFF", + "buttons__again": "WIEDERHOLEN", + "buttons__allow": "ERLAUBEN", + "buttons__back": "ZURÜCK", + "buttons__back_up": "SICHERN", + "buttons__cancel": "ABBRECHEN", + "buttons__change": "ÄNDERN", + "buttons__check": "PRÜFEN", + "buttons__check_again": "ERNEUT PRÜFEN", + "buttons__close": "SCHLIESSEN", + "buttons__confirm": "BESTÄTIGEN", + "buttons__continue": "WEITER", + "buttons__details": "DETAILS", + "buttons__enable": "AKTIVIEREN", + "buttons__enter": "EINGEBEN", + "buttons__enter_share": "SHARE EINGEBEN", + "buttons__export": "EXPORTIEREN", + "buttons__format": "FORMATIEREN", + "buttons__go_back": "GEH ZURÜCK", + "buttons__hold_to_confirm": "Z. BEST. HALTEN", + "buttons__info": "INFO", + "buttons__install": "INSTALLIEREN", + "buttons__more_info": "WEITERE INFOS", + "buttons__ok_i_understand": "OK, ICH VERSTEHE", + "buttons__purchase": "KAUFEN", + "buttons__quit": "BEENDEN", + "buttons__restart": "NEU STARTEN", + "buttons__retry": "WIEDERHOLEN", + "buttons__select": "AUSWÄHLEN", + "buttons__set": "FESTLEGEN", + "buttons__show_all": "ALLE ANZEIGEN", + "buttons__show_details": "ZEIGE DETAILS", + "buttons__show_words": "WÖRTER ANZEIGEN", + "buttons__skip": "ÜBSPR", + "buttons__try_again": "WIEDERHOLEN", + "buttons__turn_off": "DEAKTIVIEREN", + "buttons__turn_on": "AKTIVIEREN", + "cardano__addr_base": "Basis", + "cardano__addr_enterprise": "Enterprise", + "cardano__addr_legacy": "Veraltet", + "cardano__addr_pointer": "Pointer", + "cardano__addr_reward": "Belohnung", + "cardano__address_no_staking": "Adresse - keine Staking-Belohnungen.", + "cardano__amount_burned_decimals_unknown": "Menge verbrannt (Dezimalstellen unbekannt):", + "cardano__amount_minted_decimals_unknown": "Menge geprägt (Dezimalstellen unbekannt):", + "cardano__amount_sent_decimals_unknown": "Betrag gesendet (unbekannt):", + "cardano__anonymous_pool": "Pool hat keine Metadaten (anonymer Pool)", + "cardano__asset_fingerprint": "Asset-Fingerabdruck:", + "cardano__auxiliary_data_hash": "Hilfsdaten-Hash:", + "cardano__block": "Block", + "cardano__catalyst": "Catalyst", + "cardano__certificate": "Zertifikat", + "cardano__change_output": "Wechselgeldausgabe", + "cardano__check_all_items": "Prüfe alle Elemente sorgfältig.", + "cardano__choose_level_of_details": "Detailebene auswählen:", + "cardano__collateral_input_id": "Sicherheiten-Eingabe-ID:", + "cardano__collateral_input_index": "Sicherheiten-Eingabeindex:", + "cardano__collateral_output_contains_tokens": "Die Rückgabe von Sicherheiten beinhaltet Token.", + "cardano__collateral_return": "Rückgabe von Sicherheiten", + "cardano__confirm": "Bestätigen:", + "cardano__confirm_signing_stake_pool": "Bestätige, dass du die Registrierung des Pools als Eigentümer signiert hast.", + "cardano__confirm_transaction": "Transaktion bestätigen", + "cardano__confirming_a_multisig_transaction": "Multisig-Transaktion bestätigen.", + "cardano__confirming_a_plutus_transaction": "Bestätigung einer Plutus -Transaktion.", + "cardano__confirming_pool_registration": "Pool-Registrierung als Besitzer bestätigen.", + "cardano__confirming_transction": "Transaktion bestätigen.", + "cardano__cost": "Kosten", + "cardano__credential_mismatch": "Daten stimmen nicht mit Zahlungsdaten überein.", + "cardano__datum_hash": "Datum Hash:", + "cardano__delegating_to": "Delegieren an:", + "cardano__for_account_and_index_template": "Für Konto {} und index {}:", + "cardano__for_account_template": "Für Konto {}:", + "cardano__for_key_hash": "für Key-Hash:", + "cardano__for_script": "für Skript:", + "cardano__inline_datum": "Inline-Bezugspunkt", + "cardano__input_id": "Eingabe-ID:", + "cardano__input_index": "Eingabenindex:", + "cardano__intro_text_change": "Die folgende Adresse ist eine Wechselgeldadresse. Ihr(e)", + "cardano__intro_text_owned_by_device": "Die folgende Adresse gehört diesem Gerät. Ihr(e)", + "cardano__intro_text_registration_payment": "Die Zahlungsadresse für die Registrierung des Voting-Keys gehört diesem Gerät. Ihr(e)", + "cardano__key_hash": "Key-Hash", + "cardano__margin": "Marge", + "cardano__multisig_path": "Multisig-Pfad", + "cardano__nested_scripts_template": "Enthält {} verschachtelte Skripte.", + "cardano__network": "Netzwerk:", + "cardano__no_output_tx": "Transaktion hat keine Ausgaben. Netzwerk kann nicht verifiziert werden.", + "cardano__nonce": "Nonce:", + "cardano__other": "andere", + "cardano__path": "Pfad", + "cardano__pledge": "Pledge", + "cardano__pointer": "Pointer", + "cardano__policy_id": "Richtlinien-ID:", + "cardano__pool_metadata_hash": "Pool-Metadaten-Hash:", + "cardano__pool_metadata_url": "Pool-Metadaten-URL:", + "cardano__pool_owner": "Pool-Eigentümer:", + "cardano__pool_reward_account": "Pool-Belohnungskonto:", + "cardano__reference_input_id": "Referenz-Eingabe-ID:", + "cardano__reference_input_index": "Referenz-Eingabeindex:", + "cardano__reference_script": "Referenzskript", + "cardano__required_signer": "Erforderlicher Unterzeichner", + "cardano__reward": "Belohnung", + "cardano__reward_address": "Adresse ist eine Adresse für Belohnungen.", + "cardano__reward_eligibility_warning": "Warnung: Die Adresse ist keine Zahlungsadresse und somit nicht für Belohnungen berechtigt.", + "cardano__rewards_go_to": "Belohnung geht an:", + "cardano__script": "Skript", + "cardano__script_all": "Alle", + "cardano__script_any": "Beliebige", + "cardano__script_data_hash": "Skriptdaten-Hash:", + "cardano__script_hash": "Skript-Hash:", + "cardano__script_invalid_before": "Ungültig vor", + "cardano__script_invalid_hereafter": "Ungültig nach", + "cardano__script_key": "Key", + "cardano__script_n_of_k": "N von K", + "cardano__script_reward": "Skript-Belohnung", + "cardano__sending": "Wird gesendet", + "cardano__show_simple": "Einfach anzeigen", + "cardano__sign_tx_path_template": "Transaktion signieren mit {}:", + "cardano__stake_delegation": "Stake-Delegierung", + "cardano__stake_deregistration": "Stake-Key-Deregistrierung", + "cardano__stake_pool_registration": "Staking-Pool-Registrierung", + "cardano__stake_pool_registration_pool_id": "Staking-Pool-Registrierung\nPool-ID:", + "cardano__stake_registration": "Stake-Key-Registrierung", + "cardano__staking_key_for_account": "Staking-Key für Konto", + "cardano__to_pool": "an Pool:", + "cardano__token_minting_path": "Token-Minting-Pfad", + "cardano__total_collateral": "Gesamtsicherheiten:", + "cardano__transaction": "Transaktion", + "cardano__transaction_contains_minting_or_burning": "Die Transaktion beinhaltet das Minting oder Burning von Token.", + "cardano__transaction_contains_script_address_no_datum": "Die folgende Transaktionsausgabe enthält eine Skriptadresse, aber keinen Bezugspunkt.", + "cardano__transaction_fee": "Transaktionsgebühr:", + "cardano__transaction_id": "Transaktions-ID:", + "cardano__transaction_no_collateral_input": "Die Transaktion enthält keine Sicherheiten. Das Plutus-Skript kann nicht ausgeführt werden.", + "cardano__transaction_no_script_data_hash": "Die Transaktion enthält keinen Skriptdaten-Hash. Das Plutus-Skript kann nicht ausgeführt werden.", + "cardano__transaction_output_contains_tokens": "Die folgende Transaktionsausgabe beinhaltet Token.", + "cardano__ttl": "TTL:", + "cardano__unknown_collateral_amount": "Unbekannter Sicherheitenbetrag.", + "cardano__unusual_path": "Pfad ist ungewöhnlich.", + "cardano__valid_since": "Gültig seit:", + "cardano__verify_script": "Skript verifizieren", + "cardano__vote_key_registration": "Vote-Key-Registrierung (CIP-36)", + "cardano__vote_public_key": "Public Key für Vote:", + "cardano__voting_purpose": "Voting-Zweck:", + "cardano__warning": "Warnung", + "cardano__weight": "Gewicht:", + "cardano__withdrawal_for_address_template": "Auszahlung für {} Adresse bestätigen:", + "cardano__x_of_y_signatures_template": "Erfordert {} von {} Signaturen.", + "coinjoin__access_account": "Auf CoinJoin-Konto zugreifen?", + "coinjoin__do_not_disconnect": "Trenne deinen Trezor nicht!", + "coinjoin__max_mining_fee": "Max. Mining-Gebühr:", + "coinjoin__max_rounds": "Max. Runden:", + "coinjoin__title": "COINJOIN AUTORISIEREN", + "coinjoin__title_do_not_disconnect": "TRENNE DEINEN TREZOR NICHT!", + "coinjoin__title_progress": "COINJOIN LÄUFT", + "coinjoin__waiting_for_others": "Auf andere warten", + "confirm_total__fee_rate": "Gebührensatz:", + "confirm_total__sending_from_account": "Gesendet von Konto:", + "confirm_total__title_fee": "GEBÜHREN-INFO", + "confirm_total__title_sending_from": "GESENDET VON", + "debug__loading_seed": "Seed wird geladen", + "debug__loading_seed_not_recommended": "Das Laden von privaten Seeds wird nicht empfohlen.", + "device_name__change_template": "Gerätename in {} ändern?", + "device_name__title": "GERÄTENAME", + "entropy__send": "Möchtest du die Entropie wirklich senden?", + "entropy__title": "INTERNE ENTROPIE", + "entropy__title_confirm": "ENTROPIE BESTÄTIGEN", + "eos__about_to_sign_template": "Du bist dabei, {} zu signieren.", + "eos__action_name": "Aktionsname:", + "eos__arbitrary_data": "Beliebige Daten", + "eos__buy_ram": "RAM kaufen", + "eos__bytes": "Bytes:", + "eos__cancel_vote": "Vote abbrechen", + "eos__checksum": "Prüfsumme:", + "eos__code": "Code:", + "eos__contract": "Kontrakt:", + "eos__cpu": "CPU:", + "eos__creator": "Ersteller:", + "eos__delegate": "Delegieren", + "eos__delete_auth": "Auth löschen", + "eos__from": "Von:", + "eos__link_auth": "Auth verknüpfen", + "eos__memo": "Memo", + "eos__name": "Name:", + "eos__net": "NET:", + "eos__new_account": "Neues Konto", + "eos__owner": "Eigentümer:", + "eos__parent": "Elternteil:", + "eos__payer": "Zahlender:", + "eos__permission": "Berechtigung:", + "eos__proxy": "Proxy:", + "eos__receiver": "Empfänger:", + "eos__refund": "Rückerstattung", + "eos__requirement": "Anforderung:", + "eos__sell_ram": "RAM verkaufen", + "eos__sender": "Sender:", + "eos__sign_transaction": "Transaktion signieren", + "eos__threshold": "Schwelle:", + "eos__to": "An:", + "eos__transfer": "Überweisung:", + "eos__type": "Typ:", + "eos__undelegate": "Delegieren aufheben", + "eos__unlink_auth": "Auth-Verknüpfung aufheben", + "eos__update_auth": "Auth aktualisieren", + "eos__vote_for_producers": "Vote für Produzenten", + "eos__vote_for_proxy": "Vote für Proxy", + "eos__voter": "Voter:", + "ethereum__amount_sent": "Gesendeter Betrag:", + "ethereum__contract": "Kontrakt:", + "ethereum__data_size_template": "Größe: {} Bytes", + "ethereum__gas_limit": "Gas-Grenze:", + "ethereum__gas_price": "Gas-Preis:", + "ethereum__max_gas_price": "Max. Gas-Preis:", + "ethereum__name_and_version": "Name und Version", + "ethereum__new_contract": "neuer Kontrakt?", + "ethereum__no_message_field": "Kein Nachrichtenfeld", + "ethereum__priority_fee": "Prioritätsgebühr:", + "ethereum__show_full_array": "Vollständiges Array anzeigen", + "ethereum__show_full_domain": "Vollständige Domain anzeigen", + "ethereum__show_full_message": "Vollständige Nachricht anzeigen", + "ethereum__show_full_struct": "Vollständige Struktur anzeigen", + "ethereum__sign_eip712": "EIP-712-Daten wirklich signieren?", + "ethereum__title_confirm_data": "DATEN BESTÄTIGEN", + "ethereum__title_confirm_domain": "DOMAIN BESTÄTIGEN", + "ethereum__title_confirm_message": "NACHRICHT BESTÄTIGEN", + "ethereum__title_confirm_struct": "STRUKTUR BESTÄTIGEN", + "ethereum__title_confirm_typed_data": "DATEN BESTÄTIGEN", + "ethereum__title_signing_address": "SIGNIERADRESSE", + "ethereum__units_template": "{} Einheiten", + "ethereum__unknown_token": "Ungültiger Token", + "ethereum__valid_signature": "Die Signatur ist gültig.", + "experimental_mode__enable": "Experimentelle Funktionen aktivieren?", + "experimental_mode__only_for_dev": "Nur für Entwicklung und Beta-Tests.", + "experimental_mode__title": "EXPERIMENTIERMODUS", + "fido__already_registered": "Bereits registriert", + "fido__device_already_registered": "Das Gerät ist bereits bei dieser Anwendung registriert.", + "fido__device_already_registered_with_template": "Dieses Gerät ist bereits bei {} registriert.", + "fido__device_not_registered": "Das Gerät ist nicht bei dieser Anwendung registriert.", + "fido__does_not_belong": "Die Daten, die du importieren möchtest,\ngehören nicht zu diesem Authentifikator.", + "fido__erase_credentials": "alle Daten löschen?", + "fido__export_credentials": "Informationen über die auf diesem Gerät gespeicherten Daten exportieren?", + "fido__not_registered": "Nicht registriert", + "fido__not_registered_with_template": "Dieses Gerät ist nicht registriert bei\n{}.", + "fido__please_enable_pin_protection": "Aktiviere den PIN-Schutz.", + "fido__title_authenticate": "FIDO2 AUTHENTIFIZIEREN", + "fido__title_import_credential": "DATEN IMPORTIEREN", + "fido__title_list_credentials": "DATEN AUFLISTEN", + "fido__title_register": "FIDO2 REGISTRIEREN", + "fido__title_remove_credential": "DATEN ENTFERNEN", + "fido__title_reset": "FIDO2 ZURÜCKSETZEN", + "fido__title_u2f_auth": "U2F authentifizieren", + "fido__title_u2f_register": "U2F registrieren", + "fido__title_verify_user": "FIDO2 Benutzer verifizieren", + "fido__unable_to_verify_user": "Benutzer kann nicht verifiziert werden.", + "fido__wanna_erase_credentials": "Möchtest du wirklich alle Daten löschen?", + "firmware_update__title": "FIRMWARE AKTUALISIEREN", + "firmware_update__title_fingerprint": "FW Fingerabdruck", + "homescreen__click_to_connect": "Zum Verbinden klicken", + "homescreen__click_to_unlock": "Zum Entsperren klicken", + "homescreen__title_backup_failed": "BACKUP FEHLGESCHLAGEN", + "homescreen__title_backup_needed": "BACKUP ERFORDERLICH", + "homescreen__title_coinjoin_authorized": "COINJOIN AUTORISIERT", + "homescreen__title_experimental_mode": "EXPERIMENTIERMODUS", + "homescreen__title_no_usb_connection": "KEINE USB-VERBINDUNG", + "homescreen__title_pin_not_set": "PIN NICHT FESTGELEGT", + "homescreen__title_seedless": "OHNE SEED", + "homescreen__title_set": "STARTBILDSCHIRM FESTLEGEN", + "inputs__back": "ZURÜCK", + "inputs__cancel": "ABBRECHEN", + "inputs__delete": "LÖSCHEN", + "inputs__enter": "EINGEBEN", + "inputs__return": "ZURÜCK", + "inputs__show": "ANZEIGEN", + "inputs__space": "LEER", + "joint__title": "GEMEINSAME TRANSAKTION", + "joint__to_the_total_amount": "Gesamtbetrag:", + "joint__you_are_contributing": "Dein Anteil:", + "language__change_to": "Sprache auf {} ändern?", + "language__changed": "Sprache erfolgreich geändert", + "language__progress": "Sprache wird geändert", + "language__title": "SPRACHEINSTELLUNGEN", + "lockscreen__tap_to_connect": "Zum Verbinden tippen", + "lockscreen__tap_to_unlock": "Zum Entsperren tippen", + "lockscreen__title_locked": "GESPERRT", + "lockscreen__title_not_connected": "NICHT VERBUNDEN", + "misc__decrypt_value": "Wert entschlüsseln", + "misc__encrypt_value": "Wert verschlüsseln", + "misc__title_suite_labeling": "SUITE-LABELING", + "modify_amount__decrease_amount": "Betrag reduzieren um:", + "modify_amount__increase_amount": "Betrag erhöhen um:", + "modify_amount__new_amount": "Neuer Betrag:", + "modify_amount__title": "BETRAG ÄNDERN", + "modify_fee__decrease_fee": "Gebühr reduzieren um:", + "modify_fee__fee_rate": "Gebührensatz:", + "modify_fee__increase_fee": "Gebühr erhöhen um:", + "modify_fee__new_transaction_fee": "Neue Transaktionsgebühr:", + "modify_fee__no_change": "Deine Gebühr hat sich nicht geändert.", + "modify_fee__title": "GEBÜHR ÄNDERN", + "modify_fee__transaction_fee": "Transaktionsgebühr:", + "monero__confirm_export": "Export bestätigen", + "monero__confirm_ki_sync": "KI-Sync bestätigen", + "monero__confirm_refresh": "Aktualisieren bestätigen", + "monero__confirm_unlock_time": "Entsperrzeit bestätigen", + "monero__hashing_inputs": "Eingaben werden gehasht", + "monero__payment_id": "Zahlungs-ID", + "monero__postprocessing": "Wird nachgearbeitet...", + "monero__processing": "Wird verarbeitet...", + "monero__processing_inputs": "Eingaben werden verarbeitet", + "monero__processing_outputs": "Ausgaben werden verarbeitet", + "monero__signing": "Wird signiert...", + "monero__signing_inputs": "Eingaben werden signiert", + "monero__unlock_time_set_template": "Entsperrzeit für diese Transaktion ist auf {} festgelegt", + "monero__wanna_export_tx_der": "Möchtest du wirklich tx_key exportieren\nfür tx_proof?", + "monero__wanna_export_tx_key": "Möchtest du wirklich tx_key exportieren?", + "monero__wanna_export_watchkey": "Möchtest du wirklich Watch-Only-Daten exportieren?", + "monero__wanna_start_refresh": "Möchtest du wirklich\ndie Aktualisierung starten?", + "monero__wanna_sync_key_images": "Möchtest du wirklich\nKey-Images synchronisieren?", + "nem__absolute": "absolut", + "nem__activate": "Aktivieren", + "nem__add": "Hinzufügen", + "nem__confirm_action": "Aktion bestätigen", + "nem__confirm_address": "Adresse bestätigen", + "nem__confirm_creation_fee": "Erstellungsgebühr bestätigen", + "nem__confirm_mosaic": "Mosaik bestätigen", + "nem__confirm_multisig_fee": "Multisig-Gebühr bestätigen", + "nem__confirm_namespace": "Namespace bestätigen", + "nem__confirm_payload": "Nutzdaten bestätigen", + "nem__confirm_properties": "Eigenschaften bestätigen", + "nem__confirm_rental_fee": "Leihgebühr bestätigen", + "nem__confirm_transfer_of": "Bestätigung der Überweisung von", + "nem__convert_account_to_multisig": "Konto in Multisig-Konto umwandeln?", + "nem__cosign_transaction_for": "Transaktion mitzeichnen für", + "nem__cosignatory": " Mitunterzeichner", + "nem__create_mosaic": "Mosaik erstellen", + "nem__create_namespace": "Namespace erstellen", + "nem__deactivate": "Deaktivieren", + "nem__decrease": "Verringern", + "nem__description": "Beschreibung:", + "nem__divisibility_and_levy_cannot_be_shown": "Teilbarkeit und Abgaben können bei unbekannten Mosaiken nicht angezeigt werden", + "nem__encrypted": "Verschlüsselt:", + "nem__final_confirm": "Letzte Bestätigung", + "nem__immutable": "unveränderlich", + "nem__increase": "Erhöhen", + "nem__initial_supply": "Anfängliches Angebot:", + "nem__initiate_transaction_for": "Transaktion initiieren für", + "nem__levy_divisibility": "Teilbarkeit der Abgaben:", + "nem__levy_fee": "Abgabengebühr", + "nem__levy_fee_of": "Abgabengebühr von", + "nem__levy_mosaic": "Abgabenmosaik:", + "nem__levy_namespace": "Abgaben-Namespace:", + "nem__levy_recipient": "Abgabenempfänger:", + "nem__levy_type": "Abgabentyp:", + "nem__modify_supply_for": "Ändern des Angebots für", + "nem__modify_the_number_of_cosignatories_by": "Ändern der Anzahl der Mitunterzeichner um ", + "nem__mutable": "veränderlich", + "nem__of": "von", + "nem__percentile": "Perzentil", + "nem__raw_units_template": "{} Roheinheiten", + "nem__remote_harvesting": " Remote-Harvesting?", + "nem__remove": "Entfernen", + "nem__set_minimum_cosignatories_to": "Mindestanzahl der Mitunterzeichner festlegen auf ", + "nem__sign_tx_fee_template": "Diese Transaktion signieren\nund {} zahlen\nfür Netzwerkgebühr?", + "nem__supply_change": "Angebotsänderung", + "nem__supply_units_template": "{} Angebot um {} ganze Einheiten?", + "nem__transferable": "Übertragbar?", + "nem__under_namespace": "unter Namespace", + "nem__unencrypted": "Unverschlüsselt:", + "nem__unknown_mosaic": "Unbekanntes Mosaik.", + "passphrase__access_hidden_wallet": "Auf Passphrase Wallet zugreifen?", + "passphrase__always_on_device": "Möchtest du die Passphrase wirklich immer auf dem Gerät eingeben?", + "passphrase__from_host_not_shown": "Vom Host bereitgestellte Passphrase wird verwendet, aufgrund der Geräteeinstellungen aber nicht angezeigt.", + "passphrase__hidden_wallet": "Passphrase Wallet", + "passphrase__hide": "Passphrase vom Host ausblenden?", + "passphrase__next_screen_will_show_passphrase": "Passphrase wird auf dem nächsten Bildschirm angezeigt.", + "passphrase__please_enter": "Gib deine Passphrase ein.", + "passphrase__revoke_on_device": "Möchtest du die Passphrase auf dem Gerät widerrufen?", + "passphrase__title_confirm": "PASSPHRASE BESTÄTIGEN", + "passphrase__title_enter": "PASSPHRASE EINGEBEN", + "passphrase__title_hide": "PASSPHRASE AUSBLENDEN", + "passphrase__title_settings": "PASSPHRASEN-EINSTELLUNGEN", + "passphrase__title_source": "PASSPHRASEN-QUELLE", + "passphrase__turn_off": "Passphrasenschutz deaktivieren?", + "passphrase__turn_on": "Passphrasenschutz aktivieren?", + "pin__change": "PIN ändern?", + "pin__changed": "PIN geändert.", + "pin__cursor_will_change": "Die Cursorposition ändert sich für mehr Sicherheit zwischen den Einträgen.", + "pin__diff_from_wipe_code": "Die neue PIN muss sich von deinem Löschcode unterscheiden.", + "pin__disabled": "PIN-Schutz\ndeaktiviert.", + "pin__enabled": "PIN-Schutz\naktiviert.", + "pin__enter": "PIN eingeben", + "pin__enter_new": "Neue PIN eingeben", + "pin__entered_not_valid": "Der Pin, den Sie eingegeben haben, ist nicht gültig.", + "pin__info": "PIN ist erforderlich, um auf das Gerät zuzugreifen.", + "pin__invalid_pin": "Die eingegebene PIN ist ungültig.", + "pin__last_attempt": "Letzter Versuch", + "pin__mismatch": "Eingegebene PINs stimmen nicht überein.", + "pin__pin_mismatch": "Pin -Nichtübereinstimmung", + "pin__please_check_again": "Bitte noch einmal prüfen.", + "pin__reenter_new": "Neue PIN erneut eingeben", + "pin__reenter_to_confirm": "Gib die PIN zur Bestätigung erneut ein.", + "pin__should_be_long": "PIN sollte aus 4-50 Ziffern bestehen.", + "pin__title_check_pin": "PIN PRÜFEN", + "pin__title_settings": "PIN-EINSTELLUNGEN", + "pin__title_wrong_pin": "FALSCHE PIN", + "pin__tries_left": "Versuche übrig", + "pin__turn_off": "Möchtest du den PIN-Schutz wirklich deaktivieren?", + "pin__turn_on": "PIN-Schutz aktivieren?", + "pin__wrong_pin": "Falsche PIN", + "plurals__contains_x_keys": "Schlüssel|Schlüssel", + "plurals__lock_after_x_hours": "Stunde|Stunden", + "plurals__lock_after_x_milliseconds": "Millisekunden|Millisekunden", + "plurals__lock_after_x_minutes": "Minute|Minuten", + "plurals__lock_after_x_seconds": "Zweite|Sekunden", + "plurals__sign_x_actions": "Aktion|Aktionen", + "plurals__transaction_of_x_operations": "Betrieb|Operationen", + "plurals__x_groups_needed": "Gruppe|Gruppen", + "plurals__x_shares_needed": "Aktien|Aktien", + "progress__authenticity_check": "Authentizität überprüfen...", + "progress__done": "Fertig", + "progress__loading_transaction": "Transaktion wird geladen...", + "progress__locking_device": "Das Gerät sperren...", + "progress__one_second_left": "1 Sekunde verbleibend", + "progress__please_wait": "BITTE WARTEN", + "progress__processing": "VERARBEITUNG", + "progress__refreshing": "Wird aktualisiert...", + "progress__signing_transaction": "Transaktion wird signiert...", + "progress__syncing": "Wird synchronisiert...", + "progress__x_seconds_left_template": "{} Sekunden verbleibend", + "reboot_to_bootloader__restart": "Möchtest du Trezor im Bootloader-Modus neu starten?", + "reboot_to_bootloader__title": "ZUM BOOTLOADER", + "reboot_to_bootloader__version_by_template": "Firmware Version {}\nvon {}", + "recovery__cancel_dry_run": "Backup-Überprüfung abbrechen", + "recovery__check_dry_run": "Backup überprüfen?", + "recovery__cursor_will_change": "Die Cursorposition ändert sich für mehr Sicherheit zwischen den Einträgen.", + "recovery__dry_run_bip39_valid_match": "Der eingegebene Recovery Seed ist gültig und stimmt mit dem auf dem Gerät überein.", + "recovery__dry_run_bip39_valid_mismatch": "Der eingegebene Recovery Seed ist gültig, stimmt aber nicht mit dem auf dem Gerät überein.", + "recovery__dry_run_slip39_valid_match": "Die eingegebenen Recovery Shares sind gültig und stimmen mit den Daten auf dem Gerät überein.", + "recovery__dry_run_slip39_valid_mismatch": "Die eingegebenen Recovery Shares sind gültig, stimmen aber nicht mit den Daten auf dem Gerät überein.", + "recovery__enter_any_share": "Share eingeben", + "recovery__enter_backup": "Gib dein Backup ein.", + "recovery__enter_different_share": "Gib einen anderen Share ein.", + "recovery__enter_share_from_diff_group": "Gib einen Share von einer anderen Gruppe ein.", + "recovery__group_num_template": "Gruppe {}", + "recovery__group_threshold_reached": "Gruppenschwelle wurde erreicht.", + "recovery__invalid_seed_entered": "Eingegebener Recovery Seed ist ungültig.", + "recovery__invalid_share_entered": "Eingegebener Recovery Share ist ungültig.", + "recovery__more_shares_needed": "Weitere Shares erforderlich", + "recovery__num_of_words": "Wähle die Anzahl der Wörter in deinem Backup aus.", + "recovery__only_first_n_letters": "Sie müssen nur die ersten 2-4 Buchstaben jedes Wortes auswählen.", + "recovery__progress_will_be_lost": "Alle Fortschritte gehen verloren.", + "recovery__select_num_of_words": "Wähle die Anzahl der Wörter in deinem Backup aus.", + "recovery__share_already_entered": "Share wurde bereits eingegeben.", + "recovery__share_from_another_shamir": "Du hast einen Share von einem anderen Shamir-Backup eingegeben.", + "recovery__share_num_template": "Share {}", + "recovery__title": "WALLET WIEDERHERSTELLEN", + "recovery__title_cancel_dry_run": "BACKUP-ÜBERPRÜFUNG ABBRECHEN", + "recovery__title_cancel_recovery": "WIEDERHERSTELLUNG ABBRECHEN", + "recovery__title_dry_run": "BACKUP-ÜBERPRÜFUNG", + "recovery__title_recover": "WALLET WIEDERHERSTELLEN", + "recovery__title_remaining_shares": "VERBLEIBENDE SHARES", + "recovery__type_word_x_of_y_template": "Tippe Wort {} von {}", + "recovery__wallet_recovered": "Wallet Wiederherstellung erfolgreich", + "recovery__wanna_cancel_dry_run": "Möchtest du die Backup-Überprüfung wirklich abbrechen?", + "recovery__wanna_cancel_recovery": "Möchtest du die Wiederherstellung wirklich abbrechen?", + "recovery__word_count_template": "({} Wörter)", + "recovery__word_x_of_y_template": "WORT {} VON {}", + "recovery__x_more_items_starting_template_plural": "{count} mehr {plural} Start", + "recovery__x_more_shares_needed_template_plural": "{count} mehr {plural} benötigt.", + "recovery__x_of_y_entered_template": "{} von {} Shares erfolgreich eingegeben.", + "recovery__you_have_entered": "Du hast eingegeben", + "reset__advanced_group_threshold_info": "Die Gruppenschwelle bestimmt, wie viele Gruppen zur Wallet Wiederherstellung nötig sind.", + "reset__all_x_of_y_template": "alle {} der {} Shares", + "reset__any_x_of_y_template": "{} der {} Shares", + "reset__button_create": "WALLET ERSTELLEN", + "reset__button_recover": "WALLET WIEDERHERSTELLEN", + "reset__by_continuing": "Wenn du fortfährst, stimmst du den Geschäftsbedingungen von Trezor Company zu.", + "reset__check_backup_title": "BACKUP ÜBERPRÜFEN", + "reset__check_group_share_title_template": "G{} - S{} ÜBERPRÜFEN", + "reset__check_seed_title": "SEED ÜBERPRÜFEN", + "reset__check_share_title_template": "SHARE #{} ÜBERPRÜFEN", + "reset__continue_with_next_share": "Fahre mit dem nächsten Share fort.", + "reset__continue_with_share_template": "Fahre mit Share #{} fort.", + "reset__finished_verifying_group_template": "Die Überprüfung deiner Recovery Shares für die Gruppe {} ist abgeschlossen.", + "reset__finished_verifying_seed": "Die Überprüfung deines Recovery Seeds ist abgeschlossen.", + "reset__finished_verifying_shares": "Die Überprüfung deiner Recovery Shares ist abgeschlossen.", + "reset__group_description": "Eine Gruppe besteht aus Recovery Shares.", + "reset__group_info": "Jede Gruppe hat eine bestimmte Anzahl von Shares und eine eigene Schwelle. In den nächsten Schritten legst du die Anzahl der Shares und die Schwellen fest.", + "reset__group_share_checked_successfully_template": "Gruppe {} - Share {} erfolgreich geprüft.", + "reset__group_share_title_template": "GRUPPE {} - SHARE {}", + "reset__more_info_at": "Weitere Informationen unter", + "reset__need_all_share_template": "Du benötigst alle {} Shares zur Wiederherstellung.", + "reset__need_any_share_template": "Du benötigst {} Shares zur Wiederherstellung.", + "reset__needed_to_form_a_group": "erforderlich, um Gruppe zu bilden. ", + "reset__needed_to_recover_your_wallet": "erforderlich, um dein Wallet wiederherzustellen. ", + "reset__never_make_digital_copy": "Erstelle niemals eine digitale Kopie deines Backups oder lade es online hoch!", + "reset__num_of_share_holders_template": "{} Personen oder Standorte halten jeweils einen Share.", + "reset__num_of_shares_advanced_info_template": "Jeder Recovery Share besteht aus 20 Wörtern. Wähle jetzt die Schwelle für die Anzahl der Shares zur Bildung von Gruppe {}.", + "reset__num_of_shares_basic_info": "Jeder Recovery Share besteht aus 20 Wörtern. Wähle jetzt, wie viele Shares du für die Wiederherstellung deiner Wallets benötigst.", + "reset__num_shares_for_group_template": "Die erforderliche Anzahl an Shares zur Bildung der Gruppe {}.", + "reset__number_of_shares_info": "= Gesamtzahl eindeutiger Wortlisten für Wallet-Backup.", + "reset__one_share": "1 Share", + "reset__only_one_share_will_be_created": "Es wird nur ein Share erstellt.", + "reset__recovery_seed_title": "RECOVERY SEED", + "reset__recovery_share_title_template": "RECOVERY SHARE #{}", + "reset__required_number_of_groups": "Die für die Wiederherstellung erforderliche Anzahl von Gruppen.", + "reset__select_correct_word": "Wähle für jede Position das richtige Wort.", + "reset__select_word_template": "{} WORT AUSWÄHLEN", + "reset__select_word_x_of_y_template": "Wort {} von {}:", + "reset__set_it_to_count_template": "Bei {} benötigst du ", + "reset__share_checked_successfully_template": "Recovery Share #{} erfolgreich geprüft.", + "reset__share_words_title": "STANDARD-BACKUP", + "reset__slip39_checklist_num_groups": "Anzahl der Gruppen", + "reset__slip39_checklist_num_shares": "Anzahl der Shares", + "reset__slip39_checklist_set_num_groups": "Stellen Sie die Anzahl der Gruppen fest", + "reset__slip39_checklist_set_num_shares": "Anzahl der Aktien festlegen", + "reset__slip39_checklist_set_sizes": "Größen und Schwellen festlegen", + "reset__slip39_checklist_set_sizes_longer": "Setzen Sie Größe und Schwellenwert für jede Gruppe", + "reset__slip39_checklist_set_threshold": "Schwelle festlegen", + "reset__slip39_checklist_title": "BACKUP-CHECKLISTE", + "reset__slip39_checklist_write_down": "Alle Shares notieren und prüfen", + "reset__slip39_checklist_write_down_recovery": "Schreiben Sie auf und überprüfen Sie alle Wiederherstellungsanteile", + "reset__the_threshold_sets_the_number_of_shares": "Die Schwelle bestimmt die Anzahl der Shares ", + "reset__threshold_info": "= Mindestanzahl eindeutiger Wortlisten für Wiederherstellung.", + "reset__title_backup_is_done": "BACKUP FERTIG", + "reset__title_create_wallet": "WALLET ERSTELLEN", + "reset__title_create_wallet_shamir": "WALLET ERSTELLEN (SHAMIR)", + "reset__title_group_threshold": "GRUPPENSCHWELLE", + "reset__title_number_of_groups": "ANZAHL DER GRUPPEN", + "reset__title_number_of_shares": "ANZAHL SHARES", + "reset__title_set_group_threshold": "GRUPPENSCHWELLE FESTLEGEN", + "reset__title_set_number_of_groups": "ANZAHL DER GRUPPEN FESTLEGEN", + "reset__title_set_number_of_shares": "ANZAHL DER SHARES FESTLEGEN", + "reset__title_set_threshold": "SCHWELLE FESTLEGEN", + "reset__to_form_group_template": "zur Bildung von Gruppe {}.", + "reset__tos_link": "trezor.io/tos", + "reset__total_number_of_shares_in_group_template": "Bestimme die Anzahl der Shares in Gruppe {}.", + "reset__use_your_backup": "Verwende dein Backup, um dein Wallet wiederherzustellen.", + "reset__write_down_words_template": "Schreibe alle {} Wörter der Reihe nach auf.", + "reset__wrong_word_selected": "Ausgewähltes Wort ist falsch!", + "reset__you_need_one_share": "Du benötigst 1 Share zur Wiederherstellung.", + "reset__your_backup_is_done": "Dein Backup ist abgeschlossen.", + "ripple__confirm_tag": "Tag bestätigen", + "ripple__destination_tag_template": "Ziel-Tag:\n{}", + "rotation__change_template": "Möchtest du das Gerät nach {} drehen?", + "rotation__east": "Osten", + "rotation__north": "Norden", + "rotation__south": "Süden", + "rotation__title_change": "DREHUNG ÄNDERN", + "rotation__west": "Westen", + "safety_checks__approve_unsafe_always": "Trezor erlaubt dir, einige Aktionen zu genehmigen, die unsicher sein könnten.", + "safety_checks__approve_unsafe_temporary": "Trezor erlaubt dir vorübergehend, einige Aktionen zu genehmigen, die unsicher sein könnten.", + "safety_checks__enforce_strict": "Möchtest du wirklich strenge Sicherheitsüberprüfungen erzwingen (empfohlen)?", + "safety_checks__title": "SICHERHEITSÜBERPRÜFUNGEN", + "safety_checks__title_safety_override": "SICHERHEITSÜBERSCHREIBUNG", + "sd_card__all_data_will_be_lost": "Alle Daten auf der SD-Karte gehen verloren.", + "sd_card__card_required": "SD-Karte erforderlich.", + "sd_card__disable": "Möchtest du den SD-Kartenschutz wirklich vom Gerät entfernen?", + "sd_card__disabled": "Du hast den SD-Schutz erfolgreich deaktiviert.", + "sd_card__enable": "Möchtest du dein Gerät wirklich mit dem SD-Kartenschutz sichern?", + "sd_card__enabled": "Du hast den SD-Schutz erfolgreich aktiviert.", + "sd_card__error": "SD-Kartenfehler", + "sd_card__format_card": "SD-Karte formatieren", + "sd_card__insert_correct_card": "Lege die für dieses Gerät passende SD-Karte ein.", + "sd_card__please_insert": "Lege deine SD-Karte ein.", + "sd_card__please_unplug_and_insert": "Trenne das Gerät und lege deine SD-Karte ein.", + "sd_card__problem_accessing": "Es gab ein Problem beim Zugriff auf die SD-Karte.", + "sd_card__refresh": "Möchtest du wirklich das aktuelle SD-Kartengeheimnis durch ein neu generiertes ersetzen?", + "sd_card__refreshed": "Du hast den SD-Schutz erfolgreich aktualisiert.", + "sd_card__restart": "Möchtest du Trezor im Bootloader-Modus neu starten?", + "sd_card__title": "SD-KARTENSCHUTZ", + "sd_card__title_problem": "SD-Kartenproblem", + "sd_card__unknown_filesystem": "Unbekanntes Dateisystem", + "sd_card__unplug_and_insert_correct": "Trenne das Gerät und lege die richtige SD-Karte ein.", + "sd_card__use_different_card": "Verwende eine andere Karte oder formatiere die SD-Karte mit dem FAT32-Dateisystem", + "sd_card__wanna_format": "Möchtest du die SD-Karte wirklich formatieren?", + "sd_card__wrong_sd_card": "Falsche SD-Karte", + "send__address_path": "Adressweg", + "send__confirm_sending": "Confirm_sending", + "send__from_multiple_accounts": "Senden von mehreren Konten.", + "send__including_fee": "Eins. Gebühr:", + "send__maximum_fee": "Max. Gebühr:", + "send__receiving_to_multisig": "Empfangen auf eine Multisig -Adresse.", + "send__title_confirm_sending": "SENDEN BESTÄTIGEN", + "send__title_joint_transaction": "GEMEINSAME TRANSAKTION", + "send__title_receiving_to": "Empfangen zu", + "send__title_sending": "SENDEN", + "send__title_sending_amount": "BETRAG SENDEN", + "send__title_sending_to": "SENDEN AN", + "send__to_the_total_amount": "Gesamtbetrag:", + "send__total_amount": "Gesamtbetrag:", + "send__transaction_id": "Transaktions-ID:", + "send__you_are_contributing": "Dein Anteil:", + "share_words__words_in_order": " Wörter der Reihe nach notiert.", + "share_words__wrote_down_all": "Ich habe alle ", + "sign_message__bytes_template": "{} Bytes", + "sign_message__confirm_address": "SIGNIERADRESSE", + "sign_message__confirm_message": "NACHRICHT BESTÄTIGEN", + "sign_message__message_size": "Nachrichtengröße:", + "sign_message__verify_address": "ADRESSE BESTÄTIGEN", + "solana__account_index": "Kontoindex", + "solana__associated_token_account": "Assoziiertes Token -Konto", + "solana__confirm_multisig": "Multisig bestätigen", + "solana__expected_fee": "Erwartete Gebühr", + "solana__instruction_accounts_template": "Der Befehl enthält {} Konten und ihre Daten sind {} Bytes lang.", + "solana__instruction_data": "Anweisungsdaten", + "solana__instruction_is_multisig": "Die folgende Anweisung ist eine Multisig -Anweisung.", + "solana__is_provided_via_lookup_table_template": "{} wird über eine Nachschlagtabelle bereitgestellt.", + "solana__lookup_table_address": "Suchtabellenadresse", + "solana__multiple_signers": "Mehrere Unterzeichner", + "solana__token_address": "Token -Adresse", + "solana__transaction_contains_unknown_instructions": "Die Transaktion enthält unbekannte Anweisungen.", + "solana__transaction_requires_x_signers_template": "Die Transaktion erfordert {} Unterzeichner, was die Gebühr erhöht.", + "stellar__account_merge": "Kontozusammenführung", + "stellar__account_thresholds": "Kontoschwellen", + "stellar__add_signer": "Unterzeichner hinzufügen", + "stellar__add_trust": "Trust hinzufügen", + "stellar__all_will_be_sent_to": "Alle XLM werden gesendet an:", + "stellar__allow_trust": "Trust zulassen", + "stellar__asset": "Asset", + "stellar__balance_id": "Balance -ID", + "stellar__bump_sequence": "Bump-Sequenz", + "stellar__buying": "Kaufen:", + "stellar__claim_claimable_balance": "Anspruchsbeanspruchungsbilanz", + "stellar__clear_data": "Daten löschen", + "stellar__clear_flags": "Flags löschen", + "stellar__confirm_issuer": "Aussteller bestätigen", + "stellar__confirm_memo": "Memo bestätigen", + "stellar__confirm_network": "Netzwerk bestätigen", + "stellar__confirm_operation": "Operation bestätigen", + "stellar__confirm_stellar": "Stellar bestätigen", + "stellar__confirm_timebounds": "Zeitrahmen bestätigen", + "stellar__create_account": "Konto erstellen", + "stellar__debited_amount": "Abgebuchter Betrag", + "stellar__delete": "Löschen", + "stellar__delete_passive_offer": "Passives Angebot löschen", + "stellar__delete_trust": "Trust löschen", + "stellar__destination": "Ziel:", + "stellar__exchanges_require_memo": "Wichtig: Viele Börsen verlangen bei der Einzahlung ein Memo", + "stellar__final_confirm": "Letzte Bestätigung", + "stellar__hash": "Hash:", + "stellar__high": "Hoch:", + "stellar__home_domain": "Startseite", + "stellar__inflation": "Inflation", + "stellar__initial_balance": "Startguthaben", + "stellar__initialize_signing_with": "Initialisierung der Unterzeichnung mit", + "stellar__issuer_template": "{} Aussteller:", + "stellar__key": "Key:", + "stellar__limit": "Grenze:", + "stellar__low": "Niedrig:", + "stellar__master_weight": "Master-Gewicht:", + "stellar__medium": "Mittel:", + "stellar__new_offer": "Neues Angebot", + "stellar__new_passive_offer": "Neues passives Angebot", + "stellar__no_memo_set": "Kein Memo festgelegt.", + "stellar__no_restriction": "[keine Einschränkung]", + "stellar__on_network_template": "Transaktion ist auf {}", + "stellar__path_pay": "Path Pay", + "stellar__path_pay_at_least": "Path Pay mindestens", + "stellar__pay": "Zahlen:", + "stellar__pay_at_most": "Maximal:", + "stellar__preauth_transaction": "Vor-Auth-Transaktion:", + "stellar__price_per_template": "Preis pro {}:", + "stellar__private_network": "privates Netzwerk", + "stellar__remove_signer": "Unterzeichner entfernen", + "stellar__revoke_trust": "Trust aufheben", + "stellar__selling": "Verkaufen:", + "stellar__set_data": "Daten festlegen", + "stellar__set_flags": "Flags festlegen", + "stellar__set_sequence_to_template": "Sequenz auf {} setzen?", + "stellar__sign_tx_count_template": "Signiere diese Transaktion, die sich aus {} zusammensetzt ", + "stellar__sign_tx_fee_template": "und zahle {}\nGebühr?", + "stellar__source_account": "Quellkonto:", + "stellar__testnet_network": "Testnet-Netzwerk", + "stellar__trusted_account": "Vertrauenswürdiges Konto", + "stellar__update": "Aktualisieren", + "stellar__valid_from": "Gültig von (UTC)", + "stellar__valid_to": "Gültig bis (UTC)", + "stellar__value_sha256": "Wert (SHA-256):", + "stellar__wanna_clean_value_key_template": "Möchtest du den Wert-Key {} löschen?", + "stellar__your_account": " dein Konto", + "tezos__baker_address": "Baker-Adresse:", + "tezos__balance": "Guthaben:", + "tezos__ballot": "Abstimmung:", + "tezos__confirm_delegation": "Delegierung bestätigen", + "tezos__confirm_origination": "Herkunft bestätigen", + "tezos__delegator": "Delegator:", + "tezos__proposal": "Vorschlag", + "tezos__register_delegate": "Delegierten registrieren", + "tezos__remove_delegation": "Delegierung entfernen", + "tezos__submit_ballot": "Abstimmung senden", + "tezos__submit_proposal": "Vorschlag senden", + "tezos__submit_proposals": "Vorschläge senden", + "tutorial__middle_click": "Drücke gleichzeitig rechts und links,\num zu bestätigen.", + "tutorial__press_and_hold": "Drücke und halte die rechte Taste,\num wichtige Vorgänge zu genehmigen.", + "tutorial__ready_to_use": "Du kannst jetzt\nTrezor verwenden.", + "tutorial__scroll_down": "Drücke rechts, um nach unten zu scrollen und alles zu lesen, wenn der Text nicht auf einen Bildschirm passt.\n\rDrücke links, um nach oben zu scrollen.", + "tutorial__sure_you_want_skip": "Möchtest du das Tutorial\nwirklich überspringen?", + "tutorial__title_hello": "HALLO", + "tutorial__title_screen_scroll": "BILDSCHIRM SCROLLEN", + "tutorial__title_skip": "TUTORIAL ÜBERSPRINGEN", + "tutorial__title_tutorial_complete": "TUTORIAL BEENDET", + "tutorial__use_trezor": "Verwende Trezor durch\ndrücken der linken und rechten Tasten.\n\rWeiter rechts.", + "tutorial__welcome_press_right": "Willkommen bei Trezor. Drücke rechts, um fortzufahren.", + "u2f__get": "U2F-Zähler erhöhen und abrufen?", + "u2f__set_template": "U2F-Zähler auf {} setzen?", + "u2f__title_get": "U2F-ZÄHLER ERHALTEN", + "u2f__title_set": "U2F-ZÄHLER FESTLEGEN", + "wipe__info": "Alle Daten werden gelöscht.", + "wipe__title": "GERÄTEDATEN LÖSCHEN", + "wipe__want_to_wipe": "Möchtest du die Gerätedaten wirklich löschen?\n", + "wipe_code__change": "Löschcode ändern?", + "wipe_code__changed": "Löschcode geändert.", + "wipe_code__diff_from_pin": "Der Löschcode muss sich von deiner PIN unterscheiden. Noch einmal bitte.", + "wipe_code__disabled": "Löschcode deaktiviert.", + "wipe_code__enabled": "Löschcode aktiviert.", + "wipe_code__enter_new": "Neuen Löschcode", + "wipe_code__info": "Alle Daten von diesem Gerät gelöscht werden.", + "wipe_code__invalid": "Ungültiger Löschcode", + "wipe_code__mismatch": "Eingegebene Löschcodes stimmen nicht.", + "wipe_code__reenter": "Löschcode neu", + "wipe_code__reenter_to_confirm": "Gib den Löschcode zur Bestätigung erneut ein.", + "wipe_code__title_check": "LÖSCHCODE PRÜFEN", + "wipe_code__title_invalid": "UNGÜLTIGER LÖSCHCODE", + "wipe_code__title_settings": "LÖSCHCODE-EINSTELL.", + "wipe_code__turn_off": "Löschcode-Schutz deaktivieren?", + "wipe_code__turn_on": "Löschcode-Schutz aktivieren?", + "wipe_code__wipe_code_mismatch": "Löschen Code Konflikt", + "word_count__title": "ANZAHL DER WÖRTER", + "words__account": "Konto", + "words__account_colon": "Konto:", + "words__address": "Adresse", + "words__amount": "Menge", + "words__are_you_sure": "Bist du dir sicher?", + "words__array_of": "Anordnung von", + "words__blockhash": "Blockhash", + "words__buying": "Kaufen", + "words__confirm": "Bestätigen", + "words__confirm_fee": "Gebühr bestätigen", + "words__contains": "Enthält", + "words__continue_anyway": "trotzdem fortfahren?", + "words__continue_with": "Weiter mit", + "words__error": "Fehler", + "words__fee": "Gebühr", + "words__from": "von", + "words__keep_it_safe": "Sicher aufbewahren!", + "words__know_what_your_doing": "Fahre nur fort, wenn du dir ganz sicher bist!", + "words__my_trezor": "Mein Trezor", + "words__no": "NEIN", + "words__outputs": "Ausgaben", + "words__please_check_again": "Noch einmal prüfen", + "words__please_try_again": "Noch einmal versuchen", + "words__really_wanna": "Möchtest du wirklich", + "words__recipient": "Empfänger", + "words__sign": "Signieren", + "words__signer": "Unterzeichner", + "words__title_check": "PRÜFEN", + "words__title_group": "GRUPPE", + "words__title_information": "INFORMATION", + "words__title_remember": "ERINNERUNG", + "words__title_share": "SHARE", + "words__title_shares": "SHARES", + "words__title_success": "ERFOLG", + "words__title_summary": "ZUSAMMENFASSUNG", + "words__title_threshold": "SCHWELLE", + "words__unknown": "Unbekannt", + "words__warning": "Warnung", + "words__writable": "Schreibbar", + "words__yes": "Ja" + } +} diff --git a/core/translations/en.json b/core/translations/en.json new file mode 100644 index 000000000..b23ea69b7 --- /dev/null +++ b/core/translations/en.json @@ -0,0 +1,844 @@ +{ + "header": { + "change_language_prompt": "Change language to English?", + "change_language_title": "CHANGE LANGUAGE", + "language": "en-US", + "progress_text": "Changing language", + "version": "2.6.5" + }, + "translations": { + "addr_mismatch__contact_support_at": "Please contact Trezor support at", + "addr_mismatch__key_mismatch": "Key mismatch?", + "addr_mismatch__mismatch": "Address mismatch?", + "addr_mismatch__support_url": "trezor.io/support", + "addr_mismatch__wrong_derivation_path": "Wrong derivation path for selected account.", + "addr_mismatch__xpub_mismatch": "XPUB mismatch?", + "address__public_key": "Public key", + "address__title_cosigner": "COSIGNER", + "address__title_receive_address": "RECEIVE ADDRESS", + "address__title_yours": "YOURS", + "address_details__derivation_path": "Derivation path:", + "address_details__title_receive_address": "RECEIVE ADDRESS", + "address_details__title_receiving_to": "RECEIVING TO", + "authenticate__confirm_template": "Allow connected computer to confirm your {} is genuine?", + "authenticate__header": "Authenticate device", + "auto_lock__change_template": "Auto-lock your Trezor after {} of inactivity?", + "auto_lock__title": "AUTO-LOCK DELAY", + "backup__can_back_up_anytime": "You can back up your Trezor once, at any time.", + "backup__it_should_be_backed_up": "You should back up your new wallet right now.", + "backup__it_should_be_backed_up_now": "It should be backed up now!", + "backup__new_wallet_created": "New wallet created.\n", + "backup__new_wallet_successfully_created": "New wallet created successfully.", + "backup__recover_anytime": "You can use your backup to recover your wallet at any time.", + "backup__title_backup_wallet": "BACK UP WALLET", + "backup__title_skip": "SKIP BACKUP", + "backup__want_to_skip": "Are you sure you want to skip the backup?", + "binance__buy": "Buy", + "binance__confirm_cancel": "Confirm cancel", + "binance__confirm_input": "Confirm input", + "binance__confirm_order": "Confirm order", + "binance__confirm_output": "Confirm output", + "binance__order_id": "Order ID:", + "binance__pair": "Pair:", + "binance__price": "Price:", + "binance__quantity": "Quantity:", + "binance__sell": "Sell", + "binance__sender_address": "Sender address:", + "binance__side": "Side:", + "bitcoin__commitment_data": "Commitment data:", + "bitcoin__confirm_locktime": "Confirm locktime", + "bitcoin__create_proof_of_ownership": "Do you want to create a proof of ownership?", + "bitcoin__high_mining_fee_template": "The mining fee of\n{}\nis unexpectedly high.", + "bitcoin__locktime_no_effect": "Locktime is set but will have no effect.", + "bitcoin__locktime_set_to": "Locktime set to:", + "bitcoin__locktime_set_to_blockheight": "Locktime set to blockheight:", + "bitcoin__lot_of_change_outputs": "A lot of change-outputs.", + "bitcoin__multiple_accounts": "Multiple accounts", + "bitcoin__new_fee_rate": "New fee rate:", + "bitcoin__simple_send_of": "Simple send of", + "bitcoin__ticket_amount": "Ticket amount:", + "bitcoin__title_confirm_details": "CONFIRM DETAILS", + "bitcoin__title_finalize_transaction": "FINALIZE TRANSACTION", + "bitcoin__title_high_mining_fee": "HIGH MINING FEE", + "bitcoin__title_meld_transaction": "MELD TRANSACTIONS", + "bitcoin__title_modify_amount": "MODIFY AMOUNT", + "bitcoin__title_payjoin": "PAYJOIN", + "bitcoin__title_proof_of_ownership": "PROOF OF OWNERSHIP", + "bitcoin__title_purchase_ticket": "PURCHASE TICKET", + "bitcoin__title_update_transaction": "UPDATE TRANSACTION", + "bitcoin__unknown_path": "Unknown path", + "bitcoin__unknown_transaction": "Unknown transaction", + "bitcoin__unusually_high_fee": "Unusually high fee.", + "bitcoin__unverified_external_inputs": "The transaction contains unverified external inputs.", + "bitcoin__valid_signature": "The signature is valid.", + "bitcoin__voting_rights": "Voting rights to:", + "buttons__abort": "ABORT", + "buttons__access": "ACCESS", + "buttons__again": "AGAIN", + "buttons__allow": "ALLOW", + "buttons__back": "BACK", + "buttons__back_up": "BACK UP", + "buttons__cancel": "CANCEL", + "buttons__change": "CHANGE", + "buttons__check": "CHECK", + "buttons__check_again": "CHECK AGAIN", + "buttons__close": "CLOSE", + "buttons__confirm": "CONFIRM", + "buttons__continue": "CONTINUE", + "buttons__details": "DETAILS", + "buttons__enable": "ENABLE", + "buttons__enter": "ENTER", + "buttons__enter_share": "ENTER SHARE", + "buttons__export": "EXPORT", + "buttons__format": "FORMAT", + "buttons__go_back": "GO BACK", + "buttons__hold_to_confirm": "HOLD TO CONFIRM", + "buttons__info": "INFO", + "buttons__install": "INSTALL", + "buttons__more_info": "MORE INFO", + "buttons__ok_i_understand": "OK, I UNDERSTAND", + "buttons__purchase": "PURCHASE", + "buttons__quit": "QUIT", + "buttons__restart": "RESTART", + "buttons__retry": "RETRY", + "buttons__select": "SELECT", + "buttons__set": "SET", + "buttons__show_all": "SHOW ALL", + "buttons__show_details": "SHOW DETAILS", + "buttons__show_words": "SHOW WORDS", + "buttons__skip": "SKIP", + "buttons__try_again": "TRY AGAIN", + "buttons__turn_off": "TURN OFF", + "buttons__turn_on": "TURN ON", + "cardano__addr_base": "Base", + "cardano__addr_enterprise": "Enterprise", + "cardano__addr_legacy": "Legacy", + "cardano__addr_pointer": "Pointer", + "cardano__addr_reward": "Reward", + "cardano__address_no_staking": "address - no staking rewards.", + "cardano__amount_burned_decimals_unknown": "Amount burned (decimals unknown):", + "cardano__amount_minted_decimals_unknown": "Amount minted (decimals unknown):", + "cardano__amount_sent_decimals_unknown": "Amount sent (decimals unknown):", + "cardano__anonymous_pool": "Pool has no metadata (anonymous pool)", + "cardano__asset_fingerprint": "Asset fingerprint:", + "cardano__auxiliary_data_hash": "Auxiliary data hash:", + "cardano__block": "Block", + "cardano__catalyst": "Catalyst", + "cardano__certificate": "Certificate", + "cardano__change_output": "Change output", + "cardano__check_all_items": "Check all items carefully.", + "cardano__choose_level_of_details": "Choose level of details:", + "cardano__collateral_input_id": "Collateral input ID:", + "cardano__collateral_input_index": "Collateral input index:", + "cardano__collateral_output_contains_tokens": "The collateral return output contains tokens.", + "cardano__collateral_return": "Collateral return", + "cardano__confirm": "Confirm:", + "cardano__confirm_signing_stake_pool": "Confirm signing the stake pool registration as an owner.", + "cardano__confirm_transaction": "Confirm transaction", + "cardano__confirming_a_multisig_transaction": "Confirming a multisig transaction.", + "cardano__confirming_a_plutus_transaction": "Confirming a Plutus transaction.", + "cardano__confirming_pool_registration": "Confirming pool registration as owner.", + "cardano__confirming_transction": "Confirming a transaction.", + "cardano__cost": "Cost", + "cardano__credential_mismatch": "Credential doesn't match payment credential.", + "cardano__datum_hash": "Datum hash:", + "cardano__delegating_to": "Delegating to:", + "cardano__for_account_and_index_template": "for account {} and index {}:", + "cardano__for_account_template": "for account {}:", + "cardano__for_key_hash": "for key hash:", + "cardano__for_script": "for script:", + "cardano__inline_datum": "Inline datum", + "cardano__input_id": "Input ID:", + "cardano__input_index": "Input index:", + "cardano__intro_text_change": "The following address is a change address. Its", + "cardano__intro_text_owned_by_device": "The following address is owned by this device. Its", + "cardano__intro_text_registration_payment": "The vote key registration payment address is owned by this device. Its", + "cardano__key_hash": "key hash", + "cardano__margin": "Margin", + "cardano__multisig_path": "multi-sig path", + "cardano__nested_scripts_template": "Contains {} nested scripts.", + "cardano__network": "Network:", + "cardano__no_output_tx": "Transaction has no outputs, network cannot be verified.", + "cardano__nonce": "Nonce:", + "cardano__other": "other", + "cardano__path": "path", + "cardano__pledge": "Pledge", + "cardano__pointer": "pointer", + "cardano__policy_id": "Policy ID:", + "cardano__pool_metadata_hash": "Pool metadata hash:", + "cardano__pool_metadata_url": "Pool metadata url:", + "cardano__pool_owner": "Pool owner:", + "cardano__pool_reward_account": "Pool reward account:", + "cardano__reference_input_id": "Reference input ID:", + "cardano__reference_input_index": "Reference input index:", + "cardano__reference_script": "Reference script", + "cardano__required_signer": "Required signer", + "cardano__reward": "reward", + "cardano__reward_address": "Address is a reward address.", + "cardano__reward_eligibility_warning": "Warning: The address is not a payment address, it is not eligible for rewards.", + "cardano__rewards_go_to": "Rewards go to:", + "cardano__script": "script", + "cardano__script_all": "All", + "cardano__script_any": "Any", + "cardano__script_data_hash": "Script data hash:", + "cardano__script_hash": "Script hash:", + "cardano__script_invalid_before": "Invalid before", + "cardano__script_invalid_hereafter": "Invalid hereafter", + "cardano__script_key": "Key", + "cardano__script_n_of_k": "N of K", + "cardano__script_reward": "script reward", + "cardano__sending": "Sending", + "cardano__show_simple": "Show Simple", + "cardano__sign_tx_path_template": "Sign transaction with {}:", + "cardano__stake_delegation": "Stake delegation", + "cardano__stake_deregistration": "Stake key deregistration", + "cardano__stake_pool_registration": "Stakepool registration", + "cardano__stake_pool_registration_pool_id": "Stake pool registration\nPool ID:", + "cardano__stake_registration": "Stake key registration", + "cardano__staking_key_for_account": "Staking key for account", + "cardano__to_pool": "to pool:", + "cardano__token_minting_path": "token minting path", + "cardano__total_collateral": "Total collateral:", + "cardano__transaction": "Transaction", + "cardano__transaction_contains_minting_or_burning": "The transaction contains minting or burning of tokens.", + "cardano__transaction_contains_script_address_no_datum": "The following transaction output contains a script address, but does not contain a datum.", + "cardano__transaction_fee": "Transaction fee:", + "cardano__transaction_id": "Transaction ID:", + "cardano__transaction_no_collateral_input": "The transaction contains no collateral inputs. Plutus script will not be able to run.", + "cardano__transaction_no_script_data_hash": "The transaction contains no script data hash. Plutus script will not be able to run.", + "cardano__transaction_output_contains_tokens": "The following transaction output contains tokens.", + "cardano__ttl": "TTL:", + "cardano__unknown_collateral_amount": "Unknown collateral amount.", + "cardano__unusual_path": "Path is unusual.", + "cardano__valid_since": "Valid since:", + "cardano__verify_script": "Verify script", + "cardano__vote_key_registration": "Vote key registration (CIP-36)", + "cardano__vote_public_key": "Vote public key:", + "cardano__voting_purpose": "Voting purpose:", + "cardano__warning": "Warning", + "cardano__weight": "Weight:", + "cardano__withdrawal_for_address_template": "Confirm withdrawal for {} address:", + "cardano__x_of_y_signatures_template": "Requires {} out of {} signatures.", + "coinjoin__access_account": "Access your coinjoin account?", + "coinjoin__do_not_disconnect": "Do not disconnect your Trezor!", + "coinjoin__max_mining_fee": "Max mining fee", + "coinjoin__max_rounds": "Max rounds", + "coinjoin__title": "AUTHORIZE COINJOIN", + "coinjoin__title_do_not_disconnect": "DO NOT DISCONNECT YOUR TREZOR!", + "coinjoin__title_progress": "COINJOIN IN PROGRESS", + "coinjoin__waiting_for_others": "Waiting for others", + "confirm_total__fee_rate": "Fee rate:", + "confirm_total__sending_from_account": "Sending from account:", + "confirm_total__title_fee": "FEE INFORMATION", + "confirm_total__title_sending_from": "SENDING FROM", + "debug__loading_seed": "Loading seed", + "debug__loading_seed_not_recommended": "Loading private seed is not recommended.", + "device_name__change_template": "Change device name to {}?", + "device_name__title": "DEVICE NAME", + "entropy__send": "Do you really want to send entropy?", + "entropy__title": "INTERNAL ENTROPY", + "entropy__title_confirm": "CONFIRM ENTROPY", + "eos__about_to_sign_template": "You are about to sign {}.", + "eos__action_name": "Action Name:", + "eos__arbitrary_data": "Arbitrary data", + "eos__buy_ram": "Buy RAM", + "eos__bytes": "Bytes:", + "eos__cancel_vote": "Cancel vote", + "eos__checksum": "Checksum:", + "eos__code": "Code:", + "eos__contract": "Contract:", + "eos__cpu": "CPU:", + "eos__creator": "Creator:", + "eos__delegate": "Delegate", + "eos__delete_auth": "Delete Auth", + "eos__from": "From:", + "eos__link_auth": "Link Auth", + "eos__memo": "Memo", + "eos__name": "Name:", + "eos__net": "NET:", + "eos__new_account": "New account", + "eos__owner": "Owner:", + "eos__parent": "Parent:", + "eos__payer": "Payer:", + "eos__permission": "Permission:", + "eos__proxy": "Proxy:", + "eos__receiver": "Receiver:", + "eos__refund": "Refund", + "eos__requirement": "Requirement:", + "eos__sell_ram": "Sell RAM", + "eos__sender": "Sender:", + "eos__sign_transaction": "Sign transaction", + "eos__threshold": "Threshold:", + "eos__to": "To:", + "eos__transfer": "Transfer:", + "eos__type": "Type:", + "eos__undelegate": "Undelegate", + "eos__unlink_auth": "Unlink Auth", + "eos__update_auth": "Update Auth", + "eos__vote_for_producers": "Vote for producers", + "eos__vote_for_proxy": "Vote for proxy", + "eos__voter": "Voter:", + "ethereum__amount_sent": "Amount sent:", + "ethereum__contract": "Contract:", + "ethereum__data_size_template": "Size: {} bytes", + "ethereum__gas_limit": "Gas limit:", + "ethereum__gas_price": "Gas price:", + "ethereum__max_gas_price": "Max gas price:", + "ethereum__name_and_version": "Name and version", + "ethereum__new_contract": "new contract?", + "ethereum__no_message_field": "No message field", + "ethereum__priority_fee": "Priority fee:", + "ethereum__show_full_array": "Show full array", + "ethereum__show_full_domain": "Show full domain", + "ethereum__show_full_message": "Show full message", + "ethereum__show_full_struct": "Show full struct", + "ethereum__sign_eip712": "Really sign EIP-712 typed data?", + "ethereum__title_confirm_data": "CONFIRM DATA", + "ethereum__title_confirm_domain": "CONFIRM DOMAIN", + "ethereum__title_confirm_message": "CONFIRM MESSAGE", + "ethereum__title_confirm_struct": "CONFIRM STRUCT", + "ethereum__title_confirm_typed_data": "CONFIRM TYPED DATA", + "ethereum__title_signing_address": "SIGNING ADDRESS", + "ethereum__units_template": "{} units", + "ethereum__unknown_token": "Unknown token", + "ethereum__valid_signature": "The signature is valid.", + "experimental_mode__enable": "Enable experimental features?", + "experimental_mode__only_for_dev": "Only for development and beta testing!", + "experimental_mode__title": "EXPERIMENTAL MODE", + "fido__already_registered": "Already registered", + "fido__device_already_registered": "This device is already registered with this application.", + "fido__device_already_registered_with_template": "This device is already registered with {}.", + "fido__device_not_registered": "This device is not registered with this application.", + "fido__does_not_belong": "The credential you are trying to import does\nnot belong to this authenticator.", + "fido__erase_credentials": "erase all credentials?", + "fido__export_credentials": "Export information about the credentials stored on this device?", + "fido__not_registered": "Not registered", + "fido__not_registered_with_template": "This device is not registered with\n{}.", + "fido__please_enable_pin_protection": "Please enable PIN protection.", + "fido__title_authenticate": "FIDO2 AUTHENTICATE", + "fido__title_import_credential": "IMPORT CREDENTIAL", + "fido__title_list_credentials": "LIST CREDENTIALS", + "fido__title_register": "FIDO2 REGISTER", + "fido__title_remove_credential": "REMOVE CREDENTIAL", + "fido__title_reset": "FIDO2 RESET", + "fido__title_u2f_auth": "U2F AUTHENTICATE", + "fido__title_u2f_register": "U2F REGISTER", + "fido__title_verify_user": "FIDO2 VERIFY USER", + "fido__unable_to_verify_user": "Unable to verify user.", + "fido__wanna_erase_credentials": "Do you really want to erase all credentials?", + "firmware_update__title": "UPDATE FIRMWARE", + "firmware_update__title_fingerprint": "FW FINGERPRINT", + "homescreen__click_to_connect": "Click to Connect", + "homescreen__click_to_unlock": "Click to Unlock", + "homescreen__title_backup_failed": "BACKUP FAILED", + "homescreen__title_backup_needed": "BACKUP NEEDED", + "homescreen__title_coinjoin_authorized": "COINJOIN AUTHORIZED", + "homescreen__title_experimental_mode": "EXPERIMENTAL MODE", + "homescreen__title_no_usb_connection": "NO USB CONNECTION", + "homescreen__title_pin_not_set": "PIN NOT SET", + "homescreen__title_seedless": "SEEDLESS", + "homescreen__title_set": "CHANGE HOMESCREEN?", + "inputs__back": "BACK", + "inputs__cancel": "CANCEL", + "inputs__delete": "DELETE", + "inputs__enter": "ENTER", + "inputs__return": "RETURN", + "inputs__show": "SHOW", + "inputs__space": "SPACE", + "joint__title": "JOINT TRANSACTION", + "joint__to_the_total_amount": "To the total amount:", + "joint__you_are_contributing": "You are contributing:", + "language__change_to": "Change language to {}?", + "language__changed": "Language changed successfully", + "language__progress": "Changing language", + "language__title": "LANGUAGE SETTINGS", + "lockscreen__tap_to_connect": "Tap to connect", + "lockscreen__tap_to_unlock": "Tap to unlock", + "lockscreen__title_locked": "LOCKED", + "lockscreen__title_not_connected": "NOT CONNECTED", + "misc__decrypt_value": "Decrypt value", + "misc__encrypt_value": "Encrypt value", + "misc__title_suite_labeling": "SUITE LABELING", + "modify_amount__decrease_amount": "Decrease amount by:", + "modify_amount__increase_amount": "Increase amount by:", + "modify_amount__new_amount": "New amount:", + "modify_amount__title": "MODIFY AMOUNT", + "modify_fee__decrease_fee": "Decrease fee by:", + "modify_fee__fee_rate": "Fee rate:", + "modify_fee__increase_fee": "Increase fee by:", + "modify_fee__new_transaction_fee": "New transaction fee:", + "modify_fee__no_change": "Fee did not change.\n", + "modify_fee__title": "MODIFY FEE", + "modify_fee__transaction_fee": "Transaction fee:", + "monero__confirm_export": "Confirm export", + "monero__confirm_ki_sync": "Confirm ki sync", + "monero__confirm_refresh": "Confirm refresh", + "monero__confirm_unlock_time": "Confirm unlock time", + "monero__hashing_inputs": "Hashing inputs", + "monero__payment_id": "Payment ID", + "monero__postprocessing": "Postprocessing...", + "monero__processing": "Processing...", + "monero__processing_inputs": "Processing inputs", + "monero__processing_outputs": "Processing outputs", + "monero__signing": "Signing...", + "monero__signing_inputs": "Signing inputs", + "monero__unlock_time_set_template": "Unlock time for this transaction is set to {}", + "monero__wanna_export_tx_der": "Do you really want to export tx_der\nfor tx_proof?", + "monero__wanna_export_tx_key": "Do you really want to export tx_key?", + "monero__wanna_export_watchkey": "Do you really want to export watch-only credentials?", + "monero__wanna_start_refresh": "Do you really want to\nstart refresh?", + "monero__wanna_sync_key_images": "Do you really want to\nsync key images?", + "nem__absolute": "absolute", + "nem__activate": "Activate", + "nem__add": "Add", + "nem__confirm_action": "Confirm action", + "nem__confirm_address": "Confirm address", + "nem__confirm_creation_fee": "Confirm creation fee", + "nem__confirm_mosaic": "Confirm mosaic", + "nem__confirm_multisig_fee": "Confirm multisig fee", + "nem__confirm_namespace": "Confirm namespace", + "nem__confirm_payload": "Confirm payload", + "nem__confirm_properties": "Confirm properties", + "nem__confirm_rental_fee": "Confirm rental fee", + "nem__confirm_transfer_of": "Confirm transfer of", + "nem__convert_account_to_multisig": "Convert account to multisig account?", + "nem__cosign_transaction_for": "Cosign transaction for", + "nem__cosignatory": " cosignatory", + "nem__create_mosaic": "Create mosaic", + "nem__create_namespace": "Create namespace", + "nem__deactivate": "Deactivate", + "nem__decrease": "Decrease", + "nem__description": "Description:", + "nem__divisibility_and_levy_cannot_be_shown": "Divisibility and levy cannot be shown for unknown mosaics", + "nem__encrypted": "Encrypted:", + "nem__final_confirm": "Final confirm", + "nem__immutable": "immutable", + "nem__increase": "Increase", + "nem__initial_supply": "Initial supply:", + "nem__initiate_transaction_for": "Initiate transaction for", + "nem__levy_divisibility": "Levy divisibility:", + "nem__levy_fee": "Levy fee:", + "nem__levy_fee_of": "Confirm mosaic levy fee of", + "nem__levy_mosaic": "Levy mosaic:", + "nem__levy_namespace": "Levy namespace:", + "nem__levy_recipient": "Levy recipient:", + "nem__levy_type": "Levy type:", + "nem__modify_supply_for": "Modify supply for", + "nem__modify_the_number_of_cosignatories_by": "Modify the number of cosignatories by ", + "nem__mutable": "mutable", + "nem__of": "of", + "nem__percentile": "percentile", + "nem__raw_units_template": "{} raw units", + "nem__remote_harvesting": " remote harvesting?", + "nem__remove": "Remove", + "nem__set_minimum_cosignatories_to": "Set minimum cosignatories to ", + "nem__sign_tx_fee_template": "Sign this transaction\nand pay {}\nfor network fee?", + "nem__supply_change": "Supply change", + "nem__supply_units_template": "{} supply by {} whole units?", + "nem__transferable": "Transferable?", + "nem__under_namespace": "under namespace", + "nem__unencrypted": "Unencrypted:", + "nem__unknown_mosaic": "Unknown mosaic!", + "passphrase__access_hidden_wallet": "Access hidden wallet?", + "passphrase__always_on_device": "Do you really want to enter passphrase always on the device?", + "passphrase__from_host_not_shown": "Passphrase provided by host will be used but will not be displayed due to the device settings.", + "passphrase__hidden_wallet": "Hidden wallet", + "passphrase__hide": "Hide passphrase coming from host?", + "passphrase__next_screen_will_show_passphrase": "Next screen will show the passphrase.", + "passphrase__please_enter": "Please enter your passphrase.", + "passphrase__revoke_on_device": "Do you want to revoke the passphrase on device setting?", + "passphrase__title_confirm": "CONFIRM PASSPHRASE", + "passphrase__title_enter": "ENTER PASSPHRASE", + "passphrase__title_hide": "HIDE PASSPHRASE", + "passphrase__title_settings": "PASSPHRASE SETTINGS", + "passphrase__title_source": "PASSPHRASE SOURCE", + "passphrase__turn_off": "Turn off passphrase protection?", + "passphrase__turn_on": "Turn on passphrase protection?", + "pin__change": "Change PIN?", + "pin__changed": "PIN changed.", + "pin__cursor_will_change": "Position of the cursor will change between entries for enhanced security.", + "pin__diff_from_wipe_code": "The new PIN must be different from your wipe code.", + "pin__disabled": "PIN protection\nturned off.", + "pin__enabled": "PIN protection\nturned on.", + "pin__enter": "Enter PIN", + "pin__enter_new": "Enter new PIN", + "pin__entered_not_valid": "The PIN you have entered is not valid.", + "pin__info": "PIN will be required to access this device.", + "pin__invalid_pin": "Invalid PIN", + "pin__last_attempt": "Last attempt", + "pin__mismatch": "Entered PINs do not match!", + "pin__pin_mismatch": "PIN mismatch", + "pin__please_check_again": "Please check again.", + "pin__reenter_new": "Re-enter new PIN", + "pin__reenter_to_confirm": "Please re-enter PIN to confirm.", + "pin__should_be_long": "PIN should be 4-50 digits long.", + "pin__title_check_pin": "CHECK PIN", + "pin__title_settings": "PIN SETTINGS", + "pin__title_wrong_pin": "WRONG PIN", + "pin__tries_left": "tries left", + "pin__turn_off": "Are you sure you want to turn off PIN protection?", + "pin__turn_on": "Turn on PIN protection?", + "pin__wrong_pin": "Wrong PIN", + "plurals__contains_x_keys": "key|keys", + "plurals__lock_after_x_hours": "hour|hours", + "plurals__lock_after_x_milliseconds": "millisecond|milliseconds", + "plurals__lock_after_x_minutes": "minute|minutes", + "plurals__lock_after_x_seconds": "second|seconds", + "plurals__sign_x_actions": "action|actions", + "plurals__transaction_of_x_operations": "operation|operations", + "plurals__x_groups_needed": "group|groups", + "plurals__x_shares_needed": "share|shares", + "progress__authenticity_check": "Checking authenticity...", + "progress__done": "Done", + "progress__loading_transaction": "Loading transaction...", + "progress__locking_device": "Locking the device...", + "progress__one_second_left": "1 second left", + "progress__please_wait": "PLEASE WAIT", + "progress__processing": "PROCESSING", + "progress__refreshing": "Refreshing...", + "progress__signing_transaction": "Signing transaction...", + "progress__syncing": "Syncing...", + "progress__x_seconds_left_template": "{} seconds left", + "reboot_to_bootloader__restart": "Trezor will restart in bootloader mode.", + "reboot_to_bootloader__title": "GO TO BOOTLOADER", + "reboot_to_bootloader__version_by_template": "Firmware version {}\nby {}", + "reboot_to_bootloader__just_a_moment": "Just a moment...", + "recovery__cancel_dry_run": "Cancel backup check", + "recovery__check_dry_run": "Check your backup?", + "recovery__cursor_will_change": "Position of the cursor will change between entries for enhanced security.", + "recovery__dry_run_bip39_valid_match": "The entered recovery seed is valid and matches the one in the device.", + "recovery__dry_run_bip39_valid_mismatch": "The entered recovery seed is valid but does not match the one in the device.", + "recovery__dry_run_slip39_valid_match": "The entered recovery shares are valid and match what is currently in the device.", + "recovery__dry_run_slip39_valid_mismatch": "The entered recovery shares are valid but do not match what is currently in the device.", + "recovery__enter_any_share": "Enter any share", + "recovery__enter_backup": "Enter your backup.", + "recovery__enter_different_share": "Please enter a different share.", + "recovery__enter_share_from_diff_group": "Enter share from a different group.", + "recovery__group_num_template": "Group {}", + "recovery__group_threshold_reached": "Group threshold reached.", + "recovery__invalid_seed_entered": "Invalid recovery seed entered.", + "recovery__invalid_share_entered": "Invalid recovery share entered.", + "recovery__more_shares_needed": "More shares needed", + "recovery__num_of_words": "Select the number of words in your backup.", + "recovery__only_first_n_letters": "You'll only have to select the first 2-4 letters of each word.", + "recovery__progress_will_be_lost": "All progress will be lost.", + "recovery__select_num_of_words": "Select the number of words in your backup.", + "recovery__share_already_entered": "Share already entered", + "recovery__share_from_another_shamir": "You have entered a share from another Shamir Backup.", + "recovery__share_num_template": "Share {}", + "recovery__title": "RECOVER WALLET", + "recovery__title_cancel_dry_run": "CANCEL BACKUP CHECK", + "recovery__title_cancel_recovery": "CANCEL RECOVERY", + "recovery__title_dry_run": "BACKUP CHECK", + "recovery__title_recover": "RECOVER WALLET", + "recovery__title_remaining_shares": "REMAINING SHARES", + "recovery__type_word_x_of_y_template": "Type word {} of {}", + "recovery__wallet_recovered": "Wallet recovered successfully", + "recovery__wanna_cancel_dry_run": "Are you sure you want to cancel the backup check?", + "recovery__wanna_cancel_recovery": "Are you sure you want to cancel the recovery process?", + "recovery__word_count_template": "({} words)", + "recovery__word_x_of_y_template": "WORD {} OF {}", + "recovery__x_more_items_starting_template_plural": "{count} more {plural} starting", + "recovery__x_more_shares_needed_template_plural": "{count} more {plural} needed.", + "recovery__x_of_y_entered_template": "{} of {} shares entered successfully.", + "recovery__you_have_entered": "You have entered", + "reset__advanced_group_threshold_info": "The group threshold specifies the number of groups required to recover your wallet.", + "reset__all_x_of_y_template": "all {} of {} shares", + "reset__any_x_of_y_template": "any {} of {} shares", + "reset__button_create": "CREATE WALLET", + "reset__button_recover": "RECOVER WALLET", + "reset__by_continuing": "By continuing you agree to Trezor Company's terms and conditions.", + "reset__check_backup_title": "CHECK BACKUP", + "reset__check_group_share_title_template": "CHECK G{} - SHARE {}", + "reset__check_seed_title": "CHECK SEED", + "reset__check_share_title_template": "CHECK SHARE #{}", + "reset__continue_with_next_share": "Continue with the next share.", + "reset__continue_with_share_template": "Continue with share #{}.", + "reset__finished_verifying_group_template": "You have finished verifying your recovery shares for group {}.", + "reset__finished_verifying_seed": "You have finished verifying your recovery seed.", + "reset__finished_verifying_shares": "You have finished verifying your recovery shares.", + "reset__group_description": "A group is made up of recovery shares.", + "reset__group_info": "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds.", + "reset__group_share_checked_successfully_template": "Group {} - Share {} checked successfully.", + "reset__group_share_title_template": "GROUP {} - SHARE {}", + "reset__more_info_at": "More info at", + "reset__need_all_share_template": "For recovery you need all {} of the shares.", + "reset__need_any_share_template": "For recovery you need any {} of the shares.", + "reset__needed_to_form_a_group": "needed to form a group. ", + "reset__needed_to_recover_your_wallet": "needed to recover your wallet. ", + "reset__never_make_digital_copy": "Never make a digital copy of your backup or upload it online!", + "reset__num_of_share_holders_template": "{} people or locations will each hold one share.", + "reset__num_of_shares_advanced_info_template": "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {}.", + "reset__num_of_shares_basic_info": "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet.", + "reset__num_shares_for_group_template": "The required number of shares to form Group {}.", + "reset__number_of_shares_info": "= total number of unique word lists used for wallet backup.", + "reset__one_share": "1 share", + "reset__only_one_share_will_be_created": "Only one share will be created.", + "reset__recovery_seed_title": "RECOVERY SEED", + "reset__recovery_share_title_template": "RECOVERY SHARE #{}", + "reset__required_number_of_groups": "The required number of groups for recovery.", + "reset__select_correct_word": "Select the correct word for each position.", + "reset__select_word_template": "SELECT {} WORD", + "reset__select_word_x_of_y_template": "Select word {} of {}:", + "reset__set_it_to_count_template": "Set it to {} and you will need ", + "reset__share_checked_successfully_template": "Recovery share #{} checked successfully.", + "reset__share_words_title": "STANDARD BACKUP", + "reset__slip39_checklist_num_groups": "Number of groups", + "reset__slip39_checklist_num_shares": "Number of shares", + "reset__slip39_checklist_set_num_groups": "Set number of groups", + "reset__slip39_checklist_set_num_shares": "Set number of shares", + "reset__slip39_checklist_set_sizes": "Set sizes and thresholds", + "reset__slip39_checklist_set_sizes_longer": "Set size and threshold for each group", + "reset__slip39_checklist_set_threshold": "Set threshold", + "reset__slip39_checklist_title": "BACKUP CHECKLIST", + "reset__slip39_checklist_write_down": "Write down and check all shares", + "reset__slip39_checklist_write_down_recovery": "Write down and check all recovery shares", + "reset__the_threshold_sets_the_number_of_shares": "The threshold sets the number of shares ", + "reset__threshold_info": "= minimum number of unique word lists used for recovery.", + "reset__title_backup_is_done": "BACKUP IS DONE", + "reset__title_create_wallet": "CREATE WALLET", + "reset__title_create_wallet_shamir": "CREATE WALLET (SHAMIR)", + "reset__title_group_threshold": "GROUP THRESHOLD", + "reset__title_number_of_groups": "NUMBER OF GROUPS", + "reset__title_number_of_shares": "NUMBER OF SHARES", + "reset__title_set_group_threshold": "SET GROUP THRESHOLD", + "reset__title_set_number_of_groups": "SET NUMBER OF GROUPS", + "reset__title_set_number_of_shares": "SET NUMBER OF SHARES", + "reset__title_set_threshold": "SET THRESHOLD", + "reset__to_form_group_template": "to form Group {}.", + "reset__tos_link": "trezor.io/tos", + "reset__total_number_of_shares_in_group_template": "Set the total number of shares in Group {}.", + "reset__use_your_backup": "Use your backup when you need to recover your wallet.", + "reset__write_down_words_template": "Write down all {} words in order.", + "reset__wrong_word_selected": "Wrong word selected!", + "reset__you_need_one_share": "For recovery you need 1 share.", + "reset__your_backup_is_done": "Your backup is done.", + "ripple__confirm_tag": "Confirm tag", + "ripple__destination_tag_template": "Destination tag:\n{}", + "rotation__change_template": "Do you want to change device rotation to {}?", + "rotation__east": "east", + "rotation__north": "north", + "rotation__south": "south", + "rotation__title_change": "CHANGE ROTATION", + "rotation__west": "west", + "safety_checks__approve_unsafe_always": "Trezor will allow you to approve some actions which might be unsafe.", + "safety_checks__approve_unsafe_temporary": "Trezor will temporarily allow you to approve some actions which might be unsafe.", + "safety_checks__enforce_strict": "Do you really want to enforce strict safety checks (recommended)?", + "safety_checks__title": "SAFETY CHECKS", + "safety_checks__title_safety_override": "SAFETY OVERRIDE", + "sd_card__all_data_will_be_lost": "All data on the SD card will be lost.", + "sd_card__card_required": "SD card required.", + "sd_card__disable": "Do you really want to remove SD card protection from your device?", + "sd_card__disabled": "You have successfully disabled SD protection.", + "sd_card__enable": "Do you really want to secure your device with SD card protection?", + "sd_card__enabled": "You have successfully enabled SD protection.", + "sd_card__error": "SD card error", + "sd_card__format_card": "Format SD card", + "sd_card__insert_correct_card": "Please insert the correct SD card for this device.", + "sd_card__please_insert": "Please insert your SD card.", + "sd_card__please_unplug_and_insert": "Please unplug the device and insert your SD card.", + "sd_card__problem_accessing": "There was a problem accessing the SD card.", + "sd_card__refresh": "Do you really want to replace the current SD card secret with a newly generated one?", + "sd_card__refreshed": "You have successfully refreshed SD protection.", + "sd_card__restart": "Do you want to restart Trezor in bootloader mode?", + "sd_card__title": "SD CARD PROTECTION", + "sd_card__title_problem": "SD CARD PROBLEM", + "sd_card__unknown_filesystem": "Unknown filesystem.", + "sd_card__unplug_and_insert_correct": "Please unplug the device and insert the correct SD card.", + "sd_card__use_different_card": "Use a different card or format the SD card to the FAT32 filesystem.", + "sd_card__wanna_format": "Do you really want to format the SD card?", + "sd_card__wrong_sd_card": "Wrong SD card.", + "send__address_path": "address path", + "send__confirm_sending": "SENDING AMOUNT", + "send__from_multiple_accounts": "Sending from multiple accounts.", + "send__including_fee": "Including fee:", + "send__maximum_fee": "Maximum fee:", + "send__receiving_to_multisig": "Receiving to a multisig address.", + "send__title_confirm_sending": "CONFIRM SENDING", + "send__title_joint_transaction": "JOINT TRANSACTION", + "send__title_receiving_to": "RECEIVING TO", + "send__title_sending": "SENDING", + "send__title_sending_amount": "SENDING AMOUNT", + "send__title_sending_to": "SENDING TO", + "send__to_the_total_amount": "To the total amount:", + "send__total_amount": "Total amount:", + "send__transaction_id": "Transaction ID:", + "send__you_are_contributing": "You are contributing:", + "share_words__words_in_order": " words in order.", + "share_words__wrote_down_all": "I wrote down all ", + "sign_message__bytes_template": "{} Bytes", + "sign_message__confirm_address": "SIGNING ADDRESS", + "sign_message__confirm_message": "CONFIRM MESSAGE", + "sign_message__message_size": "Message size:", + "sign_message__verify_address": "VERIFY ADDRESS", + "solana__account_index": "Account index", + "solana__associated_token_account": "Associated token account", + "solana__confirm_multisig": "Confirm multisig", + "solana__expected_fee": "Expected fee", + "solana__instruction_accounts_template": "Instruction contains {} accounts and its data is {} bytes long.", + "solana__instruction_data": "Instruction data", + "solana__instruction_is_multisig": "The following instruction is a multisig instruction.", + "solana__is_provided_via_lookup_table_template": "{} is provided via a lookup table.", + "solana__lookup_table_address": "Lookup table address", + "solana__multiple_signers": "Multiple signers", + "solana__token_address": "Token address", + "solana__transaction_contains_unknown_instructions": "Transaction contains unknown instructions.", + "solana__transaction_requires_x_signers_template": "Transaction requires {} signers which increases the fee.", + "stellar__account_merge": "Account Merge", + "stellar__account_thresholds": "Account Thresholds", + "stellar__add_signer": "Add Signer", + "stellar__add_trust": "Add trust", + "stellar__all_will_be_sent_to": "All XLM will be sent to:", + "stellar__allow_trust": "Allow trust", + "stellar__asset": "Asset", + "stellar__balance_id": "Balance ID", + "stellar__bump_sequence": "Bump Sequence", + "stellar__buying": "Buying:", + "stellar__claim_claimable_balance": "Claim Claimable Balance", + "stellar__clear_data": "Clear data", + "stellar__clear_flags": "Clear flags", + "stellar__confirm_issuer": "Confirm Issuer", + "stellar__confirm_memo": "Confirm memo", + "stellar__confirm_network": "Confirm network", + "stellar__confirm_operation": "Confirm operation", + "stellar__confirm_stellar": "Confirm Stellar", + "stellar__confirm_timebounds": "Confirm timebounds", + "stellar__create_account": "Create Account", + "stellar__debited_amount": "Debited amount", + "stellar__delete": "Delete", + "stellar__delete_passive_offer": "Delete Passive Offer", + "stellar__delete_trust": "Delete trust", + "stellar__destination": "Destination:", + "stellar__exchanges_require_memo": "Important: Many exchanges require a memo when depositing", + "stellar__final_confirm": "Final confirm", + "stellar__hash": "Hash:", + "stellar__high": "High:", + "stellar__home_domain": "Home Domain", + "stellar__inflation": "Inflation", + "stellar__initial_balance": "Initial Balance", + "stellar__initialize_signing_with": "Initialize signing with", + "stellar__issuer_template": "{} issuer:", + "stellar__key": "Key:", + "stellar__limit": "Limit:", + "stellar__low": "Low:", + "stellar__master_weight": "Master Weight:", + "stellar__medium": "Medium:", + "stellar__new_offer": "New Offer", + "stellar__new_passive_offer": "New Passive Offer", + "stellar__no_memo_set": "No memo set!", + "stellar__no_restriction": "[no restriction]", + "stellar__on_network_template": "Transaction is on {}", + "stellar__path_pay": "Path Pay", + "stellar__path_pay_at_least": "Path Pay at least", + "stellar__pay": "Pay:", + "stellar__pay_at_most": "Pay at most:", + "stellar__preauth_transaction": "Pre-auth transaction:", + "stellar__price_per_template": "Price per {}:", + "stellar__private_network": "private network", + "stellar__remove_signer": "Remove Signer", + "stellar__revoke_trust": "Revoke trust", + "stellar__selling": "Selling:", + "stellar__set_data": "Set data", + "stellar__set_flags": "Set flags", + "stellar__set_sequence_to_template": "Set sequence to {}?", + "stellar__sign_tx_count_template": "Sign this transaction made up of {}", + "stellar__sign_tx_fee_template": "and pay {}\nfor fee?", + "stellar__source_account": "Source account:", + "stellar__testnet_network": "testnet network", + "stellar__trusted_account": "Trusted Account", + "stellar__update": "Update", + "stellar__valid_from": "Valid from (UTC)", + "stellar__valid_to": "Valid to (UTC)", + "stellar__value_sha256": "Value (SHA-256):", + "stellar__wanna_clean_value_key_template": "Do you want to clear value key {}?", + "stellar__your_account": " your account", + "tezos__baker_address": "Baker address:", + "tezos__balance": "Balance:", + "tezos__ballot": "Ballot:", + "tezos__confirm_delegation": "Confirm delegation", + "tezos__confirm_origination": "Confirm origination", + "tezos__delegator": "Delegator:", + "tezos__proposal": "Proposal", + "tezos__register_delegate": "Register delegate", + "tezos__remove_delegation": "Remove delegation", + "tezos__submit_ballot": "Submit ballot", + "tezos__submit_proposal": "Submit proposal", + "tezos__submit_proposals": "Submit proposals", + "tutorial__middle_click": "Press both left and right at the same\ntime to confirm.", + "tutorial__press_and_hold": "Press and hold the right button to\napprove important operations.", + "tutorial__ready_to_use": "You're ready to\nuse Trezor.", + "tutorial__scroll_down": "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up.", + "tutorial__sure_you_want_skip": "Are you sure you\nwant to skip the tutorial?", + "tutorial__title_hello": "HELLO", + "tutorial__title_screen_scroll": "SCREEN SCROLL", + "tutorial__title_skip": "SKIP TUTORIAL", + "tutorial__title_tutorial_complete": "TUTORIAL COMPLETE", + "tutorial__use_trezor": "Use Trezor by\nclicking the left and right buttons.\n\rContinue right.", + "tutorial__welcome_press_right": "Welcome to Trezor. Press right to continue.", + "u2f__get": "Increase and retrieve the U2F counter?", + "u2f__set_template": "Set the U2F counter to {}?", + "u2f__title_get": "GET U2F COUNTER", + "u2f__title_set": "SET U2F COUNTER", + "wipe__info": "All data will be erased.", + "wipe__title": "WIPE DEVICE", + "wipe__want_to_wipe": "Do you really want to wipe the device?\n", + "wipe_code__change": "Change wipe code?", + "wipe_code__changed": "Wipe code changed.", + "wipe_code__diff_from_pin": "The wipe code must be different from your PIN.", + "wipe_code__disabled": "Wipe code disabled.", + "wipe_code__enabled": "Wipe code enabled.", + "wipe_code__enter_new": "Enter new wipe code", + "wipe_code__info": "Wipe code can be used to erase all data from this device.", + "wipe_code__invalid": "Invalid wipe code", + "wipe_code__mismatch": "The wipe codes you entered do not match.", + "wipe_code__reenter": "Re-enter wipe code", + "wipe_code__reenter_to_confirm": "Please re-enter wipe code to confirm.", + "wipe_code__title_check": "CHECK WIPE CODE", + "wipe_code__title_invalid": "INVALID WIPE CODE", + "wipe_code__title_settings": "WIPE CODE SETTINGS", + "wipe_code__turn_off": "Turn off wipe code protection?", + "wipe_code__turn_on": "Turn on wipe code protection?", + "wipe_code__wipe_code_mismatch": "Wipe code mismatch", + "word_count__title": "NUMBER OF WORDS", + "words__account": "Account", + "words__account_colon": "Account:", + "words__address": "Address", + "words__amount": "Amount", + "words__are_you_sure": "Are you sure?", + "words__array_of": "Array of", + "words__blockhash": "Blockhash", + "words__buying": "Buying", + "words__confirm": "Confirm", + "words__confirm_fee": "Confirm fee", + "words__contains": "Contains", + "words__continue_anyway": "Continue anyway?", + "words__continue_with": "Continue with", + "words__error": "Error", + "words__fee": "Fee", + "words__from": "from", + "words__keep_it_safe": "Keep it safe!", + "words__know_what_your_doing": "Continue only if you know what you are doing!", + "words__my_trezor": "My Trezor", + "words__no": "No", + "words__outputs": "outputs", + "words__please_check_again": "Please check again", + "words__please_try_again": "Please try again", + "words__really_wanna": "Do you really want to", + "words__recipient": "Recipient", + "words__sign": "Sign", + "words__signer": "Signer", + "words__title_check": "CHECK", + "words__title_group": "GROUP", + "words__title_information": "INFORMATION", + "words__title_remember": "REMEMBER", + "words__title_share": "SHARE", + "words__title_shares": "SHARES", + "words__title_success": "SUCCESS", + "words__title_summary": "SUMMARY", + "words__title_threshold": "THRESHOLD", + "words__unknown": "Unknown", + "words__warning": "Warning", + "words__writable": "Writable", + "words__yes": "Yes" + } +} diff --git a/core/translations/es.json b/core/translations/es.json new file mode 100644 index 000000000..b283e1ef0 --- /dev/null +++ b/core/translations/es.json @@ -0,0 +1,856 @@ +{ + "fonts": { + "T2B1": { + "1_FONT_NORMAL": "font_pixeloperator_regular_8_es.json", + "2_FONT_BOLD": "font_pixeloperator_bold_8_es.json", + "3_FONT_MONO": "font_pixeloperatormono_regular_8_es.json", + "4_FONT_BIG": "font_unifont_regular_16_es.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_es.json" + }, + "T2T1": { + "1_FONT_NORMAL": "font_tthoves_regular_21_es.json", + "2_FONT_BOLD": "font_tthoves_bold_17_es.json", + "3_FONT_MONO": "font_robotomono_medium_20_es.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_es.json" + } + }, + "header": { + "language": "es-ES", + "version": "2.6.5" + }, + "translations": { + "addr_mismatch__contact_support_at": "Póngase en contacto con el soporte de Trezor en", + "addr_mismatch__key_mismatch": "¿Deseginimiento de llave?", + "addr_mismatch__mismatch": "¿La dirección es errónea?", + "addr_mismatch__support_url": "trezor.io/support", + "addr_mismatch__wrong_derivation_path": "Ruta de derivación incorrecta para una cuenta seleccionada.", + "addr_mismatch__xpub_mismatch": "¿No coincide con XPUB?", + "address__public_key": "Llave pública", + "address__title_cosigner": "COFIRMANTE", + "address__title_receive_address": "DIRECCIÓN DESTINO", + "address__title_yours": "TUYO", + "address_details__derivation_path": "Ruta de derivación:", + "address_details__title_receive_address": "DIRECCIÓN DESTINO", + "address_details__title_receiving_to": "RECIBIR EN", + "authenticate__confirm_template": "Permitir que la computadora conectada confirme que su {} es genuino?", + "authenticate__header": "Dispositivo de autenticación", + "auto_lock__change_template": "¿Bloquear automática Trezor después de {} de inactividad?", + "auto_lock__title": "TIEMPO BLOQUEO AUTO.", + "backup__can_back_up_anytime": "Puedes hacer una copia de seguridad del Trezor cuando quieras.", + "backup__it_should_be_backed_up": "Deberías hacer ya una copia de seguridad del nuevo monedero.", + "backup__it_should_be_backed_up_now": "Se debe hacer una copia de seguridad ahora.", + "backup__new_wallet_created": "Se ha creado un nuevo monedero.", + "backup__new_wallet_successfully_created": "Se ha creado un nuevo monedero.", + "backup__recover_anytime": "La copia de seguridad sirve para recuperar el monedero en cualquier momento.", + "backup__title_backup_wallet": "C. SEG. MONEDERO", + "backup__title_skip": "OMITIR C. SEG.", + "backup__want_to_skip": "¿Seguro que quieres omitir la copia de seguridad?", + "binance__buy": "Comprar", + "binance__confirm_cancel": "Confirmar cancelación", + "binance__confirm_input": "Confirmar entrada", + "binance__confirm_order": "Confirmar orden", + "binance__confirm_output": "Confirmar salida", + "binance__order_id": "ID de orden:", + "binance__pair": "Par:", + "binance__price": "Precio:", + "binance__quantity": "Cantidad:", + "binance__sell": "Vender", + "binance__sender_address": "Dirección del remitente:", + "binance__side": "Lado:", + "bitcoin__commitment_data": "Datos de la asignación:", + "bitcoin__confirm_locktime": "Confirma el tiempo de bloqueo", + "bitcoin__create_proof_of_ownership": "¿Deseas crear una prueba de propiedad?", + "bitcoin__high_mining_fee_template": "La comisión de minería de\n{}\nes inesperadamente alta.", + "bitcoin__locktime_no_effect": "El tiempo de bloqueo está ajustado, pero no tendrá ningún efecto.", + "bitcoin__locktime_set_to": "Tiempo de bloqueo ajustado en:", + "bitcoin__locktime_set_to_blockheight": "Tiempo de bloqueo ajustado en blockheight:", + "bitcoin__lot_of_change_outputs": "Muchas salidas de cambio.", + "bitcoin__multiple_accounts": "Multiples cuentas", + "bitcoin__new_fee_rate": "Nueva comisión:", + "bitcoin__simple_send_of": "Envío sencillo de", + "bitcoin__ticket_amount": "Importe del ticket:", + "bitcoin__title_confirm_details": "CONFIRMAR DETALLES", + "bitcoin__title_finalize_transaction": "FINALIZAR TRANSACCIÓN", + "bitcoin__title_high_mining_fee": "ALTA TASA MINERÍA", + "bitcoin__title_meld_transaction": "COMBINAR TRANSACCIÓN", + "bitcoin__title_modify_amount": "MODIFICAR IMPORTE", + "bitcoin__title_payjoin": "PAYJOIN", + "bitcoin__title_proof_of_ownership": "PRUEBA PROPIEDAD", + "bitcoin__title_purchase_ticket": "TICKET COMPRA", + "bitcoin__title_update_transaction": "ACTUALIZAR TRANSACCIÓN", + "bitcoin__unknown_path": "Ruta desconocida", + "bitcoin__unknown_transaction": "Transacción desconocida", + "bitcoin__unusually_high_fee": "Comisión inusualmente alta.", + "bitcoin__unverified_external_inputs": "La transacción contiene entradas externas sin verificar.", + "bitcoin__valid_signature": "La firma es válida.", + "bitcoin__voting_rights": "Derechos de voto de:", + "buttons__abort": "ABORTAR", + "buttons__access": "ACCEDER", + "buttons__again": "DE NUEVO", + "buttons__allow": "PERMITIR", + "buttons__back": "ATRÁS", + "buttons__back_up": "C. SEG.", + "buttons__cancel": "CANCELAR", + "buttons__change": "CAMBIAR", + "buttons__check": "REVISAR", + "buttons__check_again": "RECOMPROBAR", + "buttons__close": "CERRAR", + "buttons__confirm": "CONFIRMAR", + "buttons__continue": "CONTINUAR", + "buttons__details": "DETALLES", + "buttons__enable": "ACTIVAR", + "buttons__enter": "INTRODUCIR", + "buttons__enter_share": "INTRO. REC. COMP.", + "buttons__export": "EXPORTAR", + "buttons__format": "FORMATEAR", + "buttons__go_back": "REGRESA", + "buttons__hold_to_confirm": "CONFIRMA PULSANDO", + "buttons__info": "INFO", + "buttons__install": "INSTALAR", + "buttons__more_info": "MÁS INFO", + "buttons__ok_i_understand": "LO ENTIENDO", + "buttons__purchase": "COMPRAR", + "buttons__quit": "SALIR", + "buttons__restart": "REINICIAR", + "buttons__retry": "REINTENTAR", + "buttons__select": "SELECCIONAR", + "buttons__set": "AJUSTAR", + "buttons__show_all": "MOSTRAR TODO", + "buttons__show_details": "MOSTRAR DETALLES", + "buttons__show_words": "MOSTRAR PALABRAS", + "buttons__skip": "OMITIR", + "buttons__try_again": "REINTENTAR", + "buttons__turn_off": "APAGAR", + "buttons__turn_on": "ENCENDER", + "cardano__addr_base": "Base", + "cardano__addr_enterprise": "Enterprise", + "cardano__addr_legacy": "Legacy", + "cardano__addr_pointer": "Pointer", + "cardano__addr_reward": "Recompensa", + "cardano__address_no_staking": "dirección: sin recompensas de staking.", + "cardano__amount_burned_decimals_unknown": "Cantidad quemada (decimales desconocidos):", + "cardano__amount_minted_decimals_unknown": "Cantidad acuñada (decimales desconocidos):", + "cardano__amount_sent_decimals_unknown": "Cantidad enviada (decimales desconocidos):", + "cardano__anonymous_pool": "El pool no tiene metadatos (anónimo)", + "cardano__asset_fingerprint": "Huella digital del activo:", + "cardano__auxiliary_data_hash": "Hash de datos auxiliares:", + "cardano__block": "Bloque", + "cardano__catalyst": "Catalizador", + "cardano__certificate": "Certificado", + "cardano__change_output": "Salida de cambio", + "cardano__check_all_items": "Revisa todos los elementos con atención.", + "cardano__choose_level_of_details": "Selecciona el nivel de detalles:", + "cardano__collateral_input_id": "ID de entrada de garantía:", + "cardano__collateral_input_index": "Índice de entrada de garantía:", + "cardano__collateral_output_contains_tokens": "La salida de rentabilidad de la garantía contiene tokens.", + "cardano__collateral_return": "Rentabilidad de la garantía", + "cardano__confirm": "Confirmar:", + "cardano__confirm_signing_stake_pool": "Confirma la firma del registro del stake pool como propietario.", + "cardano__confirm_transaction": "Confirmar la transacción", + "cardano__confirming_a_multisig_transaction": "Confirmar una transacción multifirma.", + "cardano__confirming_a_plutus_transaction": "Confirmando una transacción Plutus.", + "cardano__confirming_pool_registration": "Confirmar el registro del pool como propietario.", + "cardano__confirming_transction": "Confirmar una transacción.", + "cardano__cost": "Coste", + "cardano__credential_mismatch": "Las credenciales no coinciden con las de pago.", + "cardano__datum_hash": "Hash datum:", + "cardano__delegating_to": "Delegar en:", + "cardano__for_account_and_index_template": "Para la cuenta {} e índice {}:", + "cardano__for_account_template": "para cuenta {}:", + "cardano__for_key_hash": "para hash de clave:", + "cardano__for_script": "para script:", + "cardano__inline_datum": "Datos en línea", + "cardano__input_id": "ID de entrada:", + "cardano__input_index": "Índice de entrada:", + "cardano__intro_text_change": "La siguiente dirección es de cambio. Su", + "cardano__intro_text_owned_by_device": "La siguiente dirección es propiedad de este dispositivo. Su", + "cardano__intro_text_registration_payment": "La dirección de pago del registro de la clave de voto es propiedad de este dispositivo. Su", + "cardano__key_hash": "hash de clave", + "cardano__margin": "Margen", + "cardano__multisig_path": "ruta multifirma", + "cardano__nested_scripts_template": "Contiene {} scripts anidados.", + "cardano__network": "Red:", + "cardano__no_output_tx": "La transacción no tiene salidas; la red no se puede verificar.", + "cardano__nonce": "Nonce:", + "cardano__other": "otros", + "cardano__path": "ruta", + "cardano__pledge": "Compromiso", + "cardano__pointer": "pointer", + "cardano__policy_id": "ID de política:", + "cardano__pool_metadata_hash": "Hash de metadatos del pool:", + "cardano__pool_metadata_url": "url de metadatos del pool:", + "cardano__pool_owner": "Propietario del pool:", + "cardano__pool_reward_account": "Cuenta de recompensas de pool:", + "cardano__reference_input_id": "ID de entrada de referencia:", + "cardano__reference_input_index": "Índice de entrada de referencia:", + "cardano__reference_script": "Script de referencia", + "cardano__required_signer": "Firma necesaria", + "cardano__reward": "recompensa", + "cardano__reward_address": "La dirección es una dirección de recompensa.", + "cardano__reward_eligibility_warning": "Advertencia: La dirección no es una dirección de pago, no admite recompensas.", + "cardano__rewards_go_to": "Las recompensas van a:", + "cardano__script": "script", + "cardano__script_all": "Todo", + "cardano__script_any": "Parte", + "cardano__script_data_hash": "Hash de datos de script:", + "cardano__script_hash": "Hash de script:", + "cardano__script_invalid_before": "No válido antes", + "cardano__script_invalid_hereafter": "No válido en adelante", + "cardano__script_key": "Clave", + "cardano__script_n_of_k": "N de K", + "cardano__script_reward": "recompensa de script", + "cardano__sending": "Envío", + "cardano__show_simple": "Mostrar simple", + "cardano__sign_tx_path_template": "Firmar transacción con {}:", + "cardano__stake_delegation": "Delegación de stake", + "cardano__stake_deregistration": "Anulación del registro de la clave de stake", + "cardano__stake_pool_registration": "Registro de stake pool", + "cardano__stake_pool_registration_pool_id": "Registro de stake pool\nID de grupo:", + "cardano__stake_registration": "Registro de la clave de stake", + "cardano__staking_key_for_account": "Clave de staking para la cuenta", + "cardano__to_pool": "para el pool:", + "cardano__token_minting_path": "ruta de acuñación de token", + "cardano__total_collateral": "Garantía total:", + "cardano__transaction": "Transacción", + "cardano__transaction_contains_minting_or_burning": "La transacción contiene acuñación o quema de tokens.", + "cardano__transaction_contains_script_address_no_datum": "La siguiente salida de transacción contiene una dirección de script, pero no contiene un dato.", + "cardano__transaction_fee": "Comisión de transacción:", + "cardano__transaction_id": "ID de la transacción:", + "cardano__transaction_no_collateral_input": "La transacción no contiene entradas de garantía. El script Plutus no se podrá ejecutar.", + "cardano__transaction_no_script_data_hash": "La transacción no contiene hash de datos de script. El script Plutus no se podrá ejecutar.", + "cardano__transaction_output_contains_tokens": "La siguiente salida de transacción contiene tokens.", + "cardano__ttl": "TTL:", + "cardano__unknown_collateral_amount": "Importe de garantía desconocido.", + "cardano__unusual_path": "La ruta es inusual.", + "cardano__valid_since": "Válido desde:", + "cardano__verify_script": "Verificar script", + "cardano__vote_key_registration": "Registro de la clave de voto (CIP-36)", + "cardano__vote_public_key": "Clave pública de voto:", + "cardano__voting_purpose": "Propósito de la votación:", + "cardano__warning": "Advertencia", + "cardano__weight": "Importancia:", + "cardano__withdrawal_for_address_template": "Confirmar retirada para la dirección de {}:", + "cardano__x_of_y_signatures_template": "Requiere {} de {} firmas.", + "coinjoin__access_account": "¿Acceder a tu cuenta de CoinJoin?", + "coinjoin__do_not_disconnect": "¡No desconectes el Trezor!", + "coinjoin__max_mining_fee": "Comisión de minería máx.:", + "coinjoin__max_rounds": "Número máx. rondas:", + "coinjoin__title": "AUTORIZAR COINJOIN", + "coinjoin__title_do_not_disconnect": "¡NO DESCONECTES EL TREZOR!", + "coinjoin__title_progress": "COINJOIN EN CURSO", + "coinjoin__waiting_for_others": "Esperando a los demás", + "confirm_total__fee_rate": "Comisión:", + "confirm_total__sending_from_account": "Envío desde cuenta:", + "confirm_total__title_fee": "INFO. COMISIÓN", + "confirm_total__title_sending_from": "ENVÍO DESDE", + "debug__loading_seed": "Cargando semilla", + "debug__loading_seed_not_recommended": "No se recomienda cargar una semilla privada.", + "device_name__change_template": "¿Cambiar el nombre del dispositivo a {}?", + "device_name__title": "NOMBRE DISPOSITIVO", + "entropy__send": "¿Seguro que quieres enviar la entropía?", + "entropy__title": "ENTROPÍA INTERNA", + "entropy__title_confirm": "CONFIRMAR ENTROPÍA", + "eos__about_to_sign_template": "Está a punto de firmar {}.", + "eos__action_name": "Nombre de acción:", + "eos__arbitrary_data": "Datos arbitrarios", + "eos__buy_ram": "Comprar RAM", + "eos__bytes": "Bytes:", + "eos__cancel_vote": "Cancelar voto", + "eos__checksum": "Suma de comprobación:", + "eos__code": "Código:", + "eos__contract": "Contrato:", + "eos__cpu": "CPU:", + "eos__creator": "Creador:", + "eos__delegate": "Delegar", + "eos__delete_auth": "Eliminar auth", + "eos__from": "De:", + "eos__link_auth": "Vincular auth", + "eos__memo": "Nota", + "eos__name": "Nombre:", + "eos__net": "NET:", + "eos__new_account": "Nueva cuenta", + "eos__owner": "Propietario:", + "eos__parent": "Principal:", + "eos__payer": "Pagador:", + "eos__permission": "Permiso:", + "eos__proxy": "Representación:", + "eos__receiver": "Destinatario:", + "eos__refund": "Reembolso", + "eos__requirement": "Requisito:", + "eos__sell_ram": "Vender Ram", + "eos__sender": "Remitente:", + "eos__sign_transaction": "Firmar transacción", + "eos__threshold": "Umbral:", + "eos__to": "Para:", + "eos__transfer": "Transferencia:", + "eos__type": "Tipo:", + "eos__undelegate": "Anular delegación", + "eos__unlink_auth": "Desvincular auth", + "eos__update_auth": "Actualizar auth", + "eos__vote_for_producers": "Votar por productores", + "eos__vote_for_proxy": "Votar por representación", + "eos__voter": "Votante:", + "ethereum__amount_sent": "Importe enviado:", + "ethereum__contract": "Contrato:", + "ethereum__data_size_template": "Tamaño: {} bytes", + "ethereum__gas_limit": "Límite de gas:", + "ethereum__gas_price": "Precio de gas:", + "ethereum__max_gas_price": "Precio máximo de gas:", + "ethereum__name_and_version": "Nombre y versión", + "ethereum__new_contract": "¿Nuevo contrato?", + "ethereum__no_message_field": "No hay ningún campo de mensaje.", + "ethereum__priority_fee": "Comisión de prioridad:", + "ethereum__show_full_array": "Mostrar matriz completa.", + "ethereum__show_full_domain": "Mostrar dominio completo.", + "ethereum__show_full_message": "Mostrar mensaje completo.", + "ethereum__show_full_struct": "Mostrar estructura completa.", + "ethereum__sign_eip712": "¿Seguro que quieres firmar los datos EIP-712?", + "ethereum__title_confirm_data": "CONFIRMAR DATOS", + "ethereum__title_confirm_domain": "CONFIRMAR DOMINIO", + "ethereum__title_confirm_message": "CONFIRMAR MENSAJE", + "ethereum__title_confirm_struct": "CONFIRMAR ESTRUCTURA", + "ethereum__title_confirm_typed_data": "CONFIRMAR DATOS", + "ethereum__title_signing_address": "DIRECCIÓN FIRMA", + "ethereum__units_template": "{} unidades", + "ethereum__unknown_token": "Token desconocido", + "ethereum__valid_signature": "La firma es válida.", + "experimental_mode__enable": "¿Activar funciones experimentales?", + "experimental_mode__only_for_dev": "Solo para desarrollo y pruebas beta.", + "experimental_mode__title": "MODO EXPERIMENTAL", + "fido__already_registered": "Ya registrado", + "fido__device_already_registered": "Este dispositivo ya está registrado en esta aplicación.", + "fido__device_already_registered_with_template": "Este dispositivo ya está registrado en {}.", + "fido__device_not_registered": "Este dispositivo no está registrado en esta aplicación.", + "fido__does_not_belong": "La credencial que estás tratando de importar\nno pertenece a este autenticador.", + "fido__erase_credentials": "¿Borrar todas las credenciales?", + "fido__export_credentials": "¿Exportar información sobre las credenciales almacenadas en este dispositivo?", + "fido__not_registered": "No registrado", + "fido__not_registered_with_template": "Este dispositivo no está registrado en\n{}.", + "fido__please_enable_pin_protection": "Activa la protección con PIN.", + "fido__title_authenticate": "AUTENTICACIÓN FIDO2", + "fido__title_import_credential": "IMPORTAR CREDENCIAL", + "fido__title_list_credentials": "LISTAR CREDENCIALES", + "fido__title_register": "REGISTRO FIDO2", + "fido__title_remove_credential": "ELIMINAR CREDENCIAL", + "fido__title_reset": "RESTABLECER FIDO2", + "fido__title_u2f_auth": "Autenticación U2F", + "fido__title_u2f_register": "Registro U2F", + "fido__title_verify_user": "Verificar usuario FIDO2", + "fido__unable_to_verify_user": "No se puede verificar el usuario.", + "fido__wanna_erase_credentials": "¿Seguro que quieres borrar todas las credenciales?", + "firmware_update__title": "ACTUALICE EL FIRMWARE", + "firmware_update__title_fingerprint": "Huella digital de FW", + "homescreen__click_to_connect": "Haz clic para conectar", + "homescreen__click_to_unlock": "Haz clic para desbloquear", + "homescreen__title_backup_failed": "ERROR C. SEG.", + "homescreen__title_backup_needed": "C. SEG. NECESARIA", + "homescreen__title_coinjoin_authorized": "COINJOIN AUTORIZADO", + "homescreen__title_experimental_mode": "MODO EXPERIMENTAL", + "homescreen__title_no_usb_connection": "SIN CONEXIÓN USB", + "homescreen__title_pin_not_set": "PIN NO CONFIGURADO", + "homescreen__title_seedless": "SIN SEMILLA", + "homescreen__title_set": "CONFIG. PANT. INICIO", + "inputs__back": "ATRÁS", + "inputs__cancel": "CANCELAR", + "inputs__delete": "ELIMINAR", + "inputs__enter": "INTRODUCIR", + "inputs__return": "VOLVER", + "inputs__show": "MOSTRAR", + "inputs__space": "ESPACIO", + "joint__title": "TRANSACCIÓN CONJUNTA", + "joint__to_the_total_amount": "Al importe total:", + "joint__you_are_contributing": "Estás aportando:", + "language__change_to": "¿Cambiar el idioma a {}?", + "language__changed": "Idioma cambiado exitosamente", + "language__progress": "Cambiando el idioma", + "language__title": "CONFIGURACIÓN DEL IDIOMA", + "lockscreen__tap_to_connect": "Toca para conectar", + "lockscreen__tap_to_unlock": "Toca para desbloquear", + "lockscreen__title_locked": "BLOQUEADO", + "lockscreen__title_not_connected": "NO CONECTADO", + "misc__decrypt_value": "Descifrar valor", + "misc__encrypt_value": "Cifrar valor", + "misc__title_suite_labeling": "ETIQUETADO SUITE", + "modify_amount__decrease_amount": "Reducir importe en:", + "modify_amount__increase_amount": "Aumentar importe en:", + "modify_amount__new_amount": "Nuevo importe:", + "modify_amount__title": "MODIFICAR IMPORTE", + "modify_fee__decrease_fee": "Reducir comisión en:", + "modify_fee__fee_rate": "Comisión:", + "modify_fee__increase_fee": "Aumentar comisión en:", + "modify_fee__new_transaction_fee": "Nueva comisión de transacción:", + "modify_fee__no_change": "La comisión no ha cambiado.", + "modify_fee__title": "MODIFICAR COMISIÓN", + "modify_fee__transaction_fee": "Comisión de transacción:", + "monero__confirm_export": "Confirmar exportación", + "monero__confirm_ki_sync": "Confirmar sincronización imagen clave", + "monero__confirm_refresh": "Confirmar actualización", + "monero__confirm_unlock_time": "Confirmar hora desbloqueo", + "monero__hashing_inputs": "Hashing de entradas", + "monero__payment_id": "ID de pago", + "monero__postprocessing": "Posprocesando...", + "monero__processing": "Procesando...", + "monero__processing_inputs": "Procesando entradas", + "monero__processing_outputs": "Procesando salidas", + "monero__signing": "Firmando...", + "monero__signing_inputs": "Firmando entradas", + "monero__unlock_time_set_template": "El tiempo de desbloqueo de esta transacción se ha ajustado en {}.", + "monero__wanna_export_tx_der": "¿Seguro que quieres exportar tx_der\npara tx_proof?", + "monero__wanna_export_tx_key": "¿Seguro que quieres exportar tx_key?", + "monero__wanna_export_watchkey": "¿Seguro que quieres exportar las credenciales de solo lectura?", + "monero__wanna_start_refresh": "¿Seguro que quieres\nactualizar?", + "monero__wanna_sync_key_images": "¿Seguro que quieres\nsincronizar imágenes clave?", + "nem__absolute": "absoluto", + "nem__activate": "Activar", + "nem__add": "Añadir", + "nem__confirm_action": "Confirmar acción", + "nem__confirm_address": "Confirmar dirección", + "nem__confirm_creation_fee": "Confirmar comisión de creación", + "nem__confirm_mosaic": "Confirmar mosaico", + "nem__confirm_multisig_fee": "Confirmar comisión multifirma", + "nem__confirm_namespace": "Confirmar espacio de nombres", + "nem__confirm_payload": "Confirmar carga", + "nem__confirm_properties": "Confirmar propiedades", + "nem__confirm_rental_fee": "Confirmar comisión de alquiler", + "nem__confirm_transfer_of": "Confirmar transferencia de", + "nem__convert_account_to_multisig": "¿Convertir la cuenta en una cuenta multifirma?", + "nem__cosign_transaction_for": "Firmar conjuntamente transacción para", + "nem__cosignatory": " cofirmante", + "nem__create_mosaic": "Crear mosaico", + "nem__create_namespace": "Crear espacio de nombres", + "nem__deactivate": "Desactivar", + "nem__decrease": "Disminuir", + "nem__description": "Descripción:", + "nem__divisibility_and_levy_cannot_be_shown": "La divisibilidad y la imposición de tasas no se muestran para mosaicos desconocidos.", + "nem__encrypted": "Cifrado:", + "nem__final_confirm": "Confirmación final", + "nem__immutable": "invariable", + "nem__increase": "Aumentar", + "nem__initial_supply": "Suministro inicial:", + "nem__initiate_transaction_for": "Iniciar transacción para", + "nem__levy_divisibility": "Divisibilidad de la tasa:", + "nem__levy_fee": "Comisión de tasa:", + "nem__levy_fee_of": "Comisión de tasa de", + "nem__levy_mosaic": "Mosaico de tasa:", + "nem__levy_namespace": "Espacio de nombre de la tasa:", + "nem__levy_recipient": "Receptor de la tasa:", + "nem__levy_type": "Tipo de tasa:", + "nem__modify_supply_for": "Modificar suministro de", + "nem__modify_the_number_of_cosignatories_by": "Modificar número de cofirmantes en ", + "nem__mutable": "variable", + "nem__of": "de", + "nem__percentile": "percentil", + "nem__raw_units_template": "{} unidades sin procesar", + "nem__remote_harvesting": " cosecha remota", + "nem__remove": "Retirar", + "nem__set_minimum_cosignatories_to": "Establecer mínimo de cofirmantes en ", + "nem__sign_tx_fee_template": "¿Firmar esta transacción\ny pagar {}\npor la comisión de red?", + "nem__supply_change": "Cambio de suministro", + "nem__supply_units_template": "¿Suministro de {} por {} unidades completas?", + "nem__transferable": "¿Es transferible?", + "nem__under_namespace": "en el espacio de nombres", + "nem__unencrypted": "Sin cifrar:", + "nem__unknown_mosaic": "Mosaico desconocido.", + "passphrase__access_hidden_wallet": "¿Acceder al monedero oculto?", + "passphrase__always_on_device": "¿Seguro que quieres introducir la frase de contraseña siempre en el dispositivo?", + "passphrase__from_host_not_shown": "Se utilizará la frase de contraseña proporcionada por el host, pero no se mostrará por la configuración del dispositivo.", + "passphrase__hidden_wallet": "Monedero oculto", + "passphrase__hide": "¿Ocultar la frase de contraseña del host?", + "passphrase__next_screen_will_show_passphrase": "En la siguiente pantalla verás la frase de contraseña.", + "passphrase__please_enter": "Escribe la frase de contraseña.", + "passphrase__revoke_on_device": "¿Deseas revocar la frase de contraseña en la configuración del dispositivo?", + "passphrase__title_confirm": "VALIDA FRASE CONTR.", + "passphrase__title_enter": "INTRO. FRASE CONTR.", + "passphrase__title_hide": "OCULTAR FRASE CONTR.", + "passphrase__title_settings": "CONFIG. FRASE CONTR.", + "passphrase__title_source": "ORIGEN FRASE CONTR.", + "passphrase__turn_off": "¿Desactivar la protección por frase de contraseña?", + "passphrase__turn_on": "¿Activar la protección por frase de contraseña?", + "pin__change": "¿Cambiar PIN?", + "pin__changed": "PIN cambiado.", + "pin__cursor_will_change": "La posición del cursor cambiará de una a otra para mejorar la seguridad.", + "pin__diff_from_wipe_code": "El nuevo PIN no debe ser el código de borrar.", + "pin__disabled": "Protección con PIN\ndesactivada.", + "pin__enabled": "Protección con PIN\nactivada.", + "pin__enter": "Introduce el PIN.", + "pin__enter_new": "Introduce un nuevo PIN.", + "pin__entered_not_valid": "El pin que ha ingresado no es válido.", + "pin__info": "Necesitarás un PIN para acceder al dispositivo.", + "pin__invalid_pin": "El PIN introducido no es válido.", + "pin__last_attempt": "Último intento", + "pin__mismatch": "Los PIN introducidos no coinciden.", + "pin__pin_mismatch": "Desajuste", + "pin__please_check_again": "Vuelve a comprobarlo.", + "pin__reenter_new": "Vuelve a introducir el nuevo PIN.", + "pin__reenter_to_confirm": "Vuelve a introducir el PIN para confirmar.", + "pin__should_be_long": "El PIN debe tener 4-50 dígitos.", + "pin__title_check_pin": "REVISAR PIN", + "pin__title_settings": "AJUSTES PIN", + "pin__title_wrong_pin": "PIN INCORRECTO", + "pin__tries_left": "intentos restantes", + "pin__turn_off": "¿Seguro que quieres desactivar la protección con PIN?", + "pin__turn_on": "¿Activar la protección con PIN?", + "pin__wrong_pin": "PIN incorrecto", + "plurals__contains_x_keys": "clave|claves", + "plurals__lock_after_x_hours": "hora|Horas", + "plurals__lock_after_x_milliseconds": "milisegundo|milisegundos", + "plurals__lock_after_x_minutes": "minuto|minutos", + "plurals__lock_after_x_seconds": "segundo|segundos", + "plurals__sign_x_actions": "Acción|Acciones", + "plurals__transaction_of_x_operations": "Operación|Operaciones", + "plurals__x_groups_needed": "grupo|grupos", + "plurals__x_shares_needed": "acciones|acciones", + "progress__authenticity_check": "Verificar la autenticidad...", + "progress__done": "Listo", + "progress__loading_transaction": "Cargando transacción...", + "progress__locking_device": "Bloqueando el dispositivo...", + "progress__one_second_left": "Queda 1 segundo", + "progress__please_wait": "ESPERA", + "progress__processing": "PROCESANDO", + "progress__refreshing": "Actualizando...", + "progress__signing_transaction": "Firmando transacción...", + "progress__syncing": "Sincronizando...", + "progress__x_seconds_left_template": "Quedan {} segundos", + "reboot_to_bootloader__restart": "¿Deseas reiniciar el Trezor en modo bootloader?", + "reboot_to_bootloader__title": "IR A BOOTLOADER", + "reboot_to_bootloader__version_by_template": "Versión de firmware {}\npor {}", + "recovery__cancel_dry_run": "Anular la revisión de la copia de seguridad", + "recovery__check_dry_run": "¿Revisar la copia de seguridad?", + "recovery__cursor_will_change": "La posición del cursor cambiará de una a otra para mejorar la seguridad.", + "recovery__dry_run_bip39_valid_match": "La semilla de recuperación introducida es válida y coincide con la del dispositivo.", + "recovery__dry_run_bip39_valid_mismatch": "La semilla de recuperación introducida es válida, pero no coincide con la del dispositivo.", + "recovery__dry_run_slip39_valid_match": "Los recursos compartidos de recuperación introducidos son válidos y coinciden con el contenido actual del dispositivo.", + "recovery__dry_run_slip39_valid_mismatch": "Los recursos compartidos de recuperación introducidos son válidos, pero no coinciden con el contenido actual del dispositivo.", + "recovery__enter_any_share": "Introduce algún recurso compartido.", + "recovery__enter_backup": "Introduce la copia de seguridad.", + "recovery__enter_different_share": "Introduce un recurso compartido distinto.", + "recovery__enter_share_from_diff_group": "Introduce un recurso compartido de otro grupo.", + "recovery__group_num_template": "Grupo {}", + "recovery__group_threshold_reached": "Se ha alcanzado el umbral de grupo.", + "recovery__invalid_seed_entered": "Se ha introducido una semilla de recuperación no válida.", + "recovery__invalid_share_entered": "Se ha introducido un recurso compartido de recuperación no válido.", + "recovery__more_shares_needed": "Se necesitan más recursos compartidos.", + "recovery__num_of_words": "Selecciona el número de palabras de la copia de seguridad.", + "recovery__only_first_n_letters": "Solo tendrá que seleccionar las primeras 2-4 letras de cada palabra.", + "recovery__progress_will_be_lost": "Se perderá todo el progreso.", + "recovery__select_num_of_words": "Selecciona el número de palabras de la copia de seguridad.", + "recovery__share_already_entered": "Ya se ha introducido el recurso compartido.", + "recovery__share_from_another_shamir": "Has introducido un recurso compartido de otra copia de seguridad de Shamir.", + "recovery__share_num_template": "Recurso compartido {}", + "recovery__title": "RECUPERAR MONEDERO", + "recovery__title_cancel_dry_run": "ANULAR REV. C. SEG.", + "recovery__title_cancel_recovery": "ANULAR RECUPERACIÓN", + "recovery__title_dry_run": "REVISAR C. SEG.", + "recovery__title_recover": "RECUPERAR MONEDERO", + "recovery__title_remaining_shares": "REC. COMP. RESTANTES", + "recovery__type_word_x_of_y_template": "Palabra {} de {}", + "recovery__wallet_recovered": "Se ha recuperado el monedero.", + "recovery__wanna_cancel_dry_run": "¿Seguro que quieres anular la revisión de la copia de seguridad?", + "recovery__wanna_cancel_recovery": "¿Seguro que quieres anular el proceso de recuperación?", + "recovery__word_count_template": "({} palabras)", + "recovery__word_x_of_y_template": "PALABRA {} DE {}", + "recovery__x_more_items_starting_template_plural": "{count} más {plural} iniciando", + "recovery__x_more_shares_needed_template_plural": "{count} More {plural} necesaria.", + "recovery__x_of_y_entered_template": "Se han introducido {} de {} recursos compartidos.", + "recovery__you_have_entered": "Has introducido", + "reset__advanced_group_threshold_info": "El umbral de grupo determina el no. de grupos necesarios para recuperar el monedero.", + "reset__all_x_of_y_template": "los {} de los {} recursos compartidos", + "reset__any_x_of_y_template": "alguno de los {} de los {} recursos compartidos", + "reset__button_create": "CREAR MONEDERO", + "reset__button_recover": "RECUPERAR MONEDERO", + "reset__by_continuing": "Al continuar, aceptas los términos y condiciones de Trezor Company.", + "reset__check_backup_title": "REVISAR C. SEG.", + "reset__check_group_share_title_template": "REVISAR COMP. {} G {}", + "reset__check_seed_title": "REVISAR SEMILLA", + "reset__check_share_title_template": "REVISAR RECURSO N. {}", + "reset__continue_with_next_share": "Continuar con el siguiente recurso compartido.", + "reset__continue_with_share_template": "Continuar con el recurso no. {}.", + "reset__finished_verifying_group_template": "Has terminado de verificar los recursos compartidos de recuperación del grupo {}.", + "reset__finished_verifying_seed": "Has terminado de verificar la semilla de recuperación.", + "reset__finished_verifying_shares": "Has terminado de verificar los recursos compartidos de recuperación.", + "reset__group_description": "Un grupo se compone de recursos compartidos de recuperación.", + "reset__group_info": "Cada grupo tiene un no. determinado de recursos compartidos y su propio umbral. En los siguientes pasos, ajustarás el número de recursos compartidos y los umbrales.", + "reset__group_share_checked_successfully_template": "Se ha verificado el recurso compartido {} del grupo {}.", + "reset__group_share_title_template": "REC. COMP. {} GRUPO {}", + "reset__more_info_at": "Más información en", + "reset__need_all_share_template": "Para la recuperación, se necesitan los {} recursos compartidos.", + "reset__need_any_share_template": "Para la recuperación, se necesita alguno de los {} recursos compartidos.", + "reset__needed_to_form_a_group": "para formar un grupo. ", + "reset__needed_to_recover_your_wallet": "para recuperar el monedero. ", + "reset__never_make_digital_copy": "No hagas nunca una copia digital de la copia de seguridad ni la cargues en línea.", + "reset__num_of_share_holders_template": "{} persona/s o ubicación/es tendrá/n un recurso compartido.", + "reset__num_of_shares_advanced_info_template": "Cada recurso compartido de recuperación es una secuencia de 20 palabras. A continuación, elige el umbral de recursos compartidos necesario para formar el grupo {}.", + "reset__num_of_shares_basic_info": "Cada recurso compartido de recuperación es una secuencia de 20 palabras. A continuación, elige cuántos recursos compartidos necesitas para recuperar el monedero.", + "reset__num_shares_for_group_template": "Número necesario de recursos compartidos para formar el grupo {}.", + "reset__number_of_shares_info": "= total de listas de palabras únicas para la copia de seguridad del monedero.", + "reset__one_share": "1 recurso compartido", + "reset__only_one_share_will_be_created": "Solo se creará un recurso compartido.", + "reset__recovery_seed_title": "SEMILLA RECUPERACIÓN", + "reset__recovery_share_title_template": "RECURSO RECUPERACIÓN N. {}", + "reset__required_number_of_groups": "El no. de grupos necesario para la recuperación.", + "reset__select_correct_word": "Selecciona la palabra correcta para cada posición.", + "reset__select_word_template": "SELEC. {} PALABRA", + "reset__select_word_x_of_y_template": "Palabra {} de {}:", + "reset__set_it_to_count_template": "Ajústalo en {} y necesitarás ", + "reset__share_checked_successfully_template": "Se ha verificado el recurso de recuperación no. {}.", + "reset__share_words_title": "C. SEG. ESTÁNDAR", + "reset__slip39_checklist_num_groups": "Número de grupos", + "reset__slip39_checklist_num_shares": "Número de recursos compartidos", + "reset__slip39_checklist_set_num_groups": "Establecer el número de grupos", + "reset__slip39_checklist_set_num_shares": "Establecer un número de acciones", + "reset__slip39_checklist_set_sizes": "Definir tamaños y umbrales", + "reset__slip39_checklist_set_sizes_longer": "Establecer tamaño y umbral para cada grupo", + "reset__slip39_checklist_set_threshold": "Ajustar umbral", + "reset__slip39_checklist_title": "LISTA C. SEG.", + "reset__slip39_checklist_write_down": "Escribir y comprobar todos los recursos compartidos", + "reset__slip39_checklist_write_down_recovery": "Escriba y verifique todas las acciones de recuperación", + "reset__the_threshold_sets_the_number_of_shares": "El umbral establece el número de recursos compartidos ", + "reset__threshold_info": "= mínimo de listas de palabras únicas utilizadas para la recuperación.", + "reset__title_backup_is_done": "C. SEG. COMPLETA", + "reset__title_create_wallet": "CREAR MONEDERO", + "reset__title_create_wallet_shamir": "CREAR MONEDERO (SHAMIR)", + "reset__title_group_threshold": "UMBRAL GRUPOS", + "reset__title_number_of_groups": "NO. GRUPOS", + "reset__title_number_of_shares": "NO. REC. COMP.", + "reset__title_set_group_threshold": "AJUSTAR UMBRAL GRUPOS", + "reset__title_set_number_of_groups": "AJUSTAR NO. GRUPOS", + "reset__title_set_number_of_shares": "AJUSTAR NO. REC. COMP.", + "reset__title_set_threshold": "AJUSTAR UMBRAL", + "reset__to_form_group_template": "para formar el grupo {}.", + "reset__tos_link": "trezor.io/tos", + "reset__total_number_of_shares_in_group_template": "Establece el no. total de recursos compartidos del grupo {}.", + "reset__use_your_backup": "Utiliza la copia de seguridad cuando necesites recuperar el monedero.", + "reset__write_down_words_template": "Escribe las {} palabras en orden.", + "reset__wrong_word_selected": "Se ha seleccionado una palabra incorrecta.", + "reset__you_need_one_share": "Para la recuperación, se necesita 1 recurso compartido.", + "reset__your_backup_is_done": "La copia de seguridad ha finalizado.", + "ripple__confirm_tag": "Confirmar etiqueta", + "ripple__destination_tag_template": "Etiqueta de destino:\n{}", + "rotation__change_template": "¿Quieres cambiar la rotación del dispositivo al {}?", + "rotation__east": "este", + "rotation__north": "norte", + "rotation__south": "sur", + "rotation__title_change": "CAMBIAR ROTACIÓN", + "rotation__west": "oeste", + "safety_checks__approve_unsafe_always": "Trezor te permitirá aprobar algunas acciones que podrían no ser seguras.", + "safety_checks__approve_unsafe_temporary": "Trezor te permitirá aprobar temporalmente algunas acciones que podrían no ser seguras.", + "safety_checks__enforce_strict": "¿Seguro que quieres aplicar estrictos controles de seguridad (recomendado)?", + "safety_checks__title": "COMPROB. SEGURIDAD", + "safety_checks__title_safety_override": "ANULACIÓN SEGURIDAD", + "sd_card__all_data_will_be_lost": "Se perderán todos los datos de la tarjeta SD.", + "sd_card__card_required": "Se necesita una tarjeta SD.", + "sd_card__disable": "¿Seguro que quieres quitar la protección de la tarjeta SD del dispositivo?", + "sd_card__disabled": "Has desactivado la protección SD.", + "sd_card__enable": "¿Seguro que quieres aplicar la protección de la tarjeta SD al dispositivo?", + "sd_card__enabled": "Has activado la protección SD.", + "sd_card__error": "Error de tarjeta SD", + "sd_card__format_card": "Formatea la tarjeta SD.", + "sd_card__insert_correct_card": "Introduce la tarjeta SD correcta para este dispositivo.", + "sd_card__please_insert": "Introduce la tarjeta SD.", + "sd_card__please_unplug_and_insert": "Desconecta el dispositivo e introduce la tarjeta SD.", + "sd_card__problem_accessing": "Se ha producido un problema al acceder a la tarjeta SD.", + "sd_card__refresh": "¿Seguro que quieres sustituir el secreto de la tarjeta SD actual por uno nuevo?", + "sd_card__refreshed": "Has actualizado la protección SD.", + "sd_card__restart": "¿Deseas reiniciar el Trezor en modo bootloader?", + "sd_card__title": "PROTECCIÓN SD", + "sd_card__title_problem": "Problema con la tarjeta SD", + "sd_card__unknown_filesystem": "Sistema de archivos desconocido", + "sd_card__unplug_and_insert_correct": "Desconecta el dispositivo e introduce la tarjeta SD correcta.", + "sd_card__use_different_card": "Utiliza una tarjeta diferente o formatea la tarjeta SD al sistema de archivos FAT32.", + "sd_card__wanna_format": "¿Seguro que quieres formatear la tarjeta SD?", + "sd_card__wrong_sd_card": "Tarjeta SD incorrecta", + "send__address_path": "ruta de dirección", + "send__confirm_sending": "Confirm_sending", + "send__from_multiple_accounts": "Envío desde múltiples cuentas.", + "send__including_fee": "Comisión incluida:", + "send__maximum_fee": "Comisión máxima:", + "send__receiving_to_multisig": "Recibir una dirección multisig.", + "send__title_confirm_sending": "CONFIRMAR ENVÍO", + "send__title_joint_transaction": "TRANSACCIÓN CONJUNTA", + "send__title_receiving_to": "Recibir a", + "send__title_sending": "ENVÍO", + "send__title_sending_amount": "IMPORTE ENVÍO", + "send__title_sending_to": "ENVÍO A", + "send__to_the_total_amount": "Al importe total:", + "send__total_amount": "Importe total:", + "send__transaction_id": "ID de la transacción:", + "send__you_are_contributing": "Estás aportando:", + "share_words__words_in_order": " palabras en orden.", + "share_words__wrote_down_all": "Escribí todas las ", + "sign_message__bytes_template": "{} Bytes", + "sign_message__confirm_address": "DIRECCIÓN FIRMA", + "sign_message__confirm_message": "CONFIRMAR MENSAJE", + "sign_message__message_size": "Tamaño del mensaje:", + "sign_message__verify_address": "VERIFICA LA DIRECCIÓN", + "solana__account_index": "Índice de cuenta", + "solana__associated_token_account": "Cuenta de token asociado", + "solana__confirm_multisig": "Confirmar multisig", + "solana__expected_fee": "Tarifa esperada", + "solana__instruction_accounts_template": "La instrucción contiene cuentas {} y sus datos son {} bytes de largo.", + "solana__instruction_data": "Datos de instrucciones", + "solana__instruction_is_multisig": "La siguiente instrucción es una instrucción multisig.", + "solana__is_provided_via_lookup_table_template": "{} se proporciona a través de una tabla de búsqueda.", + "solana__lookup_table_address": "Dirección de la tabla de búsqueda", + "solana__multiple_signers": "Múltiples firmantes", + "solana__token_address": "Dirección token", + "solana__transaction_contains_unknown_instructions": "La transacción contiene instrucciones desconocidas.", + "solana__transaction_requires_x_signers_template": "La transacción requiere {} firmantes que aumentan la tarifa.", + "stellar__account_merge": "Fusión de cuentas", + "stellar__account_thresholds": "Umbrales de cuenta", + "stellar__add_signer": "Añadir firmante", + "stellar__add_trust": "Añadir trustline", + "stellar__all_will_be_sent_to": "Todos los XLM se enviarán a:", + "stellar__allow_trust": "Permitir trustline", + "stellar__asset": "Activo", + "stellar__balance_id": "Balance ID", + "stellar__bump_sequence": "Incrementar secuencia", + "stellar__buying": "Compra:", + "stellar__claim_claimable_balance": "Reclamar saldo reclamable", + "stellar__clear_data": "Borrar datos", + "stellar__clear_flags": "Borrar indicadores", + "stellar__confirm_issuer": "Confirmar emisor", + "stellar__confirm_memo": "Confirmar nota", + "stellar__confirm_network": "Confirmar red", + "stellar__confirm_operation": "Confirmar operación", + "stellar__confirm_stellar": "Confirmar Stellar", + "stellar__confirm_timebounds": "Confirmar límites de tiempo", + "stellar__create_account": "Crear cuenta", + "stellar__debited_amount": "Importe adeudado", + "stellar__delete": "Eliminar", + "stellar__delete_passive_offer": "Eliminar oferta pasiva", + "stellar__delete_trust": "Eliminar trustline", + "stellar__destination": "Destino:", + "stellar__exchanges_require_memo": "Importante: En muchos exchanges es necesario dejar nota al hacer un depósito.", + "stellar__final_confirm": "Confirmación final", + "stellar__hash": "Hash:", + "stellar__high": "Alta:", + "stellar__home_domain": "Dominio principal", + "stellar__inflation": "Inflación", + "stellar__initial_balance": "Saldo inicial", + "stellar__initialize_signing_with": "Iniciar firma con", + "stellar__issuer_template": "Emisor {}:", + "stellar__key": "Clave:", + "stellar__limit": "Límite:", + "stellar__low": "Baja:", + "stellar__master_weight": "Importancia del principal:", + "stellar__medium": "Media:", + "stellar__new_offer": "Nueva oferta", + "stellar__new_passive_offer": "Nueva oferta pasiva", + "stellar__no_memo_set": "No se ha establecido ninguna nota.", + "stellar__no_restriction": "[sin restricciones]", + "stellar__on_network_template": "Transacción en {}", + "stellar__path_pay": "Path payment", + "stellar__path_pay_at_least": "Path payment por un mínimo de", + "stellar__pay": "Pago:", + "stellar__pay_at_most": "Pago máximo:", + "stellar__preauth_transaction": "Transacción preautorización:", + "stellar__price_per_template": "Precio por {}:", + "stellar__private_network": "red privada", + "stellar__remove_signer": "Eliminar firmante", + "stellar__revoke_trust": "Revocar trustline", + "stellar__selling": "Venta:", + "stellar__set_data": "Configurar datos", + "stellar__set_flags": "Configurar indicadores", + "stellar__set_sequence_to_template": "¿Establecer secuencia en {}?", + "stellar__sign_tx_count_template": "¿Firmar esta transacción compuesta por {}", + "stellar__sign_tx_fee_template": "y pagar {}\npor comisión?", + "stellar__source_account": "Cuenta origen:", + "stellar__testnet_network": "red Testnet", + "stellar__trusted_account": "Cuenta de confianza", + "stellar__update": "Actualizar", + "stellar__valid_from": "Válido desde (UTC)", + "stellar__valid_to": "Válido hasta (UTC)", + "stellar__value_sha256": "Valor (SHA-256):", + "stellar__wanna_clean_value_key_template": "¿Quieres borrar la clave de valor {}?", + "stellar__your_account": " tu cuenta", + "tezos__baker_address": "Dirección de panadero:", + "tezos__balance": "Saldo:", + "tezos__ballot": "Papeleta:", + "tezos__confirm_delegation": "Confirmar delegación", + "tezos__confirm_origination": "Confirmar originación", + "tezos__delegator": "Delegador:", + "tezos__proposal": "Propuesta", + "tezos__register_delegate": "Registrar delegado", + "tezos__remove_delegation": "Eliminar delegación", + "tezos__submit_ballot": "Enviar papeleta", + "tezos__submit_proposal": "Enviar propuesta", + "tezos__submit_proposals": "Enviar propuestas", + "tutorial__middle_click": "Pulsa a la vez ambos botones\npara confirmar.", + "tutorial__press_and_hold": "Mantén pulsado el botón derecho para aprobar las operaciones importantes.", + "tutorial__ready_to_use": "Todo está listo para\nque uses tu Trezor.", + "tutorial__scroll_down": "Pulsa el botón derecho para desplazarte hacia abajo y leer todo el contenido cuando el texto no quepa en una pantalla.\nPulsa el botón izquierdo para arriba.", + "tutorial__sure_you_want_skip": "¿Seguro que quieres\nomitir el tutorial?", + "tutorial__title_hello": "HOLA", + "tutorial__title_screen_scroll": "DESPLAZARSE", + "tutorial__title_skip": "OMITIR TUTORIAL", + "tutorial__title_tutorial_complete": "TUTORIAL COMPLETO", + "tutorial__use_trezor": "Para usar Trezor,\nhaz clic en los botones izquierdo y derecho.\nContinuar derecho.", + "tutorial__welcome_press_right": "Te damos la bienvenida a Trezor. Pulsa el botón derecho para continuar.", + "u2f__get": "¿Aumentar y recuperar el contador U2F?", + "u2f__set_template": "¿Ajustar el contador U2F a {}?", + "u2f__title_get": "OBTENER CONTADOR U2F", + "u2f__title_set": "CONFIG. CONTADOR U2F", + "wipe__info": "Se borrarán todos los datos.", + "wipe__title": "BORRAR DISPOSITIVO", + "wipe__want_to_wipe": "¿Seguro que quieres borrar el dispositivo?\n", + "wipe_code__change": "¿Cambiar el código de borrar?", + "wipe_code__changed": "El código de borrar se ha cambiado.", + "wipe_code__diff_from_pin": "El código de borrar debe ser diferente del PIN.\nInténtalo de nuevo.", + "wipe_code__disabled": "El código de borrar se ha desactivado.", + "wipe_code__enabled": "El código de borrar se ha activado.", + "wipe_code__enter_new": "Escribe el nuevo código de borrar", + "wipe_code__info": "Para borrar todos los datos de este dispositivo.", + "wipe_code__invalid": "Código de limpieza no válido", + "wipe_code__mismatch": "Los códigos de borrar no coinciden.", + "wipe_code__reenter": "Vuelve a introducir el código de borrar.", + "wipe_code__reenter_to_confirm": "Vuelve a introducir el código de borrar para confirmar.", + "wipe_code__title_check": "REVISAR CÓD. BORRAR", + "wipe_code__title_invalid": "CÓD. BORRAR NO VÁLIDO", + "wipe_code__title_settings": "AJUSTES CÓD. BORRAR", + "wipe_code__turn_off": "¿Desactivar la protección de código de borrar?", + "wipe_code__turn_on": "¿Activar la protección del código de borrar?", + "wipe_code__wipe_code_mismatch": "Limpiar el coincidencia de código", + "word_count__title": "NO. PALABRAS", + "words__account": "Cuenta", + "words__account_colon": "Cuenta:", + "words__address": "DIRECCIÓN", + "words__amount": "Cantidad", + "words__are_you_sure": "¿Seguro?", + "words__array_of": "Gama de", + "words__blockhash": "Blockhash", + "words__buying": "Comprar", + "words__confirm": "Confirmar", + "words__confirm_fee": "Confirmar tarifa", + "words__contains": "Contiene", + "words__continue_anyway": "continuar de todos modos?", + "words__continue_with": "Continuar con", + "words__error": "Error", + "words__fee": "Tarifa", + "words__from": "de", + "words__keep_it_safe": "¡Guárdala en un lugar seguro!", + "words__know_what_your_doing": "Continúa solo si tienes los conocimientos necesarios.", + "words__my_trezor": "Mi trezor", + "words__no": "No", + "words__outputs": "salidas", + "words__please_check_again": "Vuelve a comprobarlo", + "words__please_try_again": "Inténtalo de nuevo", + "words__really_wanna": "¿Seguro que quieres", + "words__recipient": "Recipiente", + "words__sign": "Firmar", + "words__signer": "Firmante", + "words__title_check": "REVISAR", + "words__title_group": "GRUPO", + "words__title_information": "INFORMACIÓN", + "words__title_remember": "RECORDAR", + "words__title_share": "REC. COMP.", + "words__title_shares": "REC. COMP.", + "words__title_success": "COMPLETADO", + "words__title_summary": "RESUMEN", + "words__title_threshold": "UMBRAL", + "words__unknown": "Desconocido", + "words__warning": "Advertencia", + "words__writable": "Escribible", + "words__yes": "Sí" + } +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_cs.json b/core/translations/fonts/font_pixeloperator_bold_8_cs.json new file mode 100644 index 000000000..d98144159 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "060707000718c7b3cffcc0", + "Č": "0607070007cde7b3c33780", + "Ď": "0607070007cdefb3cf3f80", + "É": "060707000718cff0f30fc0", + "Ě": "0607070007cdeff0f30fc0", + "Í": "0307050107786db0", + "Ň": "0607070007cdecfbff7cc0", + "Ó": "060707000718c7b3cf3780", + "Ř": "0607070007cdefb3cfecc0", + "Š": "0607070007cde7b0783f80", + "Ť": "0607070007cdefcc30c300", + "Ú": "060707000718ccf3cf3780", + "Ů": "06070700077b3780cf3780", + "Ý": "060707000718ccf378c300", + "Ž": "0607070007cdefc6318fc0", + "á": "060707000718c7837f37c0", + "č": "0607070007cde7b3c33780", + "ď": "0b070d00070c618df3660cc1981f00", + "é": "060707000718c7b3ff0780", + "ě": "0607070007cde7b3ff0780", + "í": "0307050107786db0", + "ň": "0607070007cdefb3cf3cc0", + "ó": "060707000718c7b3cf3780", + "ř": "0607070007cdecf7e30c00", + "š": "0607070007cde7b0783f80", + "ť": "0a070b000700d83f998060180380", + "ú": "060707000718ccf3cf3780", + "ů": "06070700077b3780cf3780", + "ý": "060807000718ccf3cdf0de00", + "ž": "0607070007cdefc6318fc0" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_de.json b/core/translations/fonts/font_pixeloperator_bold_8_de.json new file mode 100644 index 000000000..3c000c31b --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0607070007cc07b3cffcc0", + "Ö": "0607070007cc07b3cf3780", + "Ü": "0607070007cc0cf3cf3780", + "ß": "06070700077b3cf6cf3d80", + "ä": "0607070007cc07837f37c0", + "ö": "0607070007cc07b3cf3780", + "ü": "0607070007cc0cf3cf3780" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_es.json b/core/translations/fonts/font_pixeloperator_bold_8_es.json new file mode 100644 index 000000000..51f7ac58f --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_es.json @@ -0,0 +1,17 @@ +{ + "Á": "060707000718c7b3cffcc0", + "É": "060707000718cff0f30fc0", + "Í": "0307050107786db0", + "Ñ": "070707000777bb376fdbb300", + "Ó": "060707000718c7b3cf3780", + "Ú": "060707000718ccf3cf3780", + "Ü": "0607070007cc0cf3cf3780", + "á": "060707000718c7837f37c0", + "é": "060707000718c7b3ff0780", + "í": "0307050107786db0", + "ñ": "070707000777bbe66cd9b300", + "ó": "060707000718c7b3cf3780", + "ú": "060707000718ccf3cf3780", + "ü": "0607070007cc0cf3cf3780", + "¿": "0607070006300318c33780" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_fr.json b/core/translations/fonts/font_pixeloperator_bold_8_fr.json new file mode 100644 index 000000000..ab0b0ca02 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_fr.json @@ -0,0 +1,34 @@ +{ + "À": "060707000760c7b3cffcc0", + "Â": "0707070007fd0de66cdfb300", + "Æ": "0a070b00077ff30cc33cfc330cfc", + "Ç": "06080700077b3c30cde19c00", + "È": "060707000760cff0f30fc0", + "É": "060707000718cff0f30fc0", + "Ê": "06070700077b3ff0f30fc0", + "Ë": "0607070007cc0ff0f30fc0", + "Î": "0507050007f4d8c63180", + "Ï": "05070500079818c63180", + "Ô": "0707070007fd0de66cd99e00", + "Ù": "060707000760ccf3cf3780", + "Û": "06070700077b3033cf3780", + "Ü": "0607070007cc0cf3cf3780", + "Ÿ": "0607070007cc0cf378c300", + "Œ": "0a070b00077ff30cc33ccc3307fc", + "à": "060707000760c7837f37c0", + "â": "0707070007fd0de067d99f00", + "æ": "0a050b00057f8337ff307f80", + "ç": "06080700077b3c3378c19c00", + "è": "060707000760c7b3ff0780", + "é": "060707000718c7b3ff0780", + "ê": "0707070007fd0de66fd81e00", + "ë": "0607070007cc07b3ff0780", + "î": "0507050007f4d8c63180", + "ï": "05070500079818c63180", + "ô": "0707070007fd0de66cd99e00", + "ù": "060707000760ccf3cf3780", + "û": "06070700077b3033cf3780", + "ü": "0607070007cc0cf3cf3780", + "ÿ": "0608070007cc0cf3cdf0de00", + "œ": "0a050b00057fb33cff307f80" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_cs.json b/core/translations/fonts/font_pixeloperator_regular_8_cs.json new file mode 100644 index 000000000..d4a05cec9 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "0507060007111d18fe20", + "Č": "0507060007511d1845c0", + "Ď": "0507060007513d18c7c0", + "É": "0507060007113f0e43e0", + "Ě": "0507060007513f0e43e0", + "Í": "020704010762a8", + "Ň": "050706000751239ace20", + "Ó": "0507060007111d18c5c0", + "Ř": "0507060007513d18fa20", + "Š": "0507060007511d0707c0", + "Ť": "0507060007513e421080", + "Ú": "0507060007112318c5c0", + "Ů": "0507060007228918c5c0", + "Ý": "05070600071123151080", + "Ž": "0507060007513e2223e0", + "á": "0507060007111c17c5e0", + "č": "0507060007511d1845c0", + "ď": "09070b000708845e51088441e0", + "é": "0507060007111d1fc1c0", + "ě": "0507060007511d1fc1c0", + "í": "020704010762a8", + "ň": "0507060007513d18c620", + "ó": "0507060007111d18c5c0", + "ř": "050706000751274c4200", + "š": "0507060007511d0707c0", + "ť": "08070a00070141f24040403000", + "ú": "0507060007112318c5c0", + "ů": "0507060007228918c5c0", + "ý": "0508060007112318bc2e00", + "ž": "0507060007513e2223e0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_de.json b/core/translations/fonts/font_pixeloperator_regular_8_de.json new file mode 100644 index 000000000..d6bfcebc8 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0507060007501d18fe20", + "Ö": "0507060007501d18c5c0", + "Ü": "0507060007502318c5c0", + "ß": "0507060007746368c6c0", + "ä": "0507060007501c17c5e0", + "ö": "0507060007501d18c5c0", + "ü": "0507060007502318c5c0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_es.json b/core/translations/fonts/font_pixeloperator_regular_8_es.json new file mode 100644 index 000000000..e9d3c5dfe --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_es.json @@ -0,0 +1,17 @@ +{ + "Á": "0507060007111d18fe20", + "É": "0507060007113f0e43e0", + "Í": "020704010762a8", + "Ñ": "06070600076668b2aa6880", + "Ó": "0507060007111d18c5c0", + "Ú": "0507060007112318c5c0", + "Ü": "0507060007502318c5c0", + "á": "0507060007111c17c5e0", + "é": "0507060007111d1fc1c0", + "í": "020704010762a8", + "ñ": "0607060007666f228a2880", + "ó": "0507060007111d18c5c0", + "ú": "0507060007112318c5c0", + "ü": "0507060007502318c5c0", + "¿": "050706000620088845c0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_fr.json b/core/translations/fonts/font_pixeloperator_regular_8_fr.json new file mode 100644 index 000000000..b398c5c3a --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_fr.json @@ -0,0 +1,34 @@ +{ + "À": "0507060007411d18fe20", + "Â": "0507060007229d18fe20", + "Æ": "09070a00077fc42211cf84423e", + "Ç": "0508060007746108b84c00", + "È": "0507060007413f0e43e0", + "É": "0507060007113f0e43e0", + "Ê": "050706000722bf0e43e0", + "Ë": "0507060007503f0e43e0", + "Î": "0307040007542490", + "Ï": "0307040007a12490", + "Ô": "0507060007229d18c5c0", + "Ù": "0507060007412318c5c0", + "Û": "0507060007228118c5c0", + "Ü": "0507060007502318c5c0", + "Ÿ": "05070600075023151080", + "Œ": "09070a00077fc42211c88441fe", + "à": "0507060007411c17c5e0", + "â": "0507060007229c17c5e0", + "æ": "09050a000577045ff10770", + "ç": "0508060007746117104c00", + "è": "0507060007411d1fc1c0", + "é": "0507060007111d1fc1c0", + "ê": "0507060007229d1fc1c0", + "ë": "0507060007501d1fc1c0", + "î": "0307040007542490", + "ï": "0307040007a12490", + "ô": "0507060007229d18c5c0", + "ù": "0507060007412318c5c0", + "û": "0507060007228118c5c0", + "ü": "0507060007502318c5c0", + "ÿ": "0508060007502318bc2e00", + "œ": "09050a0005774463f10770" +} diff --git a/core/translations/fonts/font_pixeloperatormono_regular_8_cs.json b/core/translations/fonts/font_pixeloperatormono_regular_8_cs.json new file mode 100644 index 000000000..66ba854de --- /dev/null +++ b/core/translations/fonts/font_pixeloperatormono_regular_8_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "0507070007111d18fe20", + "Č": "0507070007511d1845c0", + "Ď": "0507070007513d18c7c0", + "É": "0507070007113f0e43e0", + "Ě": "0507070007513f0e43e0", + "Í": "0507070007113e4213e0", + "Ň": "050707000751239ace20", + "Ó": "0507070007111d18c5c0", + "Ř": "0507070007513d18fa20", + "Š": "0507070007511d0707c0", + "Ť": "0507070007513e421080", + "Ú": "0507070007112318c5c0", + "Ů": "0507070007228918c5c0", + "Ý": "05070700071123151080", + "Ž": "0507070007513e2223e0", + "á": "0507070007111c17c5e0", + "č": "0507070007511d1845c0", + "ď": "0607070007249e88208e00", + "é": "0507070007111d1fc1c0", + "ě": "0507070007511d1fc1c0", + "í": "050707000711384213e0", + "ň": "0507070007513d18c620", + "ó": "0507070007111d18c5c0", + "ř": "050707000751274c4200", + "š": "0507070007511d0707c0", + "ť": "0607070007061ea0820600", + "ú": "0507070007112318c5c0", + "ů": "0507070007228918c5c0", + "ý": "0508070007112318bc2e00", + "ž": "0507070007513e2223e0" +} diff --git a/core/translations/fonts/font_pixeloperatormono_regular_8_de.json b/core/translations/fonts/font_pixeloperatormono_regular_8_de.json new file mode 100644 index 000000000..0353907c4 --- /dev/null +++ b/core/translations/fonts/font_pixeloperatormono_regular_8_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0507070007501d18fe20", + "Ö": "0507070007501d18c5c0", + "Ü": "0507070007502318c5c0", + "ß": "0507070007746368c6c0", + "ä": "0507070007501c17c5e0", + "ö": "0507070007501d18c5c0", + "ü": "0507070007502318c5c0" +} diff --git a/core/translations/fonts/font_pixeloperatormono_regular_8_es.json b/core/translations/fonts/font_pixeloperatormono_regular_8_es.json new file mode 100644 index 000000000..6f58b4a06 --- /dev/null +++ b/core/translations/fonts/font_pixeloperatormono_regular_8_es.json @@ -0,0 +1,17 @@ +{ + "Á": "0507070007111d18fe20", + "É": "0507070007113f0e43e0", + "Í": "0507070007113e4213e0", + "Ñ": "06070700076668b2aa6880", + "Ó": "0507070007111d18c5c0", + "Ú": "0507070007112318c5c0", + "Ü": "0507070007502318c5c0", + "á": "0507070007111c17c5e0", + "é": "0507070007111d1fc1c0", + "í": "050707000711384213e0", + "ñ": "0607070007666f228a2880", + "ó": "0507070007111d18c5c0", + "ú": "0507070007112318c5c0", + "ü": "0507070007502318c5c0", + "¿": "050707000620088845c0" +} diff --git a/core/translations/fonts/font_pixeloperatormono_regular_8_fr.json b/core/translations/fonts/font_pixeloperatormono_regular_8_fr.json new file mode 100644 index 000000000..6125d8a5e --- /dev/null +++ b/core/translations/fonts/font_pixeloperatormono_regular_8_fr.json @@ -0,0 +1,34 @@ +{ + "À": "0507070007411d18fe20", + "Â": "0507070007229d18fe20", + "Æ": "0607070007fc820ee083c0", + "Ç": "0508070007746108b84c00", + "È": "0507070007413f0e43e0", + "É": "0507070007113f0e43e0", + "Ê": "050707000722bf0e43e0", + "Ë": "0507070007503f0e43e0", + "Î": "050707000722be4213e0", + "Ï": "0507070007503e4213e0", + "Ô": "0507070007229d18c5c0", + "Ù": "0507070007412318c5c0", + "Û": "0507070007228118c5c0", + "Ü": "0507070007502318c5c0", + "Ÿ": "05070700075023151080", + "Œ": "0607070007fc820e208fc0", + "à": "0507070007411c17c5e0", + "â": "0507070007229c17c5e0", + "æ": "0605070005d89fc8d8", + "ç": "0508070007746117104c00", + "è": "0507070007411d1fc1c0", + "é": "0507070007111d1fc1c0", + "ê": "0507070007229d1fc1c0", + "ë": "0507070007501d1fc1c0", + "î": "050707000722b84213e0", + "ï": "050707000750384213e0", + "ô": "0507070007229d18c5c0", + "ù": "0507070007412318c5c0", + "û": "0507070007228118c5c0", + "ü": "0507070007502318c5c0", + "ÿ": "0508070007502318bc2e00", + "œ": "0605070005d893c8d8" +} diff --git a/core/translations/fonts/font_roboto_bold_20_cs.json b/core/translations/fonts/font_roboto_bold_20_cs.json new file mode 100644 index 000000000..cc7b3e3a1 --- /dev/null +++ b/core/translations/fonts/font_roboto_bold_20_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "0e120d0012000000e2df0100000000fc2e0000000030eb030000000000000000000000d0ff0400000000f3ff0a00000000f9ff1f00000000fefe6f00000050fff6cf000000b0ffa1ff020000f1cf50ff080000f76f00ff0e0000fd1f00fa4f0030ffffffffbf0090ffffffffff01f0ff6666b6ff07f5bf000040ff0dfc5f000000fe3f", + "Č": "0d120d001200b0bf50ff03000000fafc3e00000000a0ef030000000000000000000020d8ff6c000000f4ffffff0c0010ffbf87fdaf0090ff0800e0ff01e0ff010090ff05f0df0000000000f2df0000000000f2df0000000000f1df0000000000e0ff000080ff0590ff0700e0ff0220ffaf77fdbf0000f5ffffff1c000020e9ff7c0000", + "Ď": "0c120d0112f43fd19f000040fffd08000000f48f000000000000000000fbffef5b0000fbffffff1c00fb8f76fdcf00fb3f00b0ff06fb3f0020ff0cfb3f0000fe0ffb3f0000fd1ffb3f0000fd1ffb3f0000ff0ffb3f0030ff0cfb3f00c0ff06fb7f75fdcf00fbffffff1c00fbffef5b0000", + "É": "0a120b0112000090ff060000f67f000000d909000000000000fbffffffcffbffffffcffb8f666646fb3f000000fb3f000000fb3f000000fbffffff0dfbffffff0dfb7f444403fb3f000000fb3f000000fb7f555545fbffffffcffbffffffcf", + "Ě": "0a120b011240ff04fc0a00f4df9f000030ff09000000000000fbffffffcffbffffffcffb8f666646fb3f000000fb3f000000fb3f000000fbffffff0dfbffffff0dfb7f444403fb3f000000fb3f000000fb7f555545fbffffffcffbffffffcf", + "Í": "061206011200fd2ea0ff03b24e00000000f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00", + "Ň": "0c120e011200f53fd18f000050effd08000000f57f0000000000000000fb8f0000f1dffbff0200f1dffbff0b00f1dffbff5f00f1dffbffef01f1dffb8fff09f1dffb3ffb3ff1dffb3ff2dff1dffb3f70fff8dffb3f00fdffdffb3f00f4ffdffb3f00a0ffdffb3f0010fedffb3f0000f6df", + "Ó": "0d120e0012000000d1ef0200000000fb3f0000000020eb040000000000000000000010d7ef6c000000e3ffffff1c0000fecf87fdbf0080ff0a00d0ff04d0ff020050ff0af0ff000010ff0df2df000000ff0ef2df000000ff0ef0ff000020ff0dd0ff020060ff0a80ff0a00d0ff0510fecf77fdcf0000e3ffffff1c000010d7ef6c0000", + "Ř": "0c120d011290df41ff040000f9fd4f00000090ff040000000000000000fbffffce0600fbffffffbf00fb8f66f9ff06fb3f0060ff0bfb3f0020ff0cfb3f0040ff0bfb3f00d3ff06fbffffffbf00fbffffff0900fb8f86ff0c00fb3f00fc5f00fb3f00f3ef00fb3f00a0ff08fb3f0010ff2f", + "Š": "0c120c001200e26fb0bf000020fefc0b000000e2bf00000000000000000060ecef3a0010fdffffff0690ff6d95ff2fd0ff0200f87fc0ff0600311350ffcf16000000f7ffff3b000020e9ffff06000000b4ff2f72470000f97ff2df0000f78fc0ff6c75ff5f10fdffffff0a0060ebef5b00", + "Ť": "0c120c001200f53fd19f000050fffd08000000f48f0000000000000000f9fffffffffff9ffffffffff6366f9cf66560000f5af00000000f5af00000000f5af00000000f5af00000000f5af00000000f5af00000000f5af00000000f5af00000000f5af00000000f5af00000000f5af0000", + "Ú": "0c120d0112000040ff0b000000e1cf00000000c61d0000000000000000fd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000ff0ffa6f0040ff0df4ff69e8ff0780ffffffaf0000b4febe0500", + "Ů": "0c130d01130000eb1c000000800a99000000800aa900000010eb1c0000000000000000fd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000ff0ffa6f0040ff0df4ff69e8ff0780ffffffaf0000b4febe0500", + "Ý": "0d120c0012000000f96f0000000060ff0700000000909d00000000000000000000fb7f0000f2ff01f3ef0000f98f00a0ff0610ff1f0020ff0d80ff080000fa5fe0ef000000f2cff77f00000090ffff0e00000010ffff0600000000f8df0000000000f5af0000000000f5af0000000000f5af0000000000f5af0000000000f5af000000", + "Ž": "0c120c001200f43fd19f000040fffd08000000f48f0000000000000000f4ffffffff6ff4ffffffff5f616666a6ff0c000000e1ff02000000fb6f00000070ff0b000000f3ef01000000fd4f00000090ff09000000f4df00000010fe3f000000b0ff5b555535f4ffffffff8ff4ffffffff8f", + "á": "0b0f0b000f000070ff09000000f3af00000000d80b000000000000000000b4fe8d010070ffffff0d00f0ef23f96f00000000f39f0000c6feffaf0090ffbefbaf00f2cf00f3af00f48f00f3af00f3df43fdaf00c0ffffffbf0000e8cfe3ef00", + "č": "0a0f0a000f40ff04fc0a00f4df9f000030ff090000000000000091fe9e0120feffff1eb0ff59fa9ff1cf00e0dff48f001022f57f000000f48f000000f1cf00b0bdb0ff59f99f20feffff1e0091fe9e01", + "ď": "0e0f0d000f000000a0ff52bf000000a0ff62af000000a0ffb24f000000a0ff820b00c4efa8ff020040ffffffff0200d0ff5af8ff0200f2df00b0ff0200f49f00a0ff0200f57f00a0ff0200f48f00a0ff0200f1df00b0ff0200c0ff5af8ff020030ffffffff020000c3ef79ff0200", + "é": "0b0f0b000f000080ff08000000f49f00000000d80a00000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "ě": "0b0f0b000f30fe06fb0b0000e2cfbf00000020fe0b00000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "í": "060f05010f20ff1dd0ef01b42e00000000fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00", + "ň": "0a0f0b010fc0af70ef0200fcfc2e0000b0ef02000000000000ff5bfc9e00ffffffff08ffaf75ff0eff0e00fc1fff0d00fa2fff0d00fa2fff0d00fa2fff0d00fa2fff0d00fa2fff0d00fa2fff0d00fa2f", + "ó": "0b0f0b000f000030ff0c000000e1df01000000c51d00000000000000000081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", + "ř": "080f07000ff62ee27f60effe0600f66f0000000000e0cfe50fe0efff0fe0ffdf0ce0ff0300e0ef0000e0ef0000e0ef0000e0ef0000e0ef0000e0ef0000e0ef0000", + "š": "0a0f0a000f40ff14fd0900f4df9f000040ff0800000000000000b4fe7c0070ffffff0cf0df12fa5ff1bf006236c0ff9d050010fbffef060020b7ff3f932900f58ff3bf01f86f90ffffff0d00c5ff7d01", + "ť": "0911070011000000fc04000000fd02000020df0050ff274c0050ff07000050ff070000feffff0400feffff040061ff18000050ff07000050ff07000050ff07000050ff07000050ff07000040ff5c020010feff060000c3ef0400", + "ú": "0a0f0b010f0000f3cf000010fe0d000050dc01000000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f", + "ů": "0a100b011000a0ce010000b7800a0000b7800a0000b0ce02000000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f", + "ý": "0b130a000f0000b0ff04000000f85f00000000ea070000000000000000fc3f00f2df00f78f00f77f00f1cf00fc2f00c0ff11ff0c0060ff56ff070010ffabff020000fbefcf000000f6ff6f000000f1ff1f000000b0ff0b00000050ff0600000090ff01000040f7bf000000d0ff2f000000b0cf04000000", + "ž": "0a0f0a000f50ff13fd0800f5de8f000050ff07000000000000f2ffffff5ff2ffffff4f4044b4ff0b0000f3ef010000fd5f000090ff090000f4df000010fe3f0000b0ff4b4424f4ffffff8ff4ffffff8f" +} diff --git a/core/translations/fonts/font_roboto_bold_20_de.json b/core/translations/fonts/font_roboto_bold_20_de.json new file mode 100644 index 000000000..edcf48328 --- /dev/null +++ b/core/translations/fonts/font_roboto_bold_20_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0e120d00120020160064000000e0af20ff060000906f00ec0300000000000000000000d0ff0400000000f3ff0a00000000f9ff1f00000000fefe6f00000050fff6cf000000b0ffa1ff020000f1cf50ff080000f76f00ff0e0000fd1f00fa4f0030ffffffffbf0090ffffffffff01f0ff6666b6ff07f5bf000040ff0dfc5f000000fe3f", + "Ö": "0d120e00120010260063000000b0cf00ff080000708f00fb0400000000000000000010d7ef6c000000e3ffffff1c0000fecf87fdbf0080ff0a00d0ff04d0ff020050ff0af0ff000010ff0df2df000000ff0ef2df000000ff0ef0ff000020ff0dd0ff020060ff0a80ff0a00d0ff0510fecf77fdcf0000e3ffffff1c000010d7ef6c0000", + "Ü": "0c120d011200640050040010ff06f52f0000ec03e21d00000000000000fd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000ff0ffa6f0040ff0df4ff69e8ff0780ffffffaf0000b4febe0500", + "ß": "0b0f0d010f00d7ef4c0000b0ffffff0600f5df75ff0e00f94f00fc0f00fa2f00fe0e00fb2f50ff0700fb2fb0ff0100fb2fb0ff0400fb2f50ff3f00fb2f00f7ff03fb2f0050ff0bfb2f0000fe0efb2f6784ff0cfb2ffeffff05fb2febef3b00", + "ä": "0b0f0b000f00550060030040ff04f80f0010dd01f40b0000000000000000b4fe8d010070ffffff0d00f0ef23f96f00000000f39f0000c6feffaf0090ffbefbaf00f2cf00f3af00f48f00f3af00f3df43fdaf00c0ffffffbf0000e8cfe3ef00", + "ö": "0b0f0b000f00630050050000ff08f44f0000fb04d11d000000000000000081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", + "ü": "0a0f0b010f3006005500f17f40ff03c04e20de010000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f" +} diff --git a/core/translations/fonts/font_roboto_bold_20_es.json b/core/translations/fonts/font_roboto_bold_20_es.json new file mode 100644 index 000000000..15d5688e7 --- /dev/null +++ b/core/translations/fonts/font_roboto_bold_20_es.json @@ -0,0 +1,17 @@ +{ + "Á": "0e120d0012000000e2df0100000000fc2e0000000030eb030000000000000000000000d0ff0400000000f3ff0a00000000f9ff1f00000000fefe6f00000050fff6cf000000b0ffa1ff020000f1cf50ff080000f76f00ff0e0000fd1f00fa4f0030ffffffffbf0090ffffffffff01f0ff6666b6ff07f5bf000040ff0dfc5f000000fe3f", + "É": "0a120b0112000090ff060000f67f000000d909000000000000fbffffffcffbffffffcffb8f666646fb3f000000fb3f000000fb3f000000fbffffff0dfbffffff0dfb7f444403fb3f000000fb3f000000fb7f555545fbffffffcffbffffffcf", + "Í": "061206011200fd2ea0ff03b24e00000000f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00", + "Ñ": "0c120e011200508b008c0000f3ffdf7f0000f724fb0a00000000000000fb8f0000f1dffbff0200f1dffbff0b00f1dffbff5f00f1dffbffef01f1dffb8fff09f1dffb3ffb3ff1dffb3ff2dff1dffb3f70fff8dffb3f00fdffdffb3f00f4ffdffb3f00a0ffdffb3f0010fedffb3f0000f6df", + "Ó": "0d120e0012000000d1ef0200000000fb3f0000000020eb040000000000000000000010d7ef6c000000e3ffffff1c0000fecf87fdbf0080ff0a00d0ff04d0ff020050ff0af0ff000010ff0df2df000000ff0ef2df000000ff0ef0ff000020ff0dd0ff020060ff0a80ff0a00d0ff0510fecf77fdcf0000e3ffffff1c000010d7ef6c0000", + "Ú": "0c120d0112000040ff0b000000e1cf00000000c61d0000000000000000fd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000ff0ffa6f0040ff0df4ff69e8ff0780ffffffaf0000b4febe0500", + "Ü": "0c120d011200640050040010ff06f52f0000ec03e21d00000000000000fd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000ff0ffa6f0040ff0df4ff69e8ff0780ffffffaf0000b4febe0500", + "á": "0b0f0b000f000070ff09000000f3af00000000d80b000000000000000000b4fe8d010070ffffff0d00f0ef23f96f00000000f39f0000c6feffaf0090ffbefbaf00f2cf00f3af00f48f00f3af00f3df43fdaf00c0ffffffbf0000e8cfe3ef00", + "é": "0b0f0b000f000080ff08000000f49f00000000d80a00000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "í": "060f05010f20ff1dd0ef01b42e00000000fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00", + "ñ": "0a0f0b010f10a904c602b0ffdfff01e00ce65e000000000000ff5bfc9e00ffffffff08ffaf75ff0eff0e00fc1fff0d00fa2fff0d00fa2fff0d00fa2fff0d00fa2fff0d00fa2fff0d00fa2fff0d00fa2f", + "ó": "0b0f0b000f000030ff0c000000e1df01000000c51d00000000000000000081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", + "ú": "0a0f0b010f0000f3cf000010fe0d000050dc01000000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f", + "ü": "0a0f0b010f3006005500f17f40ff03c04e20de010000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f", + "¿": "0a0f0a000b0000fc06000040ff0c000000ec060000000000000000ff07000030ff050000d1ff010000fc8f000090ff0a0000f1df000000f48f005225f49f00f86ff1ff66ff2f80ffffff0900c6ff6c00" +} diff --git a/core/translations/fonts/font_roboto_bold_20_fr.json b/core/translations/fonts/font_roboto_bold_20_fr.json new file mode 100644 index 000000000..5b19734b3 --- /dev/null +++ b/core/translations/fonts/font_roboto_bold_20_fr.json @@ -0,0 +1,34 @@ +{ + "À": "0e120d00120060ff080000000000f83f000000000090df000000000000000000000000d0ff0400000000f3ff0a00000000f9ff1f00000000fefe6f00000050fff6cf000000b0ffa1ff020000f1cf50ff080000f76f00ff0e0000fd1f00fa4f0030ffffffffbf0090ffffffffff01f0ff6666b6ff07f5bf000040ff0dfc5f000000fe3f", + "Â": "0e120d00120000a0ef0400000010fcfc6f00000080bd40be0200000000000000000000d0ff0400000000f3ff0a00000000f9ff1f00000000fefe6f00000050fff6cf000000b0ffa1ff020000f1cf50ff080000f76f00ff0e0000fd1f00fa4f0030ffffffffbf0090ffffffffff01f0ff6666b6ff07f5bf000040ff0dfc5f000000fe3f", + "Æ": "130e13000e00000090ffffffffaf00000000f2ffffffffaf00000000faffdf55553500000030fffadf000000000000c0fff2df000000000000f59fe0ef000000000000fd1fd0ffffff0d000060ff07c0ffffff0d0000e0ffffffff5555040000f8ffffffff0100000010ff6e66c6ff0100000090ff0700a0ff46444401f2ff010090ffffffff03fb8f000090ffffffff03", + "Ç": "0d130d000e0020d8ff6c000000f4ffffff0c0010ffbf87fdaf0090ff0800e0ff01e0ff010090ff05f0df0000000000f2df0000000000f2df0000000000f1df0000000000e0ff000080ff0590ff0700e0ff0220ffaf77fdbf0000f5ffffff1c000020e9ff7c0000000060df010000000050fe0d0000000000f41f0000000030fd0d0000000040ae020000", + "È": "0a120b011210fd1e000000e2af00000030ff04000000000000fbffffffcffbffffffcffb8f666646fb3f000000fb3f000000fb3f000000fbffffff0dfbffffff0dfb7f444403fb3f000000fb3f000000fb7f555545fbffffffcffbffffffcf", + "É": "0a120b0112000090ff060000f67f000000d909000000000000fbffffffcffbffffffcffb8f666646fb3f000000fb3f000000fb3f000000fbffffff0dfbffffff0dfb7f444403fb3f000000fb3f000000fb7f555545fbffffffcffbffffffcf", + "Ê": "0a120b01120040ff090000f7cfcf0130eb04db070000000000fbffffffcffbffffffcffb8f666646fb3f000000fb3f000000fb3f000000fbffffff0dfbffffff0dfb7f444403fb3f000000fb3f000000fb7f555545fbffffffcffbffffffcf", + "Ë": "0a120b0112004600610270ff01fb0d30ce00f7090000000000fbffffffcffbffffffcffb8f666646fb3f000000fb3f000000fb3f000000fbffffff0dfbffffff0dfb7f444403fb3f000000fb3f000000fb7f555545fbffffffcffbffffffcf", + "Î": "081207001200f85f00b0dffe08c61ce24c0000000000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f00", + "Ï": "081207001261023006fb0cf08ff708b05f0000000000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f0000f86f00", + "Ô": "0d120e0012000080ff0500000000fbed8f00000060cc21ce0400000000000000000010d7ef6c000000e3ffffff1c0000fecf87fdbf0080ff0a00d0ff04d0ff020050ff0af0ff000010ff0df2df000000ff0ef2df000000ff0ef0ff000020ff0dd0ff020060ff0a80ff0a00d0ff0510fecf77fdcf0000e3ffffff1c000010d7ef6c0000", + "Ù": "0c120d011200f95f00000000b0ef0100000000fc0a0000000000000000fd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000ff0ffa6f0040ff0df4ff69e8ff0780ffffffaf0000b4febe0500", + "Û": "0c120d01120010fc2d000000e3cfef040000e908e71a00000000000000fd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000ff0ffa6f0040ff0df4ff69e8ff0780ffffffaf0000b4febe0500", + "Ü": "0c120d011200640050040010ff06f52f0000ec03e21d00000000000000fd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000ff0ffa6f0040ff0df4ff69e8ff0780ffffffaf0000b4febe0500", + "Ÿ": "0d120c00120060041026000000f71fb0df000000e30c709f000000000000000000fb7f0000f2ff01f3ef0000f98f00a0ff0610ff1f0020ff0d80ff080000fa5fe0ef000000f2cff77f00000090ffff0e00000010ffff0600000000f8df0000000000f5af0000000000f5af0000000000f5af0000000000f5af0000000000f5af000000", + "Œ": "130e13000e0020d8ffffffffffff0400f5ffffffffffffff0430ff9f55f8df66666601a0ff0500f3bf00000000e0ef0000f3bf00000000f0cf0000f3bf00000000f1cf0000f3ffffff5f00f1cf0000f3ffffff5f00f0cf0000f3df44441400e0ef0000f3bf00000000a0ff0500f3bf0000000020ff9f45f7df5555550100f5ffffffffffffff050020d9ffffffffffff05", + "à": "0b0f0b000f00fb2f00000000d0cf0000000010fe07000000000000000000b4fe8d010070ffffff0d00f0ef23f96f00000000f39f0000c6feffaf0090ffbefbaf00f2cf00f3af00f48f00f3af00f3df43fdaf00c0ffffffbf0000e8cfe3ef00", + "â": "0b0f0b000f0020fd1b000000f5cfdf020010ea06d9090000000000000000b4fe8d010070ffffff0d00f0ef23f96f00000000f39f0000c6feffaf0090ffbefbaf00f2cf00f3af00f48f00f3af00f3df43fdaf00c0ffffffbf0000e8cfe3ef00", + "æ": "110c11000c00000000000000000000a4feae62fdcf050070ffffffffffff6f00e0ff47f9ff5ce6ff00001100f0ff0170ff0400c6feffffffffff05b0ffdffdffeeeeee05f3df01e0ff00000000f58f00e0ff05001000f3df22f9ff7f64ac00c0fffffffcffffef0000d8ef3b50fcdf2900", + "ç": "0a100a000b0091fe9e0120feffff1eb0ff59fa9ff1cf00e0dff48f001022f57f000000f48f000000f1cf00b0bdb0ff59f99f20feffff1e0091fe9e010000fb09000000f99f00000090df000000f69f000000e80800", + "è": "0b0f0b000f00fc2f00000000d1bf0000000020fe0600000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "é": "0b0f0b000f000080ff08000000f49f00000000d80a00000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "ê": "0b0f0b000f0030fe0b000000f5cfdf020020eb05da08000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "ë": "0b0f0b000f00450060030050ff03f90f0020de01f50b000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "î": "080f06000f00fa4e00c1cfff06d80be42b0000000000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f00", + "ï": "080f06000f62014005fe0af26ffa06d03e0000000000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f0000fb2f00", + "ô": "0b0f0b000f0010fb2e000000d2cfff050000d909e61b000000000000000081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", + "ù": "0a0f0b010f90ff05000000fa1e000000b0af00000000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f", + "û": "0a0f0b010f00c1df020030fefc4f00909d60ae010000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f", + "ü": "0a0f0b010f3006005500f17f40ff03c04e20de010000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f", + "ÿ": "0b130a000f00360062010080ff00fc0b0050bf00f80700000000000000fc3f00f2df00f78f00f77f00f1cf00fc2f00c0ff11ff0c0060ff56ff070010ffabff020000fbefcf000000f6ff6f000000f1ff1f000000b0ff0b00000050ff0600000090ff01000040f7bf000000d0ff2f000000b0cf04000000", + "œ": "120d12000c0000000000000000000070fdbe04d6ff4b0000fcffffcfffffff0580ff5cf7ffcf65ff0ee0ff0170ff1f00f83ff1bf0020ffffffff4ff2af0010ffefeeee4ef1bf0020ff0f000000e0ff0070ff6f00000080ff5cf7ffff47a60700fcffffcfffffff0e0080fdbf04c5ff9d02000000000000000000" +} diff --git a/core/translations/fonts/font_roboto_regular_20_cs.json b/core/translations/fonts/font_roboto_regular_20_cs.json new file mode 100644 index 000000000..ccda1d8ce --- /dev/null +++ b/core/translations/fonts/font_roboto_regular_20_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "0d120d0012000000d03f0000000000fa0500000000207d000000000000000000000000708f0000000000d0ef0000000000f4fd0500000000faf20b00000010bfa01f000000605f407f000000d00f00de000000f30a00f9040000f90400f30a0000ffffffff1f0050cf8888b86f00c02f000020cf00f20c000000fb03f806000000f509", + "Č": "0c120d011200e208f5040000308f7f00000000f50900000000000000000070fdcf060020fd9ceabf00c06f0000fb06f50a0000f20dfa040000a00cfc0100000000fd0000000000fd0000000000fc0200000000fa040000900bf50b0000f10dd05f0000fa0620fe8ceaaf000081fdcf0600", + "Ď": "0b120d011200db109e000000d0cb0b00000020de010000000000000000f5ffef5b0000f58ca8fe1b00f5080080bf00f5080000fa04f5080000f30af5080000f00df5080000e00ef5080000e00ef5080000f00df5080000f30af5080000fa04f5080080bf00f58ca8fe1b00f5ffef5b0000", + "É": "0a120b0112000070af000000f30c000000d801000000000000f5ffffff9ff58c888858f508000000f508000000f508000000f508000000f5ffffff0bf58c888805f508000000f508000000f508000000f508000000f58c888858f5ffffffbf", + "Ě": "0a120b011200ea01bd0000c0bc0d000010ed01000000000000f5ffffff9ff58c888858f508000000f508000000f508000000f508000000f5ffffff0bf58c888805f508000000f508000000f508000000f508000000f58c888858f5ffffffbf", + "Í": "051205011200fc05807f00c10900000000f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00", + "Ň": "0c120e011200901ed00c000000cbda01000000d02e0000000000000000f50d0000409ff58f0000409ff5ff0300409ff5fc0d00409ff5988f00409ff518fe03409ff508f40d409ff508a08f409ff50810fe429ff50800f44c9ff50800a0cf9ff5080010fe9ff5080000f49ff5080000a09f", + "Ó": "0c120e0112000000f90800000050af00000000a00b00000000000000000070fdce050010fdadeaaf00b07f0000fa08f40c0000e00ff9040000805ffb020000507ffd000000409ffd000000409ffb010000507ff9040000805ff40b0000e00fb07f0000fa0810fdadeabf000070fdce0600", + "Ř": "0b120c011200db109e000000d0cb0b00000020de010000000000000000f5ffffbe0300f58c98fb6f00f5080030ff00f5080000fb04f5080000f904f5080000fd02f50800b2af00f5ffffff0a00f58c88df0000f50800f90600f50800f11e00f50800709f00f5080000fd02f5080000f50b", + "Š": "0c120c001200901ed00b000000cbda01000000d12e00000000000000000070fdcf070000fc9dd9df01809f0000f809b02f0000f00fa06f0000400530ff2900000000d3ff8d02000000a4fe9f0000000040fd0950030000f10ff10d0000d01fb07f0000f30e10fd9db9ff040070fcdf2900", + "Ť": "0c120c001200b00de10a000000bdcc00000000e11d0000000000000000f8ffffffff7f8488f88f88480000f00e00000000f00e00000000f00e00000000f00e00000000f00e00000000f00e00000000f00e00000000f00e00000000f00e00000000f00e00000000f00e00000000f00e0000", + "Ú": "0b120d0112000010fe03000000b04f00000000d3060000000000000000fa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30af9040000f40af7060000f608f22e0010fe0270ff9afa7f0000b4febe0300", + "Ů": "0b130d01130000eb0b00000070097800000070098800000000eb1b0000000000000000fa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30af9040000f40af7060000f608f22e0010fe0270ff9afa7f0000b4febe0300", + "Ý": "0c120c0012000000f70a00000030cf00000000801c0000000000000000f9080000908ff11f0000f11e709f0000f90600fd0220df0000f50aa04f0000c02ff30c000030bffb03000000faaf00000000f21f00000000f00e00000000f00e00000000f00e00000000f00e00000000f00e0000", + "Ž": "0c120c001200a01dd10b000000bccb00000000e11e0000000000000000f0ffffffff0e80888888fc0b00000010fe02000000b06f00000000f70a00000020ef01000000d04f00000000f90800000040df00000000e12f00000000fa0700000060bf00000000f1af88888818f2ffffffff3f", + "á": "09100b01100000c05f000000f8070000109c00000000000000000000000020e9df0800f29fb7bf00e80300f903000000f60620d9ffff06f38e45f806fb0200f606ee0000f606fc0320fe06f5affafe0750fc8ef40a", + "č": "0a100a001000f702db0000a09d1e000000fc0300000000000000000000000080fd9e0100fc8cfb1d708f00608fd00f0000acf00c000000f10b000000f00c000000d00f000068708f00508f00fc8bfa0d0080fd8e00", + "ď": "0d0f0d000f00000000dfc00e00000000dfe00d00000000dff20800000000dfc30100a1fe3bdf000000fd8cfbdf0000809f0060df0000d01f0000df0000f00d0000df0000f10c0000df0000f00d0000df0000d01f0000df0000708f0060df000000fd8cfbdf000000a1fe3cdd0000", + "é": "0a100b0010000010fe030000b04f000000d20600000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "ě": "0a100b001000f307f70300508f5f000000f70700000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "í": "051005011010fe02c04f00d30500000000000000f70500f70500f70500f70500f70500f70500f70500f70500f70500f70500f70500", + "ň": "09100b0110208f604f0000f4f8060000608f000000000000000000000000fa82fe4c00fadda9ff01fa0b00f707fa0300f209fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20a", + "ó": "0b100b0010000000fd04000000906f00000000c10800000000000000000000000000000070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", + "ř": "0710070010b01de10a00bccc0000e11d000000000000000000a04ffb06a0efce05a0bf0000a03f0000a02f0000a02f0000a02f0000a02f0000a02f0000a02f0000a02f0000", + "š": "0a100a001000f306f70300508f5f000000f807000000000000000000000000a2fe6c0020ff89fd09904f00d01fa03f00201440ff49000000b3ffaf01000040fa0d700500a04fe02f00a03f50ef89fb0c00b3fe7d00", + "ť": "08100700100000604f0000803f00dfc00e00dfb00500df0000feffcf0065ef460000df000000df000000df000000df000000df000000df000000de000000fb8a0000c2bf00", + "ú": "09100b01100000d13f000000fb050000206d000000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a", + "ů": "09100b011000b0be01000097800800009780080000b0be01000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a", + "ý": "0a140900100000809f000000f40b000000c9000000000000000000000000f90500d01ff30a00f20be00f00f705805f00fc0020af10af0000fd605f0000f7b50f0000f1fb0a0000b0ff04000060ef000000109f000000504f000000d00d000091fd050000f26e000000", + "ž": "0a100a001000da11bd0000c0bb0c000010ee010000000000000000000000f0ffffff0f808888fb0c000010fe020000b05f000000f70a000030ef000000d03f000000f908000040cf000000e09f777717f2ffffff4f" +} diff --git a/core/translations/fonts/font_roboto_regular_20_de.json b/core/translations/fonts/font_roboto_regular_20_de.json new file mode 100644 index 000000000..615c00c6d --- /dev/null +++ b/core/translations/fonts/font_roboto_regular_20_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0d120d00120000000000000000606f309f000000505f308f0000000000000000000000708f0000000000d0ef0000000000f4fd0500000000faf20b00000010bfa01f000000605f407f000000d00f00de000000f30a00f9040000f90400f30a0000ffffffff1f0050cf8888b86f00c02f000020cf00f20c000000fb03f806000000f509", + "Ö": "0c120e011200000000000000f10bd00e0000e10ad00d000000000000000070fdce050010fdadeaaf00b07f0000fa08f40c0000e00ff9040000805ffb020000507ffd000000409ffd000000409ffb010000507ff9040000805ff40b0000e00fb07f0000fa0810fdadeabf000070fdce0600", + "Ü": "0b120d011200000000000000f705f4080000f604f30800000000000000fa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30af9040000f40af7060000f608f22e0010fe0270ff9afa7f0000b4febe0300", + "ß": "0b0f0c010f10eacf050000d0afd85f0000f50910bf0000f80400de0000fa0220af0000fa02b02f0000fa02f10b0000fa02f10c0000fa02a09f0000fa0200fb0b00fa0200909f00fa020000fd00fa020000ee00fa629dd88f00fa42ecdf0700", + "ä": "09100b01100000000000407f20af00407f10ae000000000000000000000020e9df0800f29fb7bf00e80300f903000000f60620d9ffff06f38e45f806fb0200f606ee0000f606fc0320fe06f5affafe0750fc8ef40a", + "ö": "0b100b001000000000000000f506f2090000f506e209000000000000000000000000000070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", + "ü": "09100b01100000000000605f308f00605f308f0000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a" +} diff --git a/core/translations/fonts/font_roboto_regular_20_es.json b/core/translations/fonts/font_roboto_regular_20_es.json new file mode 100644 index 000000000..96d3abe94 --- /dev/null +++ b/core/translations/fonts/font_roboto_regular_20_es.json @@ -0,0 +1,17 @@ +{ + "Á": "0d120d0012000000d03f0000000000fa0500000000207d000000000000000000000000708f0000000000d0ef0000000000f4fd0500000000faf20b00000010bfa01f000000605f407f000000d00f00de000000f30a00f9040000f90400f30a0000ffffffff1f0050cf8888b86f00c02f000020cf00f20c000000fb03f806000000f509", + "É": "0a120b0112000070af000000f30c000000d801000000000000f5ffffff9ff58c888858f508000000f508000000f508000000f508000000f5ffffff0bf58c888805f508000000f508000000f508000000f508000000f58c888858f5ffffffbf", + "Í": "051205011200fc05807f00c10900000000f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00", + "Ñ": "0c120e011200002500350000d0ff7a5f0000e432fb0a00000000000000f50d0000409ff58f0000409ff5ff0300409ff5fc0d00409ff5988f00409ff518fe03409ff508f40d409ff508a08f409ff50810fe429ff50800f44c9ff50800a0cf9ff5080010fe9ff5080000f49ff5080000a09f", + "Ó": "0c120e0112000000f90800000050af00000000a00b00000000000000000070fdce050010fdadeaaf00b07f0000fa08f40c0000e00ff9040000805ffb020000507ffd000000409ffd000000409ffb010000507ff9040000805ff40b0000e00fb07f0000fa0810fdadeabf000070fdce0600", + "Ú": "0b120d0112000010fe03000000b04f00000000d3060000000000000000fa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30af9040000f40af7060000f608f22e0010fe0270ff9afa7f0000b4febe0300", + "Ü": "0b120d011200000000000000f705f4080000f604f30800000000000000fa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30af9040000f40af7060000f608f22e0010fe0270ff9afa7f0000b4febe0300", + "á": "09100b01100000c05f000000f8070000109c00000000000000000000000020e9df0800f29fb7bf00e80300f903000000f60620d9ffff06f38e45f806fb0200f606ee0000f606fc0320fe06f5affafe0750fc8ef40a", + "é": "0a100b0010000010fe030000b04f000000d20600000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "í": "051005011010fe02c04f00d30500000000000000f70500f70500f70500f70500f70500f70500f70500f70500f70500f70500f70500", + "ñ": "09100b0110005300710050ff7edb00b009e74e0000000000000000000000fa82fe4c00fadda9ff01fa0b00f707fa0300f209fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20a", + "ó": "0b100b0010000000fd04000000906f00000000c10800000000000000000000000000000070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", + "ú": "09100b01100000d13f000000fb050000206d000000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a", + "ü": "09100b01100000000000605f308f00605f308f0000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a", + "¿": "090f09000b00209e00000020af00000000000000000000000000108c00000040af000000b04f000000f909000060bf000000e01e000000f309000000f408009105f20d00f807a0dfb9ef0100d8ef1900" +} diff --git a/core/translations/fonts/font_roboto_regular_20_fr.json b/core/translations/fonts/font_roboto_regular_20_fr.json new file mode 100644 index 000000000..7f119eb73 --- /dev/null +++ b/core/translations/fonts/font_roboto_regular_20_fr.json @@ -0,0 +1,34 @@ +{ + "À": "0d120d00120020fe020000000000f30c0000000000504d000000000000000000000000708f0000000000d0ef0000000000f4fd0500000000faf20b00000010bfa01f000000605f407f000000d00f00de000000f30a00f9040000f90400f30a0000ffffffff1f0050cf8888b86f00c02f000020cf00f20c000000fb03f806000000f509", + "Â": "0d120d00120000709f0000000000f7f809000000208c603d0000000000000000000000708f0000000000d0ef0000000000f4fd0500000000faf20b00000010bfa01f000000605f407f000000d00f00de000000f30a00f9040000f90400f30a0000ffffffff1f0050cf8888b86f00c02f000020cf00f20c000000fb03f806000000f509", + "Æ": "140e14000e00000000d0ffffffff0c00000000f7ff7777770500000010dffc00000000000000b04ffb01000000000000f40afa01000000000000fe02fa020000000000808f00f9ffffff000000f20e00f8797777000000fc0500f8040000000060ffffffff0500000000e1bfbbbbfd0600000000f9090000f60600000030ef010000f57b777727d06f000000f4ffffff5f", + "Ç": "0c120d010e0070fdcf060020fd9ceabf00c06f0000fb06f50a0000f20dfa040000a00cfc0100000000fd0000000000fd0000000000fc0200000000fa040000900bf50b0000f10dd05f0000fa0620fe8ceaaf000081fdcf06000000f10800000000619e00000000209d00000000e41a0000", + "È": "0a120b011200f909000000b05f00000000ac00000000000000f5ffffff9ff58c888858f508000000f508000000f508000000f508000000f5ffffff0bf58c888805f508000000f508000000f508000000f508000000f58c888858f5ffffffbf", + "É": "0a120b0112000070af000000f30c000000d801000000000000f5ffffff9ff58c888858f508000000f508000000f508000000f508000000f5ffffff0bf58c888805f508000000f508000000f508000000f508000000f58c888858f5ffffffbf", + "Ê": "0a120b01120010ee020000e1bc2e0000d8019c000000000000f5ffffff9ff58c888858f508000000f508000000f508000000f508000000f5ffffff0bf58c888805f508000000f508000000f508000000f508000000f58c888858f5ffffffbf", + "Ë": "0a120b0112000000000000de00fb0100cd00ea010000000000f5ffffff9ff58c888858f508000000f508000000f508000000f508000000f5ffffff0bf58c888805f508000000f508000000f508000000f508000000f58c888858f5ffffffbf", + "Î": "071206001200f50b00509fbe00b00ad3050000000000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a00", + "Ï": "071206001200000000f408f10bf307e10b0000000000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a0000f30a00", + "Ô": "0c120e01120000f31d00000030afdd010000a00cd207000000000000000070fdce050010fdadeaaf00b07f0000fa08f40c0000e00ff9040000805ffb020000507ffd000000409ffd000000409ffb010000507ff9040000805ff40b0000e00fb07f0000fa0810fdadeabf000070fdce0600", + "Ù": "0b120d011200f21e0000000040cf0000000000d6030000000000000000fa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30af9040000f40af7060000f608f22e0010fe0270ff9afa7f0000b4febe0300", + "Û": "0b120d01120000f808000000808f9f000000d207d60300000000000000fa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30af9040000f40af7060000f608f22e0010fe0270ff9afa7f0000b4febe0300", + "Ü": "0b120d011200000000000000f705f4080000f604f30800000000000000fa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30af9040000f40af7060000f608f22e0010fe0270ff9afa7f0000b4febe0300", + "Ÿ": "0c120c001200000000000000e00db01e0000d00cb01e00000000000000f9080000908ff11f0000f11e709f0000f90600fd0220df0000f50aa04f0000c02ff30c000030bffb03000000faaf00000000f21f00000000f00e00000000f00e00000000f00e00000000f00e00000000f00e0000", + "Œ": "110e13010e00a3feffffffffff0760ef79c8bf88888804f21d00707f00000000f90400707f00000000fd0000707f00000000df0000707f00000000df000070ffffff9f00df000070bf88885800df0000707f00000000fd0000707f00000000f90400707f00000000f21d00707f0000000060ef79c8bf8888880500a3feffffffffff09", + "à": "09100b011010fd03000000f21e000000405d00000000000000000000000020e9df0800f29fb7bf00e80300f903000000f60620d9ffff06f38e45f806fb0200f606ee0000f606fc0320fe06f5affafe0750fc8ef40a", + "â": "09100b01100060bf000000f6e80b00109c404d000000000000000000000020e9df0800f29fb7bf00e80300f903000000f60620d9ffff06f38e45f806fb0200f606ee0000f606fc0320fe06f5affafe0750fc8ef40a", + "æ": "110b11000b00b5fe6d30fbcf040080ef89fdfa8de95f00c01d00e0cf0010ee00000000b04f0000fa0200c7ffffffffffff0390df67c67f66666601f10e00b04f00000000f30a00b08f00000000f10c00e3ff02003100b0cfa8fff79fa8df0000e9df2930ebef2900", + "ç": "0a0f0a000b0080fd9e0100fc8cfb1d708f00608fd00f0000acf00c000000f10b000000f00c000000d00f000068708f00508f00fc8bfa0d0080fd8e000000e803000000932f000000602f000000db0600", + "è": "0a100b001000f21e00000040cf00000000d60300000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "é": "0a100b0010000010fe030000b04f000000d20600000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "ê": "0a100b00100000f8080000808f9f0000d207d603000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "ë": "0a100b0010000000000000f705f40800f604f308000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "î": "071006001000f90800908f8f00d306d702000000000000000000f7050000f7050000f7050000f7050000f7050000f7050000f7050000f7050000f7050000f7050000f70500", + "ï": "071006001000000000f704f407f704f407000000000000000000f7050000f7050000f7050000f7050000f7050000f7050000f7050000f7050000f7050000f7050000f70500", + "ô": "0b100b00100000f70a000000708faf000000c108d504000000000000000000000000000070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", + "ù": "09100b011020ee01000000f40c000000603d000000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a", + "û": "09100b011000809f000000f8f80900207c603d0000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a", + "ü": "09100b01100000000000605f308f00605f308f0000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a", + "ÿ": "0a14090010000000000010ce00ec0010be00ec0000000000000000000000f90500d01ff30a00f20be00f00f705805f00fc0020af10af0000fd605f0000f7b50f0000f1fb0a0000b0ff04000060ef000000109f000000504f000000d00d000091fd050000f26e000000", + "œ": "120b12000b0070fd9e0191fe7d0000fb8cfa3efd8afc0960af0040ff4f00b02fc01f0000fc0b00506ff00d0000f8ffffff7ff00c0000f77c777737f00d0000f80a000000c01f0000fc0e000000609f0040ff7f00000400fb7cf93efe7ae90f0070fdae0191feae03" +} diff --git a/core/translations/fonts/font_robotomono_medium_20_cs.json b/core/translations/fonts/font_robotomono_medium_20_cs.json new file mode 100644 index 000000000..4acb166b9 --- /dev/null +++ b/core/translations/fonts/font_robotomono_medium_20_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "0c120c0012000000712700000000fa0a00000050af00000000501700000000f16f00000000f6cf00000000fcff01000010fffc06000060bff70b0000b07ff20f0000f12fd05f0000f60d90af0000fb4b84ff0010ffffffff0460ffbbbbfe0ab0af0000f60ef06f0000f24ff51f0000d09f", + "Č": "0c130c001200707d509d000000f9fb0b000000709d000000006246000000b1ffff3e0000fc9fd8ff0260ff0200fd0ac09f0000f60ef06f00004104f14f00000000f14f00000000f14f00000000f14f00000000f06f00006206b0af0000f70e40ff0420fe0800facffcdf010080ffff1a00000020020000", + "Ď": "0b120c0112905d707d000000fbfb09000000907d000000323302000000faffff2a0000fabefcff0400fa0b10fb2f00fa0b00e09f00fa0b0080ef00fa0b0050ff00fa0b0040ff01fa0b0040ff01fa0b0050ff00fa0b0090df00fa0b00f18f00fa0b30fd0e00faefffef0200faffdf170000", + "É": "0a120c011200001077020000a0af000000f50a003133763323f6ffffffcff6bfbbbb8bf60f000000f60f000000f60f000000f64f444403f6ffffff0df6afaaaa08f60f000000f60f000000f60f000000f60f000000f6ffffffbff6ffffffcf", + "Ě": "0a120c011210cb02ca0400d2ce6f000010cb04003133333323f6ffffffcff6bfbbbb8bf60f000000f60f000000f60f000000f64f444403f6ffffff0df6afaaaa08f60f000000f60f000000f60f000000f60f000000f6ffffffbff6ffffffcf", + "Í": "0a120c011200004067000000f24f000000fc04003043573303f3ffffff3fb2cbffbc2b0030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff0200f2ffffff2ff3ffffff3f", + "Ň": "0a120c011230ac20cc0100f5ec3e000040cc02003202002023fb0f00b0affb7f00b0affbef00b0affbff06b0affbfd0db0affbba5fc0affb4adfc0affb0afcc4affb0af5ccaffb0ad0efaffb0a60ffaffb0a00feaffb0a00f6affb0a00e0af", + "Ó": "0c140c0013000000712700000000fc09000000709f000000003003000000006326000000b1ffff1b0000fcaffacf0060ff0230ff05c09f0000fa0bf05f0000f60ff14f0000f41ff14f0000f41ff14f0000f41ff14f0000f40ff06f0000f70fb0bf0000fb0a40ff0560ff0400fadffd9f000080ffef0700000020020000", + "Ř": "0b120c011230ac20cc010000f5ec3e00000040cc020000313333000000f8ffffcf0300f8bfbbff3f00f80d00d1cf00f80d0060ff00f80d0050ff00f80d00b0cf00f87e77fc4f00f8ffffdf0400f87ed7bf0000f80d40ff0300f80d00fc0b00f80d00f44f00f80d00c0cf00f80d0040ff04", + "Š": "0c140c001300b13c905d000020fdfc06000000b15d000000000000000000005246000000c2ffff6e0000fe9ec8ff0660ff0200fa0e90cf0000e32e60ff0300000000fe9f03000000c2ffef07000000a4ffdf0100000060ff0b40140000f51fe08f0000f23f90ff0300f90f10fddfebff070080feff5d00000020120000", + "Ť": "0c120c001200c21bb13c000030eefd04000000c23c0000313333333313f8ffffffff8fb6bbfccfbb6b0000f22f00000000f22f00000000f22f00000000f22f00000000f22f00000000f22f00000000f22f00000000f22f00000000f22f00000000f22f00000000f22f00000000f22f0000", + "Ú": "0a130c01120000007703000090bf000000f40b003202322023fb090090bffb090090bffb090090bffb0a0090bffb0a0090bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bff90c00d09ff45f00f54fb0ffdcff0b00f9ff8f000000220000", + "Ů": "0a150c011400003200000060be0c0000c0043d0000907b1e0000007602003202002023fb090090bffb090090bffb090090bffb0a0090bffb0a0090bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bff90c00d09ff45f00f54fb0ffdcff0b00f9ff8f000000220000", + "Ý": "0c120c0012000000721700000000fc08000000708f0000310330033023f35f0000f44fb0cf0000fb0c30ff0320ff0400fc0a90cf0000f42ff15f0000c08ff70d000040fffe05000000fcdf00000000f56f00000000f22f00000000f22f00000000f22f00000000f22f00000000f22f0000", + "Ž": "0b120c001200b03c905d000010fdfc07000000b15d0000303333333302f0ffffffff0bb0bbbbcbff0900000090ef01000000f35f00000000fd0a00000080ef01000000f35f00000000fc0b00000070ff01000000f26f00000000fc0c00000060ff02000000f0ffffffff0ef0ffffffff0f", + "á": "0a100c010f00002077010000d07f000000f9070000002300000094bb280090ffffff05f46f21fb0f730600f23f004076f74f70ffffff4ff56f01f14ffa0a00f14ffa0c00f84ff4dfebff5f60feefe58f0020020000", + "č": "0a100c010f10cb02da0400d2cf6f000010cb040000000000000081bb390030ffffff06e1cf23f92ff70f00d07ffa0a002013fb09000000fb09000000f80d005048f35f00e25f90ffbcff0c00f7ff9f000000220000", + "ď": "0e110c00100000000000003300000070ef00ff00000070ef00ff00000070ef20cf00000070ef706f0081bb75ef900c10feffefef0000b0ff25f6ef0000f16f0080ef0000f41f0070ef0000f50f0070ef0000f50f0070ef0000f23f0070ef0000d0bf00c1ef000050ffcefeef000000f6ff7cef000000002200000000", + "é": "0a100c010f00002077010000d07f000000f9070000002300000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "ě": "0a100c010f30bc11cb0200f4ed3e000030cc020000000000000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "í": "0a0f0c010f0000007505000050ef020000e12e0000003101009099990500f0ffff0a006066fd0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a00f0ffffffcff0ffffffdf", + "ň": "0a0f0c010f30bc11cc0200f4ed3e000030cc020000000000009405b78b00f7ccffff0cf7bf33f85ff70e00d09ff70d00b0aff70d00b0aff70d00b0aff70d00b0aff70d00b0aff70d00b0aff70d00b0af", + "ó": "0a100c010f00002077010000c08f000000f7080000003300000082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", + "ř": "090f0c020fd608c40a0080bfcf010000d60a00000000000000901981bb06f07ffeff09f0ffafa905f0df010000f05f000000f05f000000f05f000000f05f000000f05f000000f05f000000f05f000000", + "š": "0a100c010f30bc11cc0200f4ed3e000030cc020000000000000082bb4a0060ffffff0bf18f01f56ff31f007059e0cf26000030fdffaf020030c8ff3f520300d1aff71e00b0afd1ef99fc3f10faffcf040000220100", + "ť": "0b130c011200000000310100000000f70900000000f70800000000f80600200200ed0100f50f106d0000f50f00000098fb9f990800feffffff0f0032f73f33020000f50f00000000f50f00000000f50f00000000f50f00000000f50f00000000f35f00000000e0ffcc3e000020fdff4e00000020130000", + "ú": "0a100c010f00002077010000c08f000000f7080000003300009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000", + "ů": "0a110c011000003200000080cd0a0000f0010f0000b0890d0000007701009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000", + "ý": "0c140c000f000000703700000000f90b00000040bf0000000020030000922900008059e09f0000f43f80ff0000fa0c10ff0610ff0500f90c70ef0000f23fd07f0000b09ff41f000040fffa09000000fdff02000000f6bf00000000f04f00000000f60d00000010fe06000010ebdf00000040ff2c000000003300000000", + "ž": "0a0f0c010f00da04d70700c1bf9f000000da070000000000009499999959f8ffffff9f535555fe2f000090ff040000f66f000040ff080000f3af000010fe0c0000c0ef010000f9ffeeeecefaffffffef" +} diff --git a/core/translations/fonts/font_robotomono_medium_20_de.json b/core/translations/fonts/font_robotomono_medium_20_de.json new file mode 100644 index 000000000..0afa27dbe --- /dev/null +++ b/core/translations/fonts/font_robotomono_medium_20_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0c120c001200600430170000f41fc08f0000b109603c000000300300000000f16f00000000f6cf00000000fcff01000010fffc06000060bff70b0000b07ff20f0000f12fd05f0000f60d90af0000fb4b84ff0010ffffffff0460ffbbbbfe0ab0af0000f60ef06f0000f24ff51f0000d09f", + "Ö": "0c140c001300700430070000f60fe07f0000b108702c0000000000000000006326000000b1ffff1b0000fcaffacf0060ff0230ff05c09f0000fa0bf05f0000f60ff14f0000f41ff14f0000f41ff14f0000f41ff14f0000f40ff06f0000f70fb0bf0000fb0a40ff0560ff0400fadffd9f000080ffef0700000020020000", + "Ü": "0a130c0112005600720130ff02fb0900aa00c5043202002023fb090090bffb090090bffb090090bffb0a0090bffb0a0090bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bff90c00d09ff45f00f54fb0ffdcff0b00f9ff8f000000220000", + "ß": "0b110c011000002300000000f9ff5e000090ffedff0200f18f10ff0800f50f00fd0900f60f00ff0500f60f70df0000f60fd07f0000f60fd09f0000f60f70ff0500f60f00fb4f00f60f00b0ef00f60f0030ff02f60f0140ff02f60fcffbcf00f62ffeff2c00000010130000", + "ä": "0a100c010f103700640080df00ff04306b00b90100000000000094bb280090ffffff05f46f21fb0f730600f23f004076f74f70ffffff4ff56f01f14ffa0a00f14ffa0c00f84ff4dfebff5f60feefe58f0020020000", + "ö": "0a100c010f003700730060ff00ff06207b00b80200000000000082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", + "ü": "0a100c010f003700730060ff00ff06207b00b80200000000009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000" +} diff --git a/core/translations/fonts/font_robotomono_medium_20_es.json b/core/translations/fonts/font_robotomono_medium_20_es.json new file mode 100644 index 000000000..127d39384 --- /dev/null +++ b/core/translations/fonts/font_robotomono_medium_20_es.json @@ -0,0 +1,17 @@ +{ + "Á": "0c120c0012000000712700000000fa0a00000050af00000000501700000000f16f00000000f6cf00000000fcff01000010fffc06000060bff70b0000b07ff20f0000f12fd05f0000f60d90af0000fb4b84ff0010ffffffff0460ffbbbbfe0ab0af0000f60ef06f0000f24ff51f0000d09f", + "É": "0a120c011200001077020000a0af000000f50a003133763323f6ffffffcff6bfbbbb8bf60f000000f60f000000f60f000000f64f444403f6ffffff0df6afaaaa08f60f000000f60f000000f60f000000f60f000000f6ffffffbff6ffffffcf", + "Í": "0a120c011200004067000000f24f000000fc04003043573303f3ffffff3fb2cbffbc2b0030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff0200f2ffffff2ff3ffffff3f", + "Ñ": "0a120c011200d829d10350dfffff0140087139003202002023fb0f00b0affb7f00b0affbef00b0affbff06b0affbfd0db0affbba5fc0affb4adfc0affb0afcc4affb0af5ccaffb0ad0efaffb0a60ffaffb0a00feaffb0a00f6affb0a00e0af", + "Ó": "0c140c0013000000712700000000fc09000000709f000000003003000000006326000000b1ffff1b0000fcaffacf0060ff0230ff05c09f0000fa0bf05f0000f60ff14f0000f41ff14f0000f41ff14f0000f41ff14f0000f40ff06f0000f70fb0bf0000fb0a40ff0560ff0400fadffd9f000080ffef0700000020020000", + "Ú": "0a130c01120000007703000090bf000000f40b003202322023fb090090bffb090090bffb090090bffb0a0090bffb0a0090bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bff90c00d09ff45f00f54fb0ffdcff0b00f9ff8f000000220000", + "Ü": "0a130c0112005600720130ff02fb0900aa00c5043202002023fb090090bffb090090bffb090090bffb0a0090bffb0a0090bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bff90c00d09ff45f00f54fb0ffdcff0b00f9ff8f000000220000", + "á": "0a100c010f00002077010000d07f000000f9070000002300000094bb280090ffffff05f46f21fb0f730600f23f004076f74f70ffffff4ff56f01f14ffa0a00f14ffa0c00f84ff4dfebff5f60feefe58f0020020000", + "é": "0a100c010f00002077010000d07f000000f9070000002300000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "í": "0a0f0c010f0000007505000050ef020000e12e0000003101009099990500f0ffff0a006066fd0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a00f0ffffffcff0ffffffdf", + "ñ": "0a0f0c010f00d729d10450dfffff01400871390000000000009405b78b00f7ccffff0cf7bf33f85ff70e00d09ff70d00b0aff70d00b0aff70d00b0aff70d00b0aff70d00b0aff70d00b0aff70d00b0af", + "ó": "0a100c010f00002077010000c08f000000f7080000003300000082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", + "ú": "0a100c010f00002077010000c08f000000f7080000003300009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000", + "ü": "0a100c010f003700730060ff00ff06207b00b80200000000009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000", + "¿": "0a0f0c010b00009402000000fd09000000b60300000000000000006402000000fc06000040ff040000f49f000020ff0a0000a0df000000f06f000000f05f00d05ec0df23f92f40ffffff080092dc4a00" +} diff --git a/core/translations/fonts/font_robotomono_medium_20_fr.json b/core/translations/fonts/font_robotomono_medium_20_fr.json new file mode 100644 index 000000000..e26f2d40c --- /dev/null +++ b/core/translations/fonts/font_robotomono_medium_20_fr.json @@ -0,0 +1,34 @@ +{ + "À": "0c120c00120060370000000050ef0100000000f60a00000000601700000000f16f00000000f6cf00000000fcff01000010fffc06000060bff70b0000b07ff20f0000f12fd05f0000f60d90af0000fb4b84ff0010ffffffff0460ffbbbbfe0ab0af0000f60ef06f0000f24ff51f0000d09f", + "Â": "0c120c00120000b14c00000020edfc050000b02c904c000000300300000000f16f00000000f6cf00000000fcff01000010fffc06000060bff70b0000b07ff20f0000f12fd05f0000f60d90af0000fb4b84ff0010ffffffff0460ffbbbbfe0ab0af0000f60ef06f0000f24ff51f0000d09f", + "Æ": "0c0f0c000f0000203333130000d0ffff5f0000f3ffbd3b0000f8ff09000000fefc09000040cffa090000907ffa4b0400e02ffaff0f00f40dfa9d0900fa6bfc090000ffffff090050efaafe0900b09f00fa0900f14f00faef8ef60f00faff9f", + "Ç": "0c140c000f00006246000000b1ffff3e0000fc9fd8ff0260ff0200fd0ac09f0000f60ef06f00004104f14f00000000f14f00000000f14f00000000f14f00000000f06f00006206b0af0000f70e40ff0420fe0800facffcdf010080ffff1a000000e04f0000000060fe0200000000fc03000000f0bf0000000050030000", + "È": "0a120c0112007604000000f51f00000060bf00003133763323f6ffffffcff6bfbbbb8bf60f000000f60f000000f60f000000f64f444403f6ffffff0df6afaaaa08f60f000000f60f000000f60f000000f60f000000f6ffffffbff6ffffffcf", + "É": "0a120c011200001077020000a0af000000f50a003133763323f6ffffffcff6bfbbbb8bf60f000000f60f000000f60f000000f64f444403f6ffffff0df6afaaaa08f60f000000f60f000000f60f000000f60f000000f6ffffffbff6ffffffcf", + "Ê": "0a120c01120010cb040000d2ce5f0000cb02c9043133333323f6ffffffcff6bfbbbb8bf60f000000f60f000000f60f000000f64f444403f6ffffff0df6afaaaa08f60f000000f60f000000f60f000000f60f000000f6ffffffbff6ffffffcf", + "Ë": "0a120c0112005600720140ff01fc08109b00c6033133333323f6ffffffcff6bfbbbb8bf60f000000f60f000000f60f000000f64f444403f6ffffff0df6afaaaa08f60f000000f60f000000f60f000000f60f000000f6ffffffbff6ffffffcf", + "Î": "0a120c01120050ad000000f7fb1c00508d30bc003033333303f3ffffff3fb2cbffbc2b0030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff0200f2ffffff2ff3ffffff3f", + "Ï": "0a120c01122017005600b0af40ff01504c10ab003033333303f3ffffff3fb2cbffbc2b0030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff0200f2ffffff2ff3ffffff3f", + "Ô": "0c140c00130000b13c00000020eefc040000c11ba03c0000000000000000006326000000b1ffff1b0000fcaffacf0060ff0230ff05c09f0000fa0bf05f0000f60ff14f0000f41ff14f0000f41ff14f0000f41ff14f0000f40ff06f0000f70fb0bf0000fb0a40ff0560ff0400fadffd9f000080ffef0700000020020000", + "Ù": "0a130c0112007604000000f42f00000050cf00003202322023fb090090bffb090090bffb090090bffb0a0090bffb0a0090bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bff90c00d09ff45f00f54fb0ffdcff0b00f9ff8f000000220000", + "Û": "0a130c01120010ca040000d1bf6f0000cb03d9043202002023fb090090bffb090090bffb090090bffb0a0090bffb0a0090bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bff90c00d09ff45f00f54fb0ffdcff0b00f9ff8f000000220000", + "Ü": "0a130c0112005600720130ff02fb0900aa00c5043202002023fb090090bffb090090bffb090090bffb0a0090bffb0a0090bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bff90c00d09ff45f00f54fb0ffdcff0b00f9ff8f000000220000", + "Ÿ": "0c120c001200700430070000f60fe06f0000b208802b00310300003023f35f0000f44fb0cf0000fb0c30ff0320ff0400fc0a90cf0000f42ff15f0000c08ff70d000040fffe05000000fcdf00000000f56f00000000f22f00000000f22f00000000f22f00000000f22f00000000f22f0000", + "Œ": "0c100c000f00306635331300fbffffff8f80ef87ffaa5af03f30ef0000f30e30ef0000f40d30ef0000f40d30ff4404f40d30ffff0ff40d30ff8808f40d30ef0000f40d30ef0000f20f30ef0000e05f30ef000060ffccffff9f00f7ffffffaf000022010000", + "à": "0a100c010f107702000000f90c000000907f000000003300000094bb280090ffffff05f46f21fb0f730600f23f004076f74f70ffffff4ff56f01f14ffa0a00f14ffa0c00f84ff4dfebff5f60feefe58f0020020000", + "â": "0a100c010f0030bc020000f4ed3e0020ac10cb0100000000000094bb280090ffffff05f46f21fb0f730600f23f004076f74f70ffffff4ff56f01f14ffa0a00f14ffa0c00f84ff4dfebff5f60feefe58f0020020000", + "æ": "0c0c0c000b00b86ba29c01c0ffffffff0ef44ff68fd26f5104f11f809f0030f54fa4af50feffffffaff3bff66f6646f70ef10f0000f80df15f0001f4bffcffbc2f80ff5ef8ff3e002100102300", + "ç": "0a100c010b0081bb390030ffffff06e1cf23f92ff70f00d07ffa0a002013fb09000000fb09000000f80d005048f35f00e25f90ffbcff0c00f7ff9f000000fd05000000d63f000000a05f000000fd0c000000340000", + "è": "0a100c010f107702000000f80c000000907f000000003300000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "é": "0a100c010f00002077010000d07f000000f9070000002300000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "ê": "0a100c010f0030cc020000f4dd3e0020ac11cb0200000000000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "ë": "0a100c010f103700640080df00ff04306b00b90100000000000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "î": "0a0f0c010f0000d8080000a0bfaf0000d806d50800000000009099990500f0ffff0a006066fd0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a00f0ffffffcff0ffffffdf", + "ï": "0a0f0c010f007400700300ff06f70e00b802c20700000000009099990500f0ffff0a006066fd0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a00f0ffffffcff0ffffffdf", + "ô": "0a100c010f0020cc020000e3dd4f0010bc11ca0200000000000082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", + "ù": "0a100c010f107703000000f70d000000808f000000003300009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000", + "û": "0a100c010f0020cc020000e3dd4f0010bc11ca0200000000009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000", + "ü": "0a100c010f003700730060ff00ff06207b00b80200000000009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000", + "ÿ": "0c140c000f00600520170000f32fb0af0000a00a504c00000000000000922900008059e09f0000f43f80ff0000fa0c10ff0610ff0500f90c70ef0000f23fd07f0000b09ff41f000040fffa09000000fdff02000000f6bf00000000f04f00000000f60d00000010fe06000010ebdf00000040ff2c000000003300000000", + "œ": "0c0c0c000b00b75b919c01b0fffffeff0df34ff7cfe35ff70cf07f908ff90ae09fb59ff90ae0ffffaff90ae09f6636f80ae06f0000f50ef2bf0000e0cffeffbc0d30fecfe6ff0c002002002200" +} diff --git a/core/translations/fonts/font_tthoves_bold_17_cs.json b/core/translations/fonts/font_tthoves_bold_17_cs.json new file mode 100644 index 000000000..6f1437b5b --- /dev/null +++ b/core/translations/fonts/font_tthoves_bold_17_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "0d100d001000000040670000000000f24f0000000000fb070000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "Č": "0c100c00100040376017000020fefb0a000000f4cf00000000000000000020c9df290000f5ffffff0420ffdfebff1ec0ff0700f88ff0bf00007068f37f00000000f37f00000000f0bf00008079c0ff0600f88f20ffdfdaff1e00f5ffffff040020d9df2900", + "Ď": "0b100c011000761277000000f4ce7f00000060ff0a0000000000000000fcffdf290000fcffffff0600fcafdaff3f00fc0e00f6df00fc0e00b0ff01fc0e0060ff04fc0e0060ff04fc0e00b0ff01fc0e00f6df00fc9fdaff3f00fcffffff0600fcffdf290000", + "É": "09100a011000007217000000fc09000060cf00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "Ě": "09100a0110503760170020fffb090000f4cf00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "Í": "051005011000770370df00f22e00000000fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00", + "Ň": "0b100d011000740376010000e2bfaf00000040ff0c0000000000000000fccf0060ff04fcff0460ff04fcff0c60ff04fcff4f60ff04fcffcf60ff04fc7eff64ff04fc0efe6cff04fc0ef6dfff04fc0ed0ffff04fc0e50ffff04fc0e00fdff04fc0e00f4ff04", + "Ó": "0d100d001000000070270000000000f90c0000000030ef010000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "Ř": "0b100c011020674047000000fbfa1d000000d1ff020000000000000000fcffff9d0000fcffffff0c00fc8f98fe5f00fc0e00f49f00fc0e00f1af00fc0e00f88f00fcffffff2f00fcffffdf0300fcafff0c0000fc0efaaf0000fc0eb0ff0900fc0e00fc9f00", + "Š": "0b100b001000740476020000e1afaf00000030ff0d000000000000000000b4fe9d010060ffffff2f00f0ff79fccf00f39f00c0ff00f1ef3600000090ffffcf060000b5feff9f00000010e5ff00f65f0090ff02f2ff68f8ef0070ffffff5f0000b3fdad0300", + "Ť": "0a100a0010007611670000f5dd5f000080ff08000000000000faffffffaffaffffffafa6caffac7a0050ff05000050ff05000050ff05000050ff05000050ff05000050ff05000050ff05000050ff05000050ff0500", + "Ú": "0b100c01100000306700000000e16f00000000fa080000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "Ů": "0b110c01110000100000000050fe08000000b07a0e00000050ff080000000010000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "Ý": "0d100c001000000070270000000000f90c0000000040df01000000000000000000e1ff0100f2df0070ff0800fa5f0000fe1f20ff0c0000f68fa0ff040000e0fff3cf00000060ffff3f00000000fdff0b00000000f5ff0300000000e0df0000000000e0cf0000000000e0cf0000000000e0cf000000", + "Ž": "0a100b0010007503760100f2bf9f000040ff0c000000000000f3ffffffcff3ffffffcfa2aaaaffaf000090ff1e0000f5ff030020ff6f0000d1ff090000fbcf000080ff1e0000f3ff9c9989f5ffffffdff5ffffffdf", + "á": "090d0a000d00004067000000f24f000000fc0700000000000000d6ef2a0080ffffef01c0ac72ff07000000ff0930ebffff0af1efbbff0af55f50ff0af2ffffff0a30fc9efa0a", + "č": "0a0d0a000d007611670000f5dd5f000080ff0800000000000000b2fe4c0040ffffff06e0ff78fe1ff36f009339f52f000000f36f008338e0ff78fe1f40ffffff0600b3fe4c00", + "ď": "0e0c0d000c000000f09ff31f000000f09ff70a000000f09fea0400b3eef79f000050ffffff9f0000e0ff78fe9f0000f36f00f39f0000f52f00f09f0000f36f00f39f0000e0ff78fe9f000050ffffff9f000000b3efb79f0000", + "é": "0a0d0a000d00003067000000e15f000000fa0800000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", + "ě": "0a0d0a000d007611670000f5dd5f000080ff0800000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", + "í": "050d05010d70ef01f23f00740400000000ff0800ff0800ff0800ff0800ff0800ff0800ff0800ff0800ff0800", + "ň": "090d0a010d503770170030effb080000f5bf00000000000000ffb7ef0800ffffffaf00ffbff9ff02ff0c70ff04ff0930ff05ff0830ff05ff0830ff05ff0830ff05ff0830ff05", + "ó": "0a0d0a000d00003077000000e07f000000f90900000000000000b2ee4b0040ffffff07e0ff78fe2ff36f00f36ff52f00f08ff36f00f36fe0ff78fe2f40ffffff0700b3ee4b00", + "ř": "080d07000db07ff80b10fddf000072270000000000f0affd09f0ffff09f0ff6903f0bf0000f08f0000f08f0000f08f0000f08f0000f08f0000", + "š": "090d09000d503760170020fffb090000f4bf0000000000000030eadf0600f2ffff8f00f63f80bb00f5cf58010090ffff6f000041d6ff00d61d70ff01e1fffebf0020ebdf0800", + "ť": "0a0d09000d000000d40d20ff06f80a20ff06fc0420ff060000f7ffff0500f7ffff050073ff6a020020ff06000020ff06000020ff06000020ff5b020000ffff050000d5ff0500", + "ú": "090d0a010d0000fa0c000040ef010000502700000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", + "ů": "090e0a010e000001000000e49f000000baf6000000e49f00000000010000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", + "ý": "0b110a000d000020ff05000000c07f0000000072060000000000000000e0cf0070ff0490ff02b0ef0030ff07f09f0000fd0df44f0000f82ff90e0000f28ffd0a0000d0ffff04000070ffff00000020ffaf00000000fc5f00000065fd0f000000ffff09000000ffae010000", + "ž": "080d09000d60cff32e00f9ff040070470000000000f5ffffeff5ffffef6266feaf0090ff0c00f7df0150ff2e00f3ff5955f6fffffff6ffffff" +} diff --git a/core/translations/fonts/font_tthoves_bold_17_de.json b/core/translations/fonts/font_tthoves_bold_17_de.json new file mode 100644 index 000000000..5793c03c2 --- /dev/null +++ b/core/translations/fonts/font_tthoves_bold_17_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0d100d0010000011001100000000fd75bf00000000fd75bf0000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "Ö": "0d100d0010000011100100000050dff03f00000050dff03f0000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "Ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "ß": "090c0a010c30ebcf0700f3ffffbf00fbafd7ff03fe0d60ff05ff0bd5ff02ff1bff7f00ff1bffbf00ff0b80ff06ff0b20ff0aff0bb5ff08ff1bffff02ff1bef3b00", + "ä": "090d0a000d001100110000fc66cf0000fc66cf00000000000000d6ef2a0080ffffef01c0ac72ff07000000ff0930ebffff0af1efbbff0af55f50ff0af2ffffff0a30fc9efa0a", + "ö": "0a0d0a000d001100110000fb47ef0000fb47ef00000000000000b2ee4b0040ffffff07e0ff78fe2ff36f00f36ff52f00f08ff36f00f36fe0ff78fe2f40ffffff0700b3ee4b00", + "ü": "090d0a010d1011100100909ff30f00909ff30f000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05" +} diff --git a/core/translations/fonts/font_tthoves_bold_17_es.json b/core/translations/fonts/font_tthoves_bold_17_es.json new file mode 100644 index 000000000..3146a5fbc --- /dev/null +++ b/core/translations/fonts/font_tthoves_bold_17_es.json @@ -0,0 +1,17 @@ +{ + "Á": "0d100d001000000040670000000000f24f0000000000fb070000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "É": "09100a011000007217000000fc09000060cf00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "Í": "051005011000770370df00f22e00000000fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00", + "Ñ": "0b100d011000603895010000f5ffef0000009552290000000000000000fccf0060ff04fcff0460ff04fcff0c60ff04fcff4f60ff04fcffcf60ff04fc7eff64ff04fc0efe6cff04fc0ef6dfff04fc0ed0ffff04fc0e50ffff04fc0e00fdff04fc0e00f4ff04", + "Ó": "0d100d001000000070270000000000f90c0000000030ef010000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "Ú": "0b100c01100000306700000000e16f00000000fa080000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "Ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "á": "090d0a000d00004067000000f24f000000fc0700000000000000d6ef2a0080ffffef01c0ac72ff07000000ff0930ebffff0af1efbbff0af55f50ff0af2ffffff0a30fc9efa0a", + "é": "0a0d0a000d00003067000000e15f000000fa0800000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", + "í": "050d05010d70ef01f23f00740400000000ff0800ff0800ff0800ff0800ff0800ff0800ff0800ff0800ff0800", + "ñ": "090d0a010d007251090040ffed0d00a03fcb02000000000000ffb7ef0800ffffffaf00ffbff9ff02ff0c70ff04ff0930ff05ff0830ff05ff0830ff05ff0830ff05ff0830ff05", + "ó": "0a0d0a000d00003077000000e07f000000f90900000000000000b2ee4b0040ffffff07e0ff78fe2ff36f00f36ff52f00f08ff36f00f36fe0ff78fe2f40ffffff0700b3ee4b00", + "ú": "090d0a010d0000fa0c000040ef010000502700000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", + "ü": "090d0a010d1011100100909ff30f00909ff30f000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", + "¿": "090d0900090090ff01000090ff01000070cc010000000000000080ee000000c0ff000010fc9f0000d0ff090000f59f000000f76f10cc08f4efc8ff07c0ffffdf0000d8df1900" +} diff --git a/core/translations/fonts/font_tthoves_bold_17_fr.json b/core/translations/fonts/font_tthoves_bold_17_fr.json new file mode 100644 index 000000000..8f5beb81a --- /dev/null +++ b/core/translations/fonts/font_tthoves_bold_17_fr.json @@ -0,0 +1,34 @@ +{ + "À": "0d100d0010000076040000000000f51f000000000070bf000000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "Â": "0d100d0010000020770100000000d1ff0c00000000fc86af0000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "Æ": "110c11000c000050ffffffffff080000c0ffffffffff080000f3bffc8f7777040000fa2ff91f0000000010ff0bf91f0000000080ff05f9ffffff0300e0ef00f9ffffff0300f6ffffff7f66660100fdffffff1f00000040ff8c88fd8f777703b0ff0300f9ffffff08f2df0000f9ffffff08", + "Ç": "0c100c000c0020c9df290000f5ffffef0320ffdfebff0ec0ff0700f87ff0cf00008079f37f00000000f47f00000000f1af00006067d0ff0400f59f50ffafa7ff2f00f8ffffff040050fcff4c000000b01f0000000080cf0000000071fe00000000f26d0000", + "È": "09100a0110406700000010fe05000000f31e00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "É": "09100a011000007217000000fc09000060cf00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "Ê": "09100a0110007037000000faff030070bff41e000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "Ë": "09100a0110001110010080aff20f0080aff20f000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "Î": "07100600100075060050ff6f00f33efd040000000000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e00", + "Ï": "071006001010011100f40ffd05f40ffd050000000000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e00", + "Ô": "0d100d0010000060570000000000f7ff0500000040dfe33f0000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "Ù": "0b100c011000750500000000f33f0000000050df000000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "Û": "0b100c011000107702000000c0ff1e000000f969cf0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "Ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "Ÿ": "0d100c0010000011100100000050dff03f00000050dff03f000000000000000000e1ff0100f2df0070ff0800fa5f0000fe1f20ff0c0000f68fa0ff040000e0fff3cf00000060ffff3f00000000fdff0b00000000f5ff0300000000e0df0000000000e0cf0000000000e0cf0000000000e0cf000000", + "Œ": "120c12000c0020d9df97ffffff6f00f5ffffffffffff6f20ffafc8ffff777737b0ff0500f9ff000000f0bf0000f1ff000000f37f0000c0ffffff1ff47f0000b0ffffff1ff1af0000e0ff666606d0ff0300f7ff00000040ffafb8ffff77773700f7ffffffffffff6f0020dadf97ffffff6f", + "à": "090d0a000d007604000000f51e00000080bf0000000000000000d6ef2a0080ffffef01c0ac72ff07000000ff0930ebffff0af1efbbff0af55f50ff0af2ffffff0a30fc9efa0a", + "â": "090d0a000d002077020000d0ff0d0000fb77bf00000000000000d6ef2a0080ffffef01c0ac72ff07000000ff0930ebffff0af1efbbff0af55f50ff0af2ffffff0a30fc9efa0a", + "æ": "0f090f000900d7df07d6cf070080ffffefffffaf00c09c61ff8f71ff05006388ff5f55fe09a0ffffffffffff0cf39f33ff3e222202f56f70ff7f51cc04f1ffffdfffffbf0030fcbe03d7cf0800", + "ç": "0a0d0a000900a2fe4c0040ffffff05e0ff78fe1ff36f009339f52f000000f45f007227e0ef66fd1f60ffffff0700d5ff6d000000ed00000000f90b000010f70e000040cf0500", + "è": "0a0d0a000d007604000000f42f00000060cf0000000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", + "é": "0a0d0a000d00003067000000e15f000000fa0800000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", + "ê": "0a0d0a000d002077020000d0ff0d0000fb77bf00000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", + "ë": "0a0d0a000d001100110000fc66cf0000fc66cf00000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", + "î": "070d06000d30ff0c00e2bfaf00740477010000000000ff080000ff080000ff080000ff080000ff080000ff080000ff080000ff080000ff0800", + "ï": "070d06000d10011100f81aff01f81aff010000000000ff080000ff080000ff080000ff080000ff080000ff080000ff080000ff080000ff0800", + "ô": "0a0d0a000d001077020000c0ff1e0000fa69cf00000000000000b2ee4b0040ffffff07e0ff78fe2ff36f00f36ff52f00f08ff36f00f36fe0ff78fe2f40ffffff0700b3ee4b00", + "ù": "090d0a010d70ef01000000fa0a000000700700000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", + "û": "090d0a010d00f5af000030effb080050377017000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", + "ü": "090d0a010d1011100100909ff30f00909ff30f000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", + "ÿ": "0b110a000d00100111000000f21ffb070000f21ffb0700000000000000e0cf0070ff0490ff02b0ef0030ff07f09f0000fd0df44f0000f82ff90e0000f28ffd0a0000d0ffff04000070ffff00000020ffaf00000000fc5f00000065fd0f000000ffff09000000ffae010000", + "œ": "100910000900b3ee1a91ee4b0050ffffeffeffff06e0ef87ffef13fa1ff35f00f8cf88f95ff52f00f5ffffff6ff36f00f99f000000e0ff97ffff14c90c40ffffeffeffff0600b3ee1aa2ee5b00" +} diff --git a/core/translations/fonts/font_tthoves_demibold_21_cs.json b/core/translations/fonts/font_tthoves_demibold_21_cs.json new file mode 100644 index 000000000..5a85e1f49 --- /dev/null +++ b/core/translations/fonts/font_tthoves_demibold_21_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "0f140e0014000000004104000000000030ef020000000000e14f000000000000850500000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff9fff0700000050ff2aff0c000000a0ff05fd2f000000f1ff00f88f000000f6af00f3df000000fb5f00e0ff030010ff9f88d8ff080060ffffffffff0e00c0ffffffffff4f00f2ef000000f79f00f79f000000f1ef00fd3f000000b0ff04", + "Č": "0f130f00130000f61ef42f0000000080cfff040000000000fb6f0000000000000000000000000070fcdf1800000030fdffffef040000f3ffbeebff4f0000fd8f0000f8ef0070ff09000090ff06c0ff010000105503f0df000000000000f0bf000000000000f0df000000000000c0ff01000010660470ff09000090ff0500fd8f0000f8df0000f3ffbeeaff4f000030fdffffef0400000080fcdf180000", + "Ď": "0e140f011400e07f90cf00000040fff53f00000000faff0800000000e1df00000000000000000000f6ffffce070000f6ffffffdf0300f6bfa9fbff3f00f64f0000f9df00f64f000090ff07f64f000010ff0cf64f000000fd0ff64f000000fb0ff64f000000fd0ff64f000010ff0cf64f000090ff07f64f0000f8df00f6bf99ebff3f00f6ffffffdf0300f6ffffcf070000", + "É": "0b140d0114000000300500000010fe05000000b08f0000000082070000000000000000f6ffffffff06f6ffffffff06f6af88888803f64f00000000f64f00000000f64f00000000f6af88888800f6ffffffff00f6ffffffff00f64f00000000f64f00000000f64f00000000f6af88888803f6ffffffff06f6ffffffff06", + "Ě": "0b140d011400aa0373070000f24efe05000060ff8f0000000087070000000000000000f6ffffffff06f6ffffffff06f6af88888803f64f00000000f64f00000000f64f00000000f6af88888800f6ffffffff00f6ffffffff00f64f00000000f64f00000000f64f00000000f6af88888803f6ffffffff06f6ffffffff06", + "Í": "061406011400202400f80c50df01702800000000f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00", + "Ň": "0d140f011400804a207701000010fed47f00000000f3ff0a00000000508800000000000000000000f6ff070000ff0bf6ff1f0000ff0bf6ff8f0000ff0bf6ffff0100ff0bf6cfff0800ff0bf64ffd1f00ff0bf64ff59f00ff0bf64fc0ff01ff0bf64f40ff09ff0bf64f00fc2fff0bf64f00f3cfff0bf64f00b0ffff0bf64f0030ffff0bf64f0000fbff0bf64f0000f3ff0b", + "Ó": "1014100014000000000000000000000000f55f000000000010fe070000000000a0af0000000000000000000000000070fcdf1800000030fdffffef050000f3ffbeebff6f0000fd8f0000f7ef0170ff09000070ff09c0ff01000000fe0ef0df00000000fa1ff0bf00000000f83ff0df00000000fa2fc0ff01000000fe0f70ff09000060ff0a00fd8f0000f6ef0100f3ffbeebff6f000030fdffffef0500000080fcdf180000", + "Ř": "0d140e011400f70ef24f000000c09ffb0a00000030ffef0100000000f86f00000000000000000000f6ffffff5c0000f6ffffffff0900f6bf99b9ff3f00f64f0000f5af00f64f0000e0cf00f64f0000e0df00f64f0000f4af00f6af8898ff5f00f6ffffffff0a00f6ffffff6c0000f64ff6ef020000f64f70ff1e0000f64f00f8df0100f64f0080ff1d00f64f0000f9cf00", + "Š": "0d130d001300a0bf80df00000000fcfb1e00000000e1ff030000000000000000000040dbdf5b000000faffffff0b0060ffafb9ff8f00c0ff0200f2ef00e0df000080dd01c0ff060000000050ffff9c16000000f7ffffff1a00000074daffbf0000000000d2ff03c27c000060ff05f0ef0200a0ff0380ffbf98fddf0000fbffffff2e000040daef8c0000", + "Ť": "0c140c001400c2195057000060bff51e000000fbff0300000081480000000000000000f9fffffffffff9ffffffffff9599fbdf99990000f28f00000000f28f00000000f28f00000000f28f00000000f28f00000000f28f00000000f28f00000000f28f00000000f28f00000000f28f00000000f28f00000000f28f0000", + "Ú": "0d140f011400000000000000000000e1af0000000000f90c0000000040ef01000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff0a000030dadf4a0000", + "Ů": "0d150f0115000000030000000000e1ef0200000000d7c10900000000e6e50800000000a0bf01000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff0a000030dadf4a0000", + "Ý": "0f140e0014000000003005000000000010fe050000000000b08f00000000000082070000000000000000000000e0ff010000f1ef0060ff0a0000fa6f0000fd2f0020ff0d0000f5bf00b0ff050000c0ff04f3cf00000030ff0cfc3f00000000fabfff0a00000000f2ffff020000000090ff9f000000000010ff1f000000000000fd0d000000000000fd0d000000000000fd0d000000000000fd0d000000000000fd0d000000", + "Ž": "0c140d001400b02a4067000030dff44f000000f8ff0600000070680000000000000000f2ffffffffdff2ffffffffdf919999a9ffbf00000070ff1e000000f3ff04000010fe8f000000b0ff0c000000f7ef02000030ff5f000000e1ff09000000fbcf00000070ff2f000000f2ff9d999999f4fffffffffff4ffffffffff", + "á": "0b100c0010000000000000000000fa1e00000040ff03000000e05f00000000000000000070fcad020000fcffff4f0070ff39e5ef0050770060ff0300b4feffff0460ffffffff04f0ef0260ff04f18f0090ff04f0ef24f7ff0480ffffefff0400c6ef19ff04", + "č": "0c0f0c000f00e25fd16f000040fffc09000000f6bf00000000000000000030dacf070000f7ffffdf0130ff9fb7ff0ac0ff0300fb1ff0af00001001f27f00000000f0af00002102c0ff0200fb1f40ff9fb7ff0a00f7ffffdf010030dacf0700", + "ď": "100f0f000f00000000f18fc08f00000000f18ff03f00000000f18ff40d00000000f18f94050050eb9ef28f000000f9fffffe8f000040ff8ec7ff8f0000c0ff0200fb8f0000f09f0000f38f0000f27f0000f18f0000f09f0000f38f0000d0ff0100fa8f000050ff8ec7ff8f000000fafffffe8f00000050fbaed18f0000", + "é": "0c100c0010000000000000000000f36f00000000fd0900000080bf00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "ě": "0c0f0c000f00e25fd16f000040fffc09000000f6bf00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "í": "061005011000300500fd07a0af00810700000000fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00", + "ň": "0b0f0d010f00fd08fb0a0000e1bfcf00000030ff1e0000000000000000fa4dfdbe0200faffffff3f00faff79fccf00fa5f00c0ff00fa0f0070ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03", + "ó": "0c100d0010000000000000000000f28f00000000fc0b00000060df00000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ř": "0810080110fa0cf51fe16ffe0760ffcf0000fb3f0000000000fa9aff0dfaffff0dfaff8907fa3f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000", + "š": "0a0f0b000f10fe06fd0700f3cfaf000050ff0c00000000000000c5ee6c0090ffffff0bf2cf34f95ff56f007047f1ff9c260040feffff0b003096fd8f721700e0cff2bf13f5bf80ffffff3f00c5fe9d02", + "ť": "0b100a001000000010880100000060ef0000fc0d908f0000fc0dd03f0000fc0d000000f7ffff3f0000f7ffff3f000084fe8e18000000fc0d00000000fc0d00000000fc0d00000000fc0d00000000fc0d00000000fc5f14000000f9ff3f000000a1ff3f0000", + "ú": "0b100d0110000000000000000020ff08000000c0bf00000000f60d0000000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03", + "ů": "0b110d01110000310000000040ff0c000000b02a5f000000a06c4f00000020fc090000000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03", + "ý": "0c140b0010000000000000000000fb0d00000060ef02000000f13f0000000000000000fc0e0000fc0ef64f0020ff09f1af0070ff03a0ff00d0ef0040ff06f28f0000fe0cf83f0000f82ffd0d0000f2dfff070000c0ffff02000060ffcf00000010ff7f00000000fb1f00004076ff0c0000b0ffff050000b0ff7e000000", + "ž": "0a100a0010308c00770300f989df0000d0ff2e0000208803000000000000f4ffffff3ff4ffffff3f6166a6ff1e0000e1ff040000fd6f0000b0ff090000f8bf000050ff0d0000f3ff686626f5ffffff5ff5ffffff5f" +} diff --git a/core/translations/fonts/font_tthoves_demibold_21_de.json b/core/translations/fonts/font_tthoves_demibold_21_de.json new file mode 100644 index 000000000..c108753b1 --- /dev/null +++ b/core/translations/fonts/font_tthoves_demibold_21_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0f140e001400000000100100000000fe07ff0600000000fe07ff060000000066033301000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff9fff0700000050ff2aff0c000000a0ff05fd2f000000f1ff00f88f000000f6af00f3df000000fb5f00e0ff030010ff9f88d8ff080060ffffffffff0e00c0ffffffffff4f00f2ef000000f79f00f79f000000f1ef00fd3f000000b0ff04", + "Ö": "10131000130000f15ff23f00000000f15ff23f000000006026611600000000000000000000000070fcdf1800000030fdffffef050000f3ffbeebff6f0000fd8f0000f7ef0170ff09000070ff09c0ff01000000fe0ef0df00000000fa1ff0bf00000000f83ff0df00000000fa2fc0ff01000000fe0f70ff09000060ff0a00fd8f0000f6ef0100f3ffbeebff6f000030fdffffef0500000080fcdf180000", + "Ü": "0d130f01130090cfb0bf00000090cfb0bf00000040564046000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff0a000030dadf4a0000", + "ß": "0b0f0c010f00b4fe8c010080ffffff2e00f3ff79fbbf00f73f00b0ff00fa0f0090ff00fa0f00f4cf00fa0ff5ff2e00fa0ff5ff1b00fa0f51f8cf00fa0f0060ff04fa0f0020ff07fa0f0060ff06fa0f51f8ff02fa0ff3ff8f00fa0ff3be0500", + "ä": "0b0f0c000f00f60ff70e0000f60ff70e000062066306000000000000000070fcad020000fcffff4f0070ff39e5ef0050770060ff0300b4feffff0460ffffffff04f0ef0260ff04f18f0090ff04f0ef24f7ff0480ffffefff0400c6ef19ff04", + "ö": "0c0f0d000f00d08ff06f0000d08ff06f000050366026000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ü": "0b0f0d010f00fd08ff060000fd08ff0600006503660200000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03" +} diff --git a/core/translations/fonts/font_tthoves_demibold_21_es.json b/core/translations/fonts/font_tthoves_demibold_21_es.json new file mode 100644 index 000000000..3baa927bc --- /dev/null +++ b/core/translations/fonts/font_tthoves_demibold_21_es.json @@ -0,0 +1,17 @@ +{ + "Á": "0f140e0014000000004104000000000030ef020000000000e14f000000000000850500000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff9fff0700000050ff2aff0c000000a0ff05fd2f000000f1ff00f88f000000f6af00f3df000000fb5f00e0ff030010ff9f88d8ff080060ffffffffff0e00c0ffffffffff4f00f2ef000000f79f00f79f000000f1ef00fd3f000000b0ff04", + "É": "0b140d0114000000300500000010fe05000000b08f0000000082070000000000000000f6ffffffff06f6ffffffff06f6af88888803f64f00000000f64f00000000f64f00000000f6af88888800f6ffffffff00f6ffffffff00f64f00000000f64f00000000f64f00000000f6af88888803f6ffffffff06f6ffffffff06", + "Í": "061406011400202400f80c50df01702800000000f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00", + "Ñ": "0d140f0114000001000000000060ffbbff020000b0dfeacf00000000000001000000000000000000f6ff070000ff0bf6ff1f0000ff0bf6ff8f0000ff0bf6ffff0100ff0bf6cfff0800ff0bf64ffd1f00ff0bf64ff59f00ff0bf64fc0ff01ff0bf64f40ff09ff0bf64f00fc2fff0bf64f00f3cfff0bf64f00b0ffff0bf64f0030ffff0bf64f0000fbff0bf64f0000f3ff0b", + "Ó": "1014100014000000000000000000000000f55f000000000010fe070000000000a0af0000000000000000000000000070fcdf1800000030fdffffef050000f3ffbeebff6f0000fd8f0000f7ef0170ff09000070ff09c0ff01000000fe0ef0df00000000fa1ff0bf00000000f83ff0df00000000fa2fc0ff01000000fe0f70ff09000060ff0a00fd8f0000f6ef0100f3ffbeebff6f000030fdffffef0500000080fcdf180000", + "Ú": "0d140f011400000000000000000000e1af0000000000f90c0000000040ef01000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff0a000030dadf4a0000", + "Ü": "0d130f01130090cfb0bf00000090cfb0bf00000040564046000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff0a000030dadf4a0000", + "á": "0b100c0010000000000000000000fa1e00000040ff03000000e05f00000000000000000070fcad020000fcffff4f0070ff39e5ef0050770060ff0300b4feffff0460ffffffff04f0ef0260ff04f18f0090ff04f0ef24f7ff0480ffffefff0400c6ef19ff04", + "é": "0c100c0010000000000000000000f36f00000000fd0900000080bf00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "í": "061005011000300500fd07a0af00810700000000fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00", + "ñ": "0b0f0d010f00c28ef20e0000fcfeff090000ac508b0000000000000000fa4dfdbe0200faffffff3f00faff79fccf00fa5f00c0ff00fa0f0070ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03", + "ó": "0c100d0010000000000000000000f28f00000000fc0b00000060df00000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ú": "0b100d0110000000000000000020ff08000000c0bf00000000f60d0000000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03", + "ü": "0b0f0d010f00fd08ff060000fd08ff0600006503660200000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03", + "¿": "0b0f0b000b0000f93f00000000f93f00000000f93f00000000000000000000a51a00000000f91f00000030fe0f000000f5ff08000080ff7f000000f1ff02000000f3af00106603f1df0080ff06d0ff9dfaff0220feffff6f000091fdad0300" +} diff --git a/core/translations/fonts/font_tthoves_demibold_21_fr.json b/core/translations/fonts/font_tthoves_demibold_21_fr.json new file mode 100644 index 000000000..e4025bedf --- /dev/null +++ b/core/translations/fonts/font_tthoves_demibold_21_fr.json @@ -0,0 +1,34 @@ +{ + "À": "0f140e001400005204000000000000fc1f000000000000c0bf00000000000000880100000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff9fff0700000050ff2aff0c000000a0ff05fd2f000000f1ff00f88f000000f6af00f3df000000fb5f00e0ff030010ff9f88d8ff080060ffffffffff0e00c0ffffffffff4f00f2ef000000f79f00f79f000000f1ef00fd3f000000b0ff04", + "Â": "0f140e0014000040be050000000000e1ff3f0000000000fb5cef020000002088018605000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff9fff0700000050ff2aff0c000000a0ff05fd2f000000f1ff00f88f000000f6af00f3df000000fb5f00e0ff030010ff9f88d8ff080060ffffffffff0e00c0ffffffffff4f00f2ef000000f79f00f79f000000f1ef00fd3f000000b0ff04", + "Æ": "140f15000f000000f5ffffffffffcf000000fcffffffffffcf000030ff9dff8d888868000090ff15ff0a0000000000f1ef10ff0a0000000000f78f10ff0a0000000000fe1f10ffffffff5f0050ff0a10ffffffff5f00c0ff0310ff8d88883800f2ffbbbbff0a00000000f9ffffffff0a00000010ffafaabaff0a00000070ff090010ff8d888868e0ff020010ffffffffcff5bf000010ffffffffcf", + "Ç": "0f140f000f000070ecdf1800000030fdffffef040000f3ffbfebff3f0000fd9f0000f8df0060ff0a0000a0ff05c0ff010000106604f0df000000000000f0bf000000000000e0cf000000000000c0ff00000000220180ff06000070ff0710ff4f0000f3ff0100f7ff6a95ff7f000080ffffffff09000000b4ffff6e0000000000f32b000000000000f63d00000000000020ef000000000000fbbf0000000000009606000000", + "È": "0b140d011400410500000000f85f0000000080ef010000000086040000000000000000f6ffffffff06f6ffffffff06f6af88888803f64f00000000f64f00000000f64f00000000f6af88888800f6ffffffff00f6ffffffff00f64f00000000f64f00000000f64f00000000f6af88888803f6ffffffff06f6ffffffff06", + "É": "0b140d0114000000300500000010fe05000000b08f0000000082070000000000000000f6ffffffff06f6ffffffff06f6af88888803f64f00000000f64f00000000f64f00000000f6af88888800f6ffffffff00f6ffffffff00f64f00000000f64f00000000f64f00000000f6af88888803f6ffffffff06f6ffffffff06", + "Ê": "0b140d01140010bd07000000b0ff7f000000f74efe0500008803830700000000000000f6ffffffff06f6ffffffff06f6af88888803f64f00000000f64f00000000f64f00000000f6af88888800f6ffffffff00f6ffffffff00f64f00000000f64f00000000f64f00000000f6af88888803f6ffffffff06f6ffffffff06", + "Ë": "0b140d011400000010010000fa0cfc0a0000fa0cfc0a00006405320200000000000000f6ffffffff06f6ffffffff06f6af88888803f64f00000000f64f00000000f64f00000000f6af88888800f6ffffffff00f6ffffffff00f64f00000000f64f00000000f64f00000000f6af88888803f6ffffffff06f6ffffffff06", + "Î": "081407001400d92a0040ffdf01e18ffa0b840780380000000000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f00", + "Ï": "081407001400000002f33ff51ff33ff51f611631030000000000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f0000f64f00", + "Ô": "1013100013000000f7af000000000050effd0700000000f33fe25f00000000000000000000000070fcdf1800000030fdffffef050000f3ffbeebff6f0000fd8f0000f7ef0170ff09000070ff09c0ff01000000fe0ef0df00000000fa1ff0bf00000000f83ff0df00000000fa2fc0ff01000000fe0f70ff09000060ff0a00fd8f0000f6ef0100f3ffbeebff6f000030fdffffef0500000080fcdf180000", + "Ù": "0d140f01140000000000000000a0ef000000000000fc090000000000e14f00000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff0a000030dadf4a0000", + "Û": "0d140f01140000e0ef0100000000f8ff0a00000030fff54f000000c09f70df000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff0a000030dadf4a0000", + "Ü": "0d130f01130090cfb0bf00000090cfb0bf00000040564046000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff0a000030dadf4a0000", + "Ÿ": "0f140e001400000000100100000000fa0cfc0a00000000fa0cfc0a000000006405320200000000000000000000e0ff010000f1ef0060ff0a0000fa6f0000fd2f0020ff0d0000f5bf00b0ff050000c0ff04f3cf00000030ff0cfc3f00000000fabfff0a00000000f2ffff020000000090ff9f000000000010ff1f000000000000fd0d000000000000fd0d000000000000fd0d000000000000fd0d000000000000fd0d000000", + "Œ": "160f17000f000080fdbe05ffffffffdf0030fdffffcfffffffffdf00f3ff8cd9ffff8d88887800fd6f0000faff0a00000060ff090000e0ff0a000000c0ff01000070ff0a000000f0df00000030ff8d888838f0bf00000010ffffffff6ff0cf00000020ffffffff6fd0ff00000050ff0a00000080ff060000c0ff0a00000010fe4f0000f8ff0a00000000f5ff7bd8ffff8d8888680050feffffbfffffffffdf000091fdce05ffffffffdf", + "à": "0b100c001000000000000000f54f0000000080ef0000000000fb0900000000000000000070fcad020000fcffff4f0070ff39e5ef0050770060ff0300b4feffff0460ffffffff04f0ef0260ff04f18f0090ff04f0ef24f7ff0480ffffefff0400c6ef19ff04", + "â": "0b0f0c000f0000fc5f000000a0cfff030000f70df61e000000000000000070fcad020000fcffff4f0070ff39e5ef0050770060ff0300b4feffff0460ffffffff04f0ef0260ff04f18f0090ff04f0ef24f7ff0480ffffefff0400c6ef19ff04", + "æ": "130b13000b0080fd9d01b3ee4b000000fdffff7effffff090070ff49e6ff9f33f96f0050670050ff0a00d0df000092dcedffdeddfdff0150ffffffffffffffff01e0ef0340ff0800000000f19f0080ff0d00504500f0df24f6ffcf54fc6f0080ffffff99ffffff0a0000c6ef5b00b5ee5b0000", + "ç": "0c100c000b0030dacf070000f7ffffdf0130ff9fb7ff0ac0ff0300fb1ff0af00001001f27f00000000f09f00000000d0ef0000e82e60ff4c62ff0d00fcffffff030080ffff3c000000d02f00000000f17f0000000000fc03000000f6ff0100000093270000", + "è": "0c100c001000000000000000e29f0000000030ff0300000000f60d00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "é": "0c100c0010000000000000000000f36f00000000fd0900000080bf00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "ê": "0c0f0c000f0000f6bf00000030fffc090000e25fe17f000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "ë": "0c0f0c000f00f07ff15f0000f07ff15f000060366026000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "î": "081006001000cc090080ffbf00f35ffc08860581180000000000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f00", + "ï": "071006001000001002f60ff80df60ff80d620631030000000000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f0000fa0f00", + "ô": "0c0f0d000f0000f4df00000020fffc0b0000e17fd08f000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ù": "0b100d011000000000000000fc0c00000000e17f0000000030ff020000000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03", + "û": "0b100d01100030ff0c000000c0ff6f000000f76eef010010ff05fc0a00000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03", + "ü": "0b0f0d010f00fd08ff060000fd08ff0600006503660200000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03", + "ÿ": "0c130b000f00f70ef90c0000f70ef90c00006306640500000000000000fc0e0000fc0ef64f0020ff09f1af0070ff03a0ff00d0ef0040ff06f28f0000fe0cf83f0000f82ffd0d0000f2dfff070000c0ffff02000060ffcf00000010ff7f00000000fb1f00004076ff0c0000b0ffff050000b0ff7e000000", + "œ": "140b14000b0040ebbe0440ebbe050000f8ffff8ff9ffffaf0050ff8ed7ffff5ba4ff06d0ef0100fdcf0000fd0ef09f0000f6dfaaaafd1ff18f0000f5ffffffff2ff0bf0000f89f00000000b0ff0310ffef0000670430ff8fe8ffff5cb5ff0700f7ffff9ffaffffbf000030eacf0550ebbe0600" +} diff --git a/core/translations/fonts/font_tthoves_regular_21_cs.json b/core/translations/fonts/font_tthoves_regular_21_cs.json new file mode 100644 index 000000000..ae55ad1dd --- /dev/null +++ b/core/translations/fonts/font_tthoves_regular_21_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "0e130e0013000000408f0000000000d00b0000000000d901000000000000000000000090ff0400000000f0fe0a00000000f5b50f00000000fb505f000000109f00bf000000703f00f9010000d00d00f3070000f30700d00d0000f90100703f0000ee8888a89f0050ffffffffff00b00f000000f505f10a000000f00bf704000000a01fed00000000507f", + "Č": "0e130f01130010ae10be00000000f3b70d0000000060ff020000000000000000000000c7ef8c010000d3efabfc5f0020ff050030fd05c02f000000e10ef607000000605efb010000000000ed000000000000ce000000000000ed000000000000fb010000000000f607000000705fc02f000000e10e30ef050030fd0400d3ef9afc5f000000c7ef8c0100", + "Ď": "0d130f011300901e902e00000000ccf60400000000e17f00000000000000000000f5ffffbe050000f59b99fcbf0100f5050000f80d00f5050000608f00f505000000fc01f505000000f606f505000000f308f505000000f109f505000000f308f505000000f606f505000000fc01f5050000608f00f5050000f80d00f58b98ebbf0100f5ffffbe050000", + "É": "0b130c0113000000fa02000000505f00000000e1080000000000000000f5ffffffff01f59b99999901f50500000000f50500000000f50500000000f50500000000f58b88886800f5ffffffbf00f50500000000f50500000000f50500000000f50500000000f50500000000f58b88888801f5ffffffff01", + "Ě": "0b130c011300f703f6040000a05e7f00000000fc0a0000000000000000f5ffffffff01f59b99999901f50500000000f50500000000f50500000000f50500000000f58b88886800f5ffffffbf00f50500000000f50500000000f50500000000f50500000000f50500000000f58b88888801f5ffffffff01", + "Í": "051305011300f904307f00d00a00000000f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500", + "Ň": "0d130f011300604f504f00000000e9f40700000000c0af00000000000000000000f5cf000000f703f5ff040000f703f5f70c0000f703f5754f0000f703f505ce0000f703f505f70400f703f505e00d00f703f505705f00f703f50500de00f703f50500f605f703f50500e00df703f50500605ff703f5050000ddf703f5050000f6ff03f5050000d0ff03", + "Ó": "0f1310011300000010ce000000000000a01e000000000000f50300000000000000000000000000c7ff8d01000000d3efabfd4e000020ff050040fe0500c02f000000e10e00f607000000508f00fb0100000000de00ed0000000000fb00ce0000000000f901ed0000000000fb00fb0100000000de00f607000000508f00c02f000000e10e0030ef050030fe050000d3efaafd4e00000000c7ff8d010000", + "Ř": "0c130d011300f208f2080000505fbd00000000f81d0000000000000000f5ffffef2a00f59b99a9ff03f5050000f20cf5050000901ff5050000703ff5050000901ff5050000f20cf58b88a8ff03f5ffffef2b00f515fd030000f505d13f0000f50510fd0300f50500d13f00f5050010ed03f5050000e22e", + "Š": "0c130d001300703f604f000000eaf507000000c0af00000000000000000040ebcf290000f9bec9ff0650af0000d23f901f0000308fb00f00000057707f0000000000fd8c2500000080fdff9e0100000063fb1e00000000509f7005000000ced00d000000bf709f0000906f00fabea9fe0b0040dadf5b00", + "Ť": "0c130c001300a01ea01e000000cdf604000000e26f0000000000000000f7ffffffffdf9499d99f99790000a00f00000000a00f00000000a00f00000000a00f00000000a00f00000000a00f00000000a00f00000000a00f00000000a00f00000000a00f00000000a00f00000000a00f00000000a00f0000", + "Ú": "0d130e0113000000d01e0000000000f80300000000205f00000000000000000000f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f703000000ec00f406000000be00f10d0000607f0060af0100f50d0000f9bed9df03000040dacf080000", + "Ů": "0d140e01140000c16e0000000000a8f3000000000099f20000000000d27f00000000000000000000f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f703000000ec00f406000000be00f10d0000607f0060af0100f50d0000f9bed9df03000040dacf080000", + "Ý": "0d130c0013000000d01d0000000000f80200000000305f00000000000000000000fb01000000fb01f20a0000408f00903f0000d00e0010ce0000f6050000f60500ce000000d00d803f000000407ff20a00000000fbfc0100000000f28f0000000000b00f0000000000a00f0000000000a00f0000000000a00f0000000000a00f0000000000a00f000000", + "Ž": "0c130c001300d00cc00c0000209eea01000000f43f0000000000000000f2ffffffff3f91999999f91f00000000f80600000030bf00000000d01e00000000f90500000040af00000000e11e00000000fb04000000609f00000000f20d00000000fc03000000707f00000000f29f88888828f4ffffffff5f", + "á": "090f0b010f0000804f000000f307000000bd0000000000000000d8df0800c0bfb8cf00f60500f705630000f008005377f70ac1ffffff0afa1600f00aae0000f20acd0000fb0af68dd9fe0a50fc9ec10a", + "č": "0b0f0b000f00e10ad10b0000307fdb01000000f62f00000000000000000050ebbe030000f99de95f00509f0000fb01c00d00009203f00900000000f20700000000f00900000000d00d0000a203509f0000fb0000f98dd85f000050ebbe0300", + "ď": "0f0f0d000f00000000d00bf80200000000d00bcb0000000000d00b6e0000000000d00b00000050fb8ed00b000000f89dfaea0b000030af0030fe0b0000b00e0000f70b0000f0090000f10b0000f1070000e00b0000f0080000f00b0000d00d0000f40b0000608f0020fd0b000000fb8cf9eb0b00000060fc8cb00b0000", + "é": "0b0f0c000f000000f40800000010be00000000a00d00000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "ě": "0b0f0c000f00f209e1090000406fcc00000000f71e00000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "í": "051005011000ec02704f00f20600000000000000f80000f80000f80000f80000f80000f80000f80000f80000f80000f80000f80000", + "ň": "0a0f0c010f00ea01ea0100d06c4f000020fe06000000000000e891fd4c00f8ee99fe06f81d00c01ff80400404ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107f", + "ó": "0b0f0c000f000000f30900000000cd00000000801e00000000000000000050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", + "ř": "0710070110f703f604a05e7f0000fc0a000000000000000000e8d5ef00f8af7700f8060000f8010000f8000000f8000000f8000000f8000000f8000000f8000000f8000000", + "š": "090f0a000f10ae10ae0000f3c70d000060ef0200000000000000d7df2a00a0bf98fe02f10900f10af109003003c0af36000010faff8e00000052fa08410100d00df30800d00ca0bf88fd0600c6ef4b00", + "ť": "090f08000f000000f40600cc00f80000cc00ab0000cc000000f7ffff020073ee77010000cc00000000cc00000000cc00000000cc00000000cc00000000cc00000000cc00000000fb77010000c3ff0200", + "ú": "0a100c0110000020bf000000c01d000000f6020000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f", + "ů": "0a110c011100000000000040ee040000d0660c0000c0760c000040ee03000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f", + "ý": "0b140a0010000000fb02000000604f00000000f1070000000000000000000000000000f9010000fa00f3060000af00d00c00504f00802f00a00e00208f00f0090000ec00f4040000f604ea000000f0098f000000a05f3f00000040ff0d00000000fe0800000000f90200000000cc00000040976f000000a0ff0a000000", + "ž": "0910090010505f505f0000f8f4080000b0bf000000000000000000000000f5ffffff06727777fe040000509f000000f10d000000fc020000806f000000f30b000010ee010000a04f000000f57d777703f7ffffff07" +} diff --git a/core/translations/fonts/font_tthoves_regular_21_de.json b/core/translations/fonts/font_tthoves_regular_21_de.json new file mode 100644 index 000000000..271c4d262 --- /dev/null +++ b/core/translations/fonts/font_tthoves_regular_21_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0e130e00130000ab206c00000000de308f00000000000000000000000000000000000090ff0400000000f0fe0a00000000f5b50f00000000fb505f000000109f00bf000000703f00f9010000d00d00f3070000f30700d00d0000f90100703f0000ee8888a89f0050ffffffffff00b00f000000f505f10a000000f00bf704000000a01fed00000000507f", + "Ö": "0f131001130000c801ac0000000000fa01cf000000000000000000000000000000000000000000c7ff8d01000000d3efabfd4e000020ff050040fe0500c02f000000e10e00f607000000508f00fb0100000000de00ed0000000000fb00ce0000000000f901ed0000000000fb00fb0100000000de00f607000000508f00c02f000000e10e0030ef050030fe050000d3efaafd4e00000000c7ff8d010000", + "Ü": "0d130e011300603ca00c000000704fc00f00000000000000000000000000000000f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f703000000ec00f406000000be00f10d0000607f0060af0100f50d0000f9bed9df03000040dacf080000", + "ß": "0a0f0c010f00c6df2a0090cf98ff03f30900e10df70200801ff80000801ff80000e10cf80096ee03f800fdaf01f80010e50df80000306ff8000000aef80000008ff80000904ff80086fd09f800ed5b00", + "ä": "090f0b010f207c603c00209f704f000000000000000000000000d8df0800c0bfb8cf00f60500f705630000f008005377f70ac1ffffff0afa1600f00aae0000f20acd0000fb0af68dd9fe0a50fc9ec10a", + "ö": "0b0f0c000f00a00bc2070000d00ef209000000000000000000000000000050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", + "ü": "0a0f0c010f00fb10bf0000c9008c0000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f" +} diff --git a/core/translations/fonts/font_tthoves_regular_21_es.json b/core/translations/fonts/font_tthoves_regular_21_es.json new file mode 100644 index 000000000..bb68a9af0 --- /dev/null +++ b/core/translations/fonts/font_tthoves_regular_21_es.json @@ -0,0 +1,17 @@ +{ + "Á": "0e130e0013000000408f0000000000d00b0000000000d901000000000000000000000090ff0400000000f0fe0a00000000f5b50f00000000fb505f000000109f00bf000000703f00f9010000d00d00f3070000f30700d00d0000f90100703f0000ee8888a89f0050ffffffffff00b00f000000f505f10a000000f00bf704000000a01fed00000000507f", + "É": "0b130c0113000000fa02000000505f00000000e1080000000000000000f5ffffffff01f59b99999901f50500000000f50500000000f50500000000f50500000000f58b88886800f5ffffffbf00f50500000000f50500000000f50500000000f50500000000f50500000000f58b88888801f5ffffffff01", + "Í": "051305011300f904307f00d00a00000000f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500", + "Ñ": "0d130f01130020ec28ba000000a04cfb3e00000010011000000000000000000000f5cf000000f703f5ff040000f703f5f70c0000f703f5754f0000f703f505ce0000f703f505f70400f703f505e00d00f703f505705f00f703f50500de00f703f50500f605f703f50500e00df703f50500605ff703f5050000ddf703f5050000f6ff03f5050000d0ff03", + "Ó": "0f1310011300000010ce000000000000a01e000000000000f50300000000000000000000000000c7ff8d01000000d3efabfd4e000020ff050040fe0500c02f000000e10e00f607000000508f00fb0100000000de00ed0000000000fb00ce0000000000f901ed0000000000fb00fb0100000000de00f607000000508f00c02f000000e10e0030ef050030fe050000d3efaafd4e00000000c7ff8d010000", + "Ú": "0d130e0113000000d01e0000000000f80300000000205f00000000000000000000f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f703000000ec00f406000000be00f10d0000607f0060af0100f50d0000f9bed9df03000040dacf080000", + "Ü": "0d130e011300603ca00c000000704fc00f00000000000000000000000000000000f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f703000000ec00f406000000be00f10d0000607f0060af0100f50d0000f9bed9df03000040dacf080000", + "á": "090f0b010f0000804f000000f307000000bd0000000000000000d8df0800c0bfb8cf00f60500f705630000f008005377f70ac1ffffff0afa1600f00aae0000f20acd0000fb0af68dd9fe0a50fc9ec10a", + "é": "0b0f0c000f000000f40800000010be00000000a00d00000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "í": "051005011000ec02704f00f20600000000000000f80000f80000f80000f80000f80000f80000f80000f80000f80000f80000f80000", + "ñ": "0a0f0c010f00d47de107008ed6cf0000020001000000000000e891fd4c00f8ee99fe06f81d00c01ff80400404ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107f", + "ó": "0b0f0c000f000000f30900000000cd00000000801e00000000000000000050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", + "ú": "0a100c0110000020bf000000c01d000000f6020000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f", + "ü": "0a0f0c010f00fb10bf0000c9008c0000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f", + "¿": "0b0f0b000b0000f60700000000e50700000000000000000000920300000000f40600000000f70400000060ef00000000f92c000000908f00000000f00c00000000f20900001100f00a0000fb00b04f0050af0010fe9bfc1e000091fd9d0100" +} diff --git a/core/translations/fonts/font_tthoves_regular_21_fr.json b/core/translations/fonts/font_tthoves_regular_21_fr.json new file mode 100644 index 000000000..f13cb402c --- /dev/null +++ b/core/translations/fonts/font_tthoves_regular_21_fr.json @@ -0,0 +1,34 @@ +{ + "À": "0e130e00130010dd000000000000f2080000000000503f00000000000000000000000090ff0400000000f0fe0a00000000f5b50f00000000fb505f000000109f00bf000000703f00f9010000d00d00f3070000f30700d00d0000f90100703f0000ee8888a89f0050ffffffffff00b00f000000f505f10a000000f00bf704000000a01fed00000000507f", + "Â": "0e130e0013000060ef0200000000f4c70d00000010ae10ae000000000000000000000090ff0400000000f0fe0a00000000f5b50f00000000fb505f000000109f00bf000000703f00f9010000d00d00f3070000f30700d00d0000f90100703f0000ee8888a89f0050ffffffffff00b00f000000f505f10a000000f00bf704000000a01fed00000000507f", + "Æ": "140f14000f000000f1ffffffffff4f000000f7aacf99999929000000dd207f000000000000406f207f000000000000b00f207f000000000000f208207f000000000000f90220cf888888070000bf0020ffffffff0d00704f00207f0000000000d09f88a87f0000000000f4ffffff7f0000000000eb0000207f00000000208f0000207f00000000902f000020cf88888828f00c000020ffffffff4f", + "Ç": "0e130f010f0000c7ef8c010000d3efabfc5f0020ff050030fd05c02f000000e10ef607000000605efb010000000000ed000000000000ce000000000000ec000000000000f9010000000000f607000000705fd02f000000e10e40ef050030fd0500e3ef9afc6f000010c7ff8c01000000005e000000000000e8040000000000c1090000000060bf020000", + "È": "0b130c011300f50700000000802f0000000000cb000000000000000000f5ffffffff01f59b99999901f50500000000f50500000000f50500000000f50500000000f58b88886800f5ffffffbf00f50500000000f50500000000f50500000000f50500000000f50500000000f58b88888801f5ffffffff01", + "É": "0b130c0113000000fa02000000505f00000000e1080000000000000000f5ffffffff01f59b99999901f50500000000f50500000000f50500000000f50500000000f58b88886800f5ffffffbf00f50500000000f50500000000f50500000000f50500000000f50500000000f58b88888801f5ffffffff01", + "Ê": "0b130c01130000fc0a000000a05e7f000000f703f60400000000000000f5ffffffff01f59b99999901f50500000000f50500000000f50500000000f50500000000f58b88886800f5ffffffbf00f50500000000f50500000000f50500000000f50500000000f50500000000f58b88888801f5ffffffff01", + "Ë": "0b130c011300c405c8010000f507fa0100000000000000000000000000f5ffffffff01f59b99999901f50500000000f50500000000f50500000000f50500000000f58b88886800f5ffffffbf00f50500000000f50500000000f50500000000f50500000000f50500000000f58b88888801f5ffffffff01", + "Î": "071306001300fb0b00805f8f00f505f4050000000000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f50500", + "Ï": "0713060013c207c602f308f803000000000000000000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f5050000f50500", + "Ô": "0f13100113000030ff050000000000e18b2f0000000000dc00db01000000000000000000000000c7ff8d01000000d3efabfd4e000020ff050040fe0500c02f000000e10e00f607000000508f00fb0100000000de00ed0000000000fb00ce0000000000f901ed0000000000fb00fb0100000000de00f607000000508f00c02f000000e10e0030ef050030fe050000d3efaafd4e00000000c7ff8d010000", + "Ù": "0d130e011300804f000000000000eb010000000000d00a00000000000000000000f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f703000000ec00f406000000be00f10d0000607f0060af0100f50d0000f9bed9df03000040dacf080000", + "Û": "0d130e01130000e17f0000000000ccf604000000902e902e000000000000000000f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f703000000ec00f406000000be00f10d0000607f0060af0100f50d0000f9bed9df03000040dacf080000", + "Ü": "0d130e011300603ca00c000000704fc00f00000000000000000000000000000000f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f703000000ec00f406000000be00f10d0000607f0060af0100f50d0000f9bed9df03000040dacf080000", + "Ÿ": "0d130c001300602ca00b000000803fd00e00000000000000000000000000000000fb01000000fb01f20a0000408f00903f0000d00e0010ce0000f6050000f60500ce000000d00d803f000000407ff20a00000000fbfc0100000000f28f0000000000b00f0000000000a00f0000000000a00f0000000000a00f0000000000a00f0000000000a00f000000", + "Œ": "150f17010f0020d9ef4a80ffffffff0e00f5cfb9fe89af9999990850cf020090ef2f00000000e00d000000fa2f00000000f705000000f22f00000000fc00000000c02f00000000de00000000a0af88888804ce0000000080ffffffff08ed00000000b02f00000000fa01000000d02f00000000f507000000f42f00000000c01f000000fc2f0000000030ef0300c1cf2f0000000000e4dfcaff87af888888080010d9ef3a80ffffffff0e", + "à": "090f0b010f30af00000000f604000000901e0000000000000000d8df0800c0bfb8cf00f60500f705630000f008005377f70ac1ffffff0afa1600f00aae0000f20acd0000fb0af68dd9fe0a50fc9ec10a", + "â": "090f0b010f00a0cf000000f7e50900406f406f00000000000000d8df0800c0bfb8cf00f60500f705630000f008005377f70ac1ffffff0afa1600f00aae0000f20acd0000fb0af68dd9fe0a50fc9ec10a", + "æ": "110b13010b10d8df0830ebbe0300d0afa8aff39dd96f00f70400f59f0000fa02310000f00e0000f107007588f87d7777f70ad1ffeefeffffffff0bfa0500f00c00000000ae0000f31f00003101dc0000fcbf0000fd01f58ce94ff69de96f0050fcad0230ebce0400", + "ç": "0b0f0b000b0050ebbe030000f99de95f00509f0000fb01d00d00009203f00900000000f20700000000f00900000000d00d0000b203509f0000fb0100fa9de95f000060fcbf03000000f10400000000813e00000000107d00000000f71b0000", + "è": "0b0f0c000f00e10c00000000307f0000000000f60200000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "é": "0b0f0c000f000000f40800000010be00000000a00d00000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "ê": "0b0f0c000f0000f71e000000406fcc000000e209e209000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "ë": "0b0f0c000f00c00ac3060000f00df407000000000000000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "î": "071006001010fd0800b06d5f00f802f803000000000000000000f8000000f8000000f8000000f8000000f8000000f8000000f8000000f8000000f8000000f8000000f80000", + "ï": "060f06000ff803edc603ba00000000000000f80000f80000f80000f80000f80000f80000f80000f80000f80000f80000f800", + "ô": "0b0f0c000f0000f52f000000308fdb010000e10bd10b000000000000000050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", + "ù": "0a100c011000fc01000000e10b000000306f000000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f", + "û": "0a100c01100040ff030000e2a91e0000cd00cc0000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f", + "ü": "0a0f0c010f00fb10bf0000c9008c0000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f", + "ÿ": "0b130a000f00f606fb010000c405c80000000000000000000000000000f9010000fa00f3060000af00d00c00504f00802f00a00e00208f00f0090000ec00f4040000f604ea000000f0098f000000a05f3f00000040ff0d00000000fe0800000000f90200000000cc00000040976f000000a0ff0a000000", + "œ": "130b14000b0060fb9e0140ebae020000f98cfb1df69de94f00409f0040cfaf0010ed00c00e0000f91f0000f405f0090000f40b0000f008f1070000f2ffffffff0af0080000f37d77777704d00c0000f70e00000000607f0020ef8f0000fc0100fb8cfa1df68ce96f000060fc9e0140fcbe0400" +} diff --git a/core/translations/fonts/font_unifont_bold_16_cs.json b/core/translations/fonts/font_unifont_bold_16_cs.json new file mode 100644 index 000000000..77922b365 --- /dev/null +++ b/core/translations/fonts/font_unifont_bold_16_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "0000080000", + "Č": "0000080000", + "Ď": "0000080000", + "É": "0000080000", + "Ě": "0000080000", + "Í": "0000080000", + "Ň": "0000080000", + "Ó": "0000080000", + "Ř": "0000080000", + "Š": "0000080000", + "Ť": "0000080000", + "Ú": "0000080000", + "Ů": "0000080000", + "Ý": "0000080000", + "Ž": "0000080000", + "á": "0000080000", + "č": "0000080000", + "ď": "0000080000", + "é": "0000080000", + "ě": "0000080000", + "í": "0000080000", + "ň": "0000080000", + "ó": "0000080000", + "ř": "0000080000", + "š": "0000080000", + "ť": "0000080000", + "ú": "0000080000", + "ů": "0000080000", + "ý": "0000080000", + "ž": "0000080000" +} diff --git a/core/translations/fonts/font_unifont_bold_16_de.json b/core/translations/fonts/font_unifont_bold_16_de.json new file mode 100644 index 000000000..417edda6f --- /dev/null +++ b/core/translations/fonts/font_unifont_bold_16_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0000080000", + "Ö": "0000080000", + "Ü": "0000080000", + "ß": "0000080000", + "ä": "0000080000", + "ö": "0000080000", + "ü": "0000080000" +} diff --git a/core/translations/fonts/font_unifont_bold_16_es.json b/core/translations/fonts/font_unifont_bold_16_es.json new file mode 100644 index 000000000..36352708d --- /dev/null +++ b/core/translations/fonts/font_unifont_bold_16_es.json @@ -0,0 +1,17 @@ +{ + "Á": "0000080000", + "É": "0000080000", + "Í": "0000080000", + "Ñ": "0000080000", + "Ó": "0000080000", + "Ú": "0000080000", + "Ü": "0000080000", + "á": "0000080000", + "é": "0000080000", + "í": "0000080000", + "ñ": "0000080000", + "ó": "0000080000", + "ú": "0000080000", + "ü": "0000080000", + "¿": "0000080000" +} diff --git a/core/translations/fonts/font_unifont_bold_16_fr.json b/core/translations/fonts/font_unifont_bold_16_fr.json new file mode 100644 index 000000000..504c64577 --- /dev/null +++ b/core/translations/fonts/font_unifont_bold_16_fr.json @@ -0,0 +1,34 @@ +{ + "À": "0000080000", + "Â": "0000080000", + "Æ": "0000080000", + "Ç": "0000080000", + "È": "0000080000", + "É": "0000080000", + "Ê": "0000080000", + "Ë": "0000080000", + "Î": "0000080000", + "Ï": "0000080000", + "Ô": "0000080000", + "Ù": "0000080000", + "Û": "0000080000", + "Ü": "0000080000", + "Ÿ": "0000080000", + "Œ": "0000080000", + "à": "0000080000", + "â": "0000080000", + "æ": "0000080000", + "ç": "0000080000", + "è": "0000080000", + "é": "0000080000", + "ê": "0000080000", + "ë": "0000080000", + "î": "0000080000", + "ï": "0000080000", + "ô": "0000080000", + "ù": "0000080000", + "û": "0000080000", + "ü": "0000080000", + "ÿ": "0000080000", + "œ": "0000080000" +} diff --git a/core/translations/fonts/font_unifont_regular_16_cs.json b/core/translations/fonts/font_unifont_regular_16_cs.json new file mode 100644 index 000000000..7a56feb28 --- /dev/null +++ b/core/translations/fonts/font_unifont_regular_16_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "060e07000e1980003124a187f8618610", + "Č": "060e07000e48c0007a186082082185e0", + "Ď": "060e07000e918000f228618618618bc0", + "É": "060e07000e198000fe0820fa082083f0", + "Ě": "060e07000e48c000fe0820fa082083f0", + "Í": "050e07010e36000f90842108427c", + "Ň": "060e07000e48c000871c69a659638e10", + "Ó": "060e07000e1980007a186186186185e0", + "Ř": "060e07000e48c000fa1861fa48a28610", + "Š": "060e07000e48c0007a186060606185e0", + "Ť": "070e07000e4860000fe20408102040810200", + "Ú": "060e07000e19800086186186186185e0", + "Ů": "060e07000e31230086186186186185e0", + "Ý": "070e07000e18c00008305122282040810200", + "Ž": "060e07000e48c000fc104210842083f0", + "á": "060c07000c1980007a105f8618dd00", + "č": "060c07000c48c0007a182082085e00", + "ď": "060e07000e48c0010417638618618dd0", + "é": "060c07000c1980007a187f82085e00", + "ě": "060c07000c48c0007a187f82085e00", + "í": "050c07010c36000610842109f0", + "ň": "060c07000c48c000bb186186186100", + "ó": "060c07000c1980007a186186185e00", + "ř": "060c07000c48c000bb186082082000", + "š": "060c07000c48c0007a181818185e00", + "ť": "050e07000e498002109f2108420c", + "ú": "060c07000c1980008618618618dd00", + "ů": "060c07000c3123008618618618dd00", + "ý": "060e07000c19800086186185334105e0", + "ž": "060c07000c48c000fc108421083f00" +} diff --git a/core/translations/fonts/font_unifont_regular_16_de.json b/core/translations/fonts/font_unifont_regular_16_de.json new file mode 100644 index 000000000..65864f9fe --- /dev/null +++ b/core/translations/fonts/font_unifont_regular_16_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "060e07000e4920003124a187f8618610", + "Ö": "060e07000e4920007a186186186185e0", + "Ü": "060e07000e49200086186186186185e0", + "ß": "060a07000a7228a4b22861a660", + "ä": "060c07000c4920007a105f8618dd00", + "ö": "060c07000c4920007a186186185e00", + "ü": "060c07000c4920008618618618dd00" +} diff --git a/core/translations/fonts/font_unifont_regular_16_es.json b/core/translations/fonts/font_unifont_regular_16_es.json new file mode 100644 index 000000000..22a91e6ff --- /dev/null +++ b/core/translations/fonts/font_unifont_regular_16_es.json @@ -0,0 +1,17 @@ +{ + "Á": "060e07000e1980003124a187f8618610", + "É": "060e07000e198000fe0820fa082083f0", + "Í": "050e07010e36000f90842108427c", + "Ñ": "060e07000e666000871c69a659638e10", + "Ó": "060e07000e1980007a186186186185e0", + "Ú": "060e07000e19800086186186186185e0", + "Ü": "060e07000e49200086186186186185e0", + "á": "060c07000c1980007a105f8618dd00", + "é": "060c07000c1980007a187f82085e00", + "í": "050c07010c36000610842109f0", + "ñ": "060c07000c666000bb186186186100", + "ó": "060c07000c1980007a186186185e00", + "ú": "060c07000c1980008618618618dd00", + "ü": "060c07000c4920008618618618dd00", + "¿": "060a07000a20800821082185e0" +} diff --git a/core/translations/fonts/font_unifont_regular_16_fr.json b/core/translations/fonts/font_unifont_regular_16_fr.json new file mode 100644 index 000000000..6559e4cda --- /dev/null +++ b/core/translations/fonts/font_unifont_regular_16_fr.json @@ -0,0 +1,34 @@ +{ + "À": "060e07000e6060003124a187f8618610", + "Â": "060e07000e3120003124a187f8618610", + "Æ": "070a07000a3ea2448ff22448913c", + "Ç": "060c07000a7a186082082185e11800", + "È": "060e07000e606000fe0820fa082083f0", + "É": "060e07000e198000fe0820fa082083f0", + "Ê": "060e07000e312000fe0820fa082083f0", + "Ë": "060e07000e492000fe0820fa082083f0", + "Î": "050e07010e64800f90842108427c", + "Ï": "050e07010e94800f90842108427c", + "Ô": "060e07000e3120007a186186186185e0", + "Ù": "060e07000e60600086186186186185e0", + "Û": "060e07000e31200086186186186185e0", + "Ü": "060e07000e49200086186186186185e0", + "Ÿ": "070e07000e48900008305122282040810200", + "Œ": "070a07000a6f224489d2244890dc", + "à": "060c07000c6060007a105f8618dd00", + "â": "060c07000c3120007a105f8618dd00", + "æ": "07080700087d244bf91224be00", + "ç": "060a0700087a182082085e1180", + "è": "060c07000c6060007a187f82085e00", + "é": "060c07000c1980007a187f82085e00", + "ê": "060c07000c3120007a187f82085e00", + "ë": "060c07000c4920007a187f82085e00", + "î": "050c07010c64800610842109f0", + "ï": "050c07010c94800610842109f0", + "ô": "060c07000c3120007a186186185e00", + "ù": "060c07000c6060008618618618dd00", + "û": "060c07000c3120008618618618dd00", + "ü": "060c07000c4920008618618618dd00", + "ÿ": "060e07000c49200086186185334105e0", + "œ": "07080700086d264cf91224b600" +} diff --git a/core/translations/fr.json b/core/translations/fr.json new file mode 100644 index 000000000..555b9dd8e --- /dev/null +++ b/core/translations/fr.json @@ -0,0 +1,856 @@ +{ + "fonts": { + "T2B1": { + "1_FONT_NORMAL": "font_pixeloperator_regular_8_fr.json", + "2_FONT_BOLD": "font_pixeloperator_bold_8_fr.json", + "3_FONT_MONO": "font_pixeloperatormono_regular_8_fr.json", + "4_FONT_BIG": "font_unifont_regular_16_fr.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_fr.json" + }, + "T2T1": { + "1_FONT_NORMAL": "font_tthoves_regular_21_fr.json", + "2_FONT_BOLD": "font_tthoves_bold_17_fr.json", + "3_FONT_MONO": "font_robotomono_medium_20_fr.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_fr.json" + } + }, + "header": { + "language": "fr-FR", + "version": "2.6.5" + }, + "translations": { + "addr_mismatch__contact_support_at": "Veuillez contacter l'assistance Trezor à l'adresse", + "addr_mismatch__key_mismatch": "Déliachance clé?", + "addr_mismatch__mismatch": "Erreur d'adresse?", + "addr_mismatch__support_url": "trezor.io/support", + "addr_mismatch__wrong_derivation_path": "Mauvais chemin de dérivation pour le compte sélectionné.", + "addr_mismatch__xpub_mismatch": "Xpub inadéquat?", + "address__public_key": "Clé publique", + "address__title_cosigner": "COSIGNATAIRE", + "address__title_receive_address": "ADRESSE DE RÉCEPTION", + "address__title_yours": "LA VÔTRE", + "address_details__derivation_path": "Chemin de dérivation:", + "address_details__title_receive_address": "ADRESSE DE RÉCEPTION", + "address_details__title_receiving_to": "RÉCEPTION SUR", + "authenticate__confirm_template": "Autoriser l'ordinateur connecté pour confirmer que votre {} est authentique?", + "authenticate__header": "Authentifier l'appareil", + "auto_lock__change_template": "Verrouiller automatiquement votre Trezor après {} d'inactivité?", + "auto_lock__title": "DÉLAI DE VER. AUTO", + "backup__can_back_up_anytime": "Vous pouvez sauvegarder votre Trezor une fois, à tout moment.", + "backup__it_should_be_backed_up": "Vous devriez sauvegarder votre nouveau portefeuille dès maintenant.", + "backup__it_should_be_backed_up_now": "Il doit être sauvegardé dès maintenant!", + "backup__new_wallet_created": "Nouveau portefeuille créé.", + "backup__new_wallet_successfully_created": "Nouveau portefeuille créé avec succès.", + "backup__recover_anytime": "Vous pouvez utiliser votre sauvegarde pour récupérer votre portefeuille à tout moment.", + "backup__title_backup_wallet": "SAUVEG. PORTEFEUILLE", + "backup__title_skip": "IGNORER SAUVEGARDE", + "backup__want_to_skip": "Voulez-vous vraiment ignorer la sauvegarde?", + "binance__buy": "Acheter", + "binance__confirm_cancel": "Confirmer l'annulation", + "binance__confirm_input": "Confirmer l'entrée", + "binance__confirm_order": "Confirmer l'ordre", + "binance__confirm_output": "Confirmer la sortie", + "binance__order_id": "Identifiant de l'ordre:", + "binance__pair": "Paire:", + "binance__price": "Prix:", + "binance__quantity": "Quantité:", + "binance__sell": "Vendre", + "binance__sender_address": "Adresse de l'expéditeur:", + "binance__side": "Côté:", + "bitcoin__commitment_data": "Données d'engagement:", + "bitcoin__confirm_locktime": "Confirmez le temps de verrouillage", + "bitcoin__create_proof_of_ownership": "Voulez-vous créer une preuve de propriété?", + "bitcoin__high_mining_fee_template": "Les frais de minage de\n{}\nsont anormalement élevés.", + "bitcoin__locktime_no_effect": "Le temps de verrouillage est défini, mais n'aura aucun effet.", + "bitcoin__locktime_set_to": "Temps de verrouillage défini sur:", + "bitcoin__locktime_set_to_blockheight": "Temps de verrouillage défini sur la hauteur de bloc:", + "bitcoin__lot_of_change_outputs": "Beaucoup de sorties de monnaie.", + "bitcoin__multiple_accounts": "Plusieurs comptes", + "bitcoin__new_fee_rate": "Nouveau taux de frais:", + "bitcoin__simple_send_of": "Envoi simple de", + "bitcoin__ticket_amount": "Montant du ticket:", + "bitcoin__title_confirm_details": "CONFIRMER DÉTAILS", + "bitcoin__title_finalize_transaction": "FINALISER TRANSAC.", + "bitcoin__title_high_mining_fee": "FRAIS DE MIN. ÉLEVÉS", + "bitcoin__title_meld_transaction": "FUSIONNER TRANSAC.", + "bitcoin__title_modify_amount": "MODIFIER LE MONTANT", + "bitcoin__title_payjoin": "PAYJOIN", + "bitcoin__title_proof_of_ownership": "PREUVE DE PROPRIÉTÉ", + "bitcoin__title_purchase_ticket": "ACHETER UN TICKET", + "bitcoin__title_update_transaction": "METTRE À J. TRANSAC.", + "bitcoin__unknown_path": "Chemin inconnu", + "bitcoin__unknown_transaction": "Transaction inconnue", + "bitcoin__unusually_high_fee": "Frais anormalement élevés.", + "bitcoin__unverified_external_inputs": "La transaction contient des entrées externes non vérifiées.", + "bitcoin__valid_signature": "La signature est valide.", + "bitcoin__voting_rights": "Droits de vote pour:", + "buttons__abort": "ANNULER", + "buttons__access": "ACCÉDER", + "buttons__again": "TUTO", + "buttons__allow": "PERMETTRE", + "buttons__back": "DOS", + "buttons__back_up": "SAUVEGARDER", + "buttons__cancel": "ANNULER", + "buttons__change": "CHANGER", + "buttons__check": "VÉRIFIER", + "buttons__check_again": "REVÉRIFIER", + "buttons__close": "FERMER", + "buttons__confirm": "CONFIRMER", + "buttons__continue": "CONTINUER", + "buttons__details": "DÉTAILS", + "buttons__enable": "ACTIVER", + "buttons__enter": "SAISIR", + "buttons__enter_share": "SAISIR UN FRAGMENT", + "buttons__export": "EXPORTER", + "buttons__format": "FORMAT", + "buttons__go_back": "RETOURNER", + "buttons__hold_to_confirm": "APPUI POUR CONF", + "buttons__info": "INFOS", + "buttons__install": "INSTALLER", + "buttons__more_info": "PLUS D'INFOS", + "buttons__ok_i_understand": "OK, JE COMPRENDS", + "buttons__purchase": "ACHETER", + "buttons__quit": "QUITTER", + "buttons__restart": "REDÉMARRER", + "buttons__retry": "RÉESSAYER", + "buttons__select": "SÉLECTIONNER", + "buttons__set": "DÉFINIR", + "buttons__show_all": "AFFICHER TOUT", + "buttons__show_details": "AFFICHER LES DÉTAILS", + "buttons__show_words": "AFFICHER LES MOTS", + "buttons__skip": "IGNOR", + "buttons__try_again": "RÉESSAYER", + "buttons__turn_off": "DÉSACTIVER", + "buttons__turn_on": "ACTIVER", + "cardano__addr_base": "Base", + "cardano__addr_enterprise": "Entreprise", + "cardano__addr_legacy": "Legacy", + "cardano__addr_pointer": "Pointeur", + "cardano__addr_reward": "Récompense", + "cardano__address_no_staking": "adresse - aucune récompense de staking.", + "cardano__amount_burned_decimals_unknown": "Montant brûlé (décimales inconnues):", + "cardano__amount_minted_decimals_unknown": "Montant frappé (décimales inconnues):", + "cardano__amount_sent_decimals_unknown": "Montant envoyé (décimales inconnues):", + "cardano__anonymous_pool": "Le pool ne contient aucune métadonnée (pool anonyme)", + "cardano__asset_fingerprint": "Empreinte digitale de l'actif:", + "cardano__auxiliary_data_hash": "Hachage de données auxiliaires:", + "cardano__block": "Bloc", + "cardano__catalyst": "Catalyseur", + "cardano__certificate": "Certificat", + "cardano__change_output": "Modifier la sortie", + "cardano__check_all_items": "Vérifiez soigneusement tous les éléments.", + "cardano__choose_level_of_details": "Choisir le niveau de détail:", + "cardano__collateral_input_id": "Identifiant d'entrée de garantie:", + "cardano__collateral_input_index": "Index d'entrée de garantie:", + "cardano__collateral_output_contains_tokens": "La sortie du retour de la garantie contient des jetons.", + "cardano__collateral_return": "Retour de la garantie", + "cardano__confirm": "Confirmer:", + "cardano__confirm_signing_stake_pool": "Confirmez la signature de l'enregistrement du pool de staking en tant que propriétaire.", + "cardano__confirm_transaction": "Confirmer la transaction", + "cardano__confirming_a_multisig_transaction": "Confirmation d'une transaction multisignatures.", + "cardano__confirming_a_plutus_transaction": "Confirmer une transaction Plutus.", + "cardano__confirming_pool_registration": "Confirmation de l'enregistrement du pool en tant que propriétaire.", + "cardano__confirming_transction": "Confirmation d'une transaction.", + "cardano__cost": "Coût", + "cardano__credential_mismatch": "L'identifiant ne correspond pas à l'identifiant de paiement.", + "cardano__datum_hash": "Hash de Datum:", + "cardano__delegating_to": "Délégation à:", + "cardano__for_account_and_index_template": "pour le compte {} et index {}:", + "cardano__for_account_template": "pour le compte {}:", + "cardano__for_key_hash": "pour le hachage de clé:", + "cardano__for_script": "pour le script:", + "cardano__inline_datum": "Référence en ligne", + "cardano__input_id": "Identifiant d'entrée:", + "cardano__input_index": "Index d'entrée:", + "cardano__intro_text_change": "L'adresse suivante est une adresse de monnaie. Son", + "cardano__intro_text_owned_by_device": "L'adresse suivante appartient à ce dispositif. Son", + "cardano__intro_text_registration_payment": "L'adresse de paiement pour l'enregistrement de la clé de vote appartient à ce dispositif. Son", + "cardano__key_hash": "hachage de la clé", + "cardano__margin": "Marge", + "cardano__multisig_path": "chemin multisignatures", + "cardano__nested_scripts_template": "Contient {} scripts imbriqués.", + "cardano__network": "Réseau:", + "cardano__no_output_tx": "La transaction n'a pas de sortie, le réseau ne peut pas être vérifié.", + "cardano__nonce": "Nonce:", + "cardano__other": "autres", + "cardano__path": "chemin", + "cardano__pledge": "Nantir", + "cardano__pointer": "pointeur", + "cardano__policy_id": "Identifiant de politique:", + "cardano__pool_metadata_hash": "Hachage des métadonnées du pool:", + "cardano__pool_metadata_url": "URL des métadonnées du pool:", + "cardano__pool_owner": "Propriétaire du pool:", + "cardano__pool_reward_account": "Compte de récompense du pool:", + "cardano__reference_input_id": "Identifiant d'entrée de référence:", + "cardano__reference_input_index": "Index d'entrée de référence:", + "cardano__reference_script": "Script de référence", + "cardano__required_signer": "Signataire requis", + "cardano__reward": "récompense", + "cardano__reward_address": "L'adresse est une adresse de récompense.", + "cardano__reward_eligibility_warning": "Avertissement: l'adresse n'est pas une adresse de paiement, elle n'est pas éligible aux récompenses.", + "cardano__rewards_go_to": "Les récompenses vont à:", + "cardano__script": "script", + "cardano__script_all": "Tous", + "cardano__script_any": "N'importe quel", + "cardano__script_data_hash": "Hachage des données de script:", + "cardano__script_hash": "Hachage du script:", + "cardano__script_invalid_before": "Non valide avant", + "cardano__script_invalid_hereafter": "Non valide par la suite", + "cardano__script_key": "Clé", + "cardano__script_n_of_k": "N sur K", + "cardano__script_reward": "récompense de script", + "cardano__sending": "Envoi", + "cardano__show_simple": "Affichage simplifié", + "cardano__sign_tx_path_template": "Signer la transaction avec {}:", + "cardano__stake_delegation": "Délégation du staking", + "cardano__stake_deregistration": "Annulation de l'enregistrement de la clé de staking", + "cardano__stake_pool_registration": "Enregistrement du pool de staking", + "cardano__stake_pool_registration_pool_id": "Enregistrement du pool de staking\nIdentifiant du pool:", + "cardano__stake_registration": "Enregistrement de la clé de staking", + "cardano__staking_key_for_account": "Clé de staking pour le compte", + "cardano__to_pool": "vers le pool:", + "cardano__token_minting_path": "chemin de frappe de jetons", + "cardano__total_collateral": "Garantie totale:", + "cardano__transaction": "Transaction", + "cardano__transaction_contains_minting_or_burning": "La transaction contient de la frappe ou du brûlage de jetons.", + "cardano__transaction_contains_script_address_no_datum": "La sortie de la transaction suivante contient une adresse de script, mais ne contient pas de référence.", + "cardano__transaction_fee": "Frais de transaction:", + "cardano__transaction_id": "Identifiant de transaction:", + "cardano__transaction_no_collateral_input": "La transaction ne contient aucune entrée de garantie. Le script Plutus ne pourra pas être exécuté.", + "cardano__transaction_no_script_data_hash": "La transaction ne contient aucun hachage de données de script. Le script Plutus ne pourra pas être exécuté.", + "cardano__transaction_output_contains_tokens": "La sortie de transaction suivante contient des jetons.", + "cardano__ttl": "Durée de vie:", + "cardano__unknown_collateral_amount": "Montant de garantie inconnu.", + "cardano__unusual_path": "Le chemin est inhabituel.", + "cardano__valid_since": "Valide depuis:", + "cardano__verify_script": "Vérifier le script", + "cardano__vote_key_registration": "Enregistrement de la clé de vote (CIP-36)", + "cardano__vote_public_key": "Clé publique de vote:", + "cardano__voting_purpose": "Objectif du vote:", + "cardano__warning": "Avertissement", + "cardano__weight": "Poids:", + "cardano__withdrawal_for_address_template": "Confirmer le retrait pour l'adresse de {}:", + "cardano__x_of_y_signatures_template": "Nécessite {} signatures sur {}.", + "coinjoin__access_account": "Accéder à votre compte Coinjoin?", + "coinjoin__do_not_disconnect": "Ne déconnectez pas votre Trezor!", + "coinjoin__max_mining_fee": "Frais de minage maximum:", + "coinjoin__max_rounds": "Nombre maximum de tours:", + "coinjoin__title": "AUTORISER COINJOIN", + "coinjoin__title_do_not_disconnect": "NE DÉCONNECTEZ PAS VOTRE TREZOR!", + "coinjoin__title_progress": "COINJOIN EN COURS", + "coinjoin__waiting_for_others": "En attente des autres", + "confirm_total__fee_rate": "Taux des frais:", + "confirm_total__sending_from_account": "Envoi depuis le compte:", + "confirm_total__title_fee": "INFOS SUR LES FRAIS", + "confirm_total__title_sending_from": "ENVOI DEPUIS", + "debug__loading_seed": "Chargement de la seed", + "debug__loading_seed_not_recommended": "Le chargement de seed privée n'est pas recommandé.", + "device_name__change_template": "Modifier le nom du dispositif pour {}?", + "device_name__title": "NOM DU DISPOSITIF", + "entropy__send": "Voulez-vous vraiment envoyer l'entropie?", + "entropy__title": "ENTROPIE INTERNE", + "entropy__title_confirm": "CONFIRMER L'ENTROPIE", + "eos__about_to_sign_template": "Vous êtes sur le point de signer {}.", + "eos__action_name": "Nom de l'action:", + "eos__arbitrary_data": "Données arbitraires", + "eos__buy_ram": "Acheter de la RAM", + "eos__bytes": "Octets:", + "eos__cancel_vote": "Annuler le vote", + "eos__checksum": "Somme de contrôle:", + "eos__code": "Code:", + "eos__contract": "Contrat:", + "eos__cpu": "CPU:", + "eos__creator": "Créateur:", + "eos__delegate": "Déléguer", + "eos__delete_auth": "Supprimer auth.", + "eos__from": "De:", + "eos__link_auth": "Lier auth.", + "eos__memo": "Mémo", + "eos__name": "Nom:", + "eos__net": "NET:", + "eos__new_account": "Nouveau compte", + "eos__owner": "Propriétaire:", + "eos__parent": "Parent:", + "eos__payer": "Payeur:", + "eos__permission": "Autorisation:", + "eos__proxy": "Mandataire:", + "eos__receiver": "Destinataire:", + "eos__refund": "Rembourser", + "eos__requirement": "Exigence:", + "eos__sell_ram": "Vendre Ram", + "eos__sender": "Expéditeur:", + "eos__sign_transaction": "Signer la transaction", + "eos__threshold": "Seuil:", + "eos__to": "À:", + "eos__transfer": "Transfert:", + "eos__type": "Type:", + "eos__undelegate": "Annuler la délégation", + "eos__unlink_auth": "Dissocier auth.", + "eos__update_auth": "Mettre à jour auth.", + "eos__vote_for_producers": "Voter pour les producteurs", + "eos__vote_for_proxy": "Voter pour le mandataire", + "eos__voter": "Votant:", + "ethereum__amount_sent": "Montant envoyé:", + "ethereum__contract": "Contrat:", + "ethereum__data_size_template": "Taille: {} octets", + "ethereum__gas_limit": "Limite de gaz:", + "ethereum__gas_price": "Prix du gaz:", + "ethereum__max_gas_price": "Prix maximum du gaz:", + "ethereum__name_and_version": "Nom et version", + "ethereum__new_contract": "nouveau contrat?", + "ethereum__no_message_field": "Aucun champ de message", + "ethereum__priority_fee": "Frais de priorité:", + "ethereum__show_full_array": "Afficher la liste complète", + "ethereum__show_full_domain": "Afficher le domaine complet", + "ethereum__show_full_message": "Afficher le message complet", + "ethereum__show_full_struct": "Afficher la structure complète", + "ethereum__sign_eip712": "Signer réellement les données EIP-712 saisies?", + "ethereum__title_confirm_data": "CONFIRMER DONNÉES", + "ethereum__title_confirm_domain": "CONFIRMER LE DOMAINE", + "ethereum__title_confirm_message": "CONFIRMER LE MESSAGE", + "ethereum__title_confirm_struct": "CONFIRMER STRUCTURE", + "ethereum__title_confirm_typed_data": "CONFIRMER DONNÉES", + "ethereum__title_signing_address": "ADRESSE DE SIGNATURE", + "ethereum__units_template": "{} unités", + "ethereum__unknown_token": "Jeton inconnu", + "ethereum__valid_signature": "La signature est valide.", + "experimental_mode__enable": "Activer les fonctionnalités expérimentales?", + "experimental_mode__only_for_dev": "Uniquement pour le développement et les tests bêta!", + "experimental_mode__title": "MODE EXPÉRIMENTAL", + "fido__already_registered": "Déjà enregistré", + "fido__device_already_registered": "Ce dispositif est déjà enregistré dans cette application.", + "fido__device_already_registered_with_template": "Ce dispositif est déjà enregistré dans {}.", + "fido__device_not_registered": "Ce dispositif n'est pas enregistré dans cette application.", + "fido__does_not_belong": "L'identifiant que vous essayez d'importer\nn'appartient pas à cet authentificateur.", + "fido__erase_credentials": "effacer tous les identifiants?", + "fido__export_credentials": "Exporter les informations sur les identifiants enregistrées sur ce dispositif?", + "fido__not_registered": "Non enregistré", + "fido__not_registered_with_template": "Ce dispositif n'est pas enregistré dans\n{}.", + "fido__please_enable_pin_protection": "Veuillez activer la protection par code PIN.", + "fido__title_authenticate": "AUTHENTIFIER FIDO2", + "fido__title_import_credential": "IMPORTER IDENTIFIANT", + "fido__title_list_credentials": "LISTER IDENTIFIANTS", + "fido__title_register": "ENREGISTRER FIDO2", + "fido__title_remove_credential": "SUPPR. IDENTIFIANT", + "fido__title_reset": "FIDO2 RESET", + "fido__title_u2f_auth": "AUTHENTIFIER U2F", + "fido__title_u2f_register": "ENREGISTRER U2F", + "fido__title_verify_user": "VÉRIFIER UTILISATEUR FIDO2", + "fido__unable_to_verify_user": "Impossible de vérifier l'utilisateur.", + "fido__wanna_erase_credentials": "Voulez-vous vraiment effacer tous les identifiants?", + "firmware_update__title": "MISE À JOUR DU FIRMWARE", + "firmware_update__title_fingerprint": "Empreinte digitale FW", + "homescreen__click_to_connect": "Cliquez pour vous connecter", + "homescreen__click_to_unlock": "Cliquez pour déverrouiller", + "homescreen__title_backup_failed": "ÉCHEC SAUVEGARDE", + "homescreen__title_backup_needed": "SAUVEG. NÉCESSAIRE", + "homescreen__title_coinjoin_authorized": "COINJOIN AUTORISÉ", + "homescreen__title_experimental_mode": "MODE EXPÉRIMENTAL", + "homescreen__title_no_usb_connection": "AUCUNE CONNEXION USB", + "homescreen__title_pin_not_set": "CODE PIN NON DÉFINI", + "homescreen__title_seedless": "SANS SEED", + "homescreen__title_set": "DÉF. ÉCRAN D'ACCUEIL", + "inputs__back": "RETOUR", + "inputs__cancel": "ANNULER", + "inputs__delete": "SUPPRIMER", + "inputs__enter": "SAISIR", + "inputs__return": "RETOUR", + "inputs__show": "AFFICHER", + "inputs__space": "ESPACE", + "joint__title": "TRANSACTION COMMUNE", + "joint__to_the_total_amount": "Au montant total:", + "joint__you_are_contributing": "Votre contribution:", + "language__change_to": "Changer de langue en {} ?", + "language__changed": "Langue changée avec succès", + "language__progress": "Changement de langue en cours", + "language__title": "PARAMÈTRES DE LANGUE", + "lockscreen__tap_to_connect": "Appuyez pour vous connecter", + "lockscreen__tap_to_unlock": "Appuyez pour déverrouiller", + "lockscreen__title_locked": "VERROUILLÉ", + "lockscreen__title_not_connected": "NON CONNECTÉ", + "misc__decrypt_value": "Déchiffrer la valeur", + "misc__encrypt_value": "Chiffrer la valeur", + "misc__title_suite_labeling": "ÉTIQUETAGE DE SUITE", + "modify_amount__decrease_amount": "Diminuer le montant de:", + "modify_amount__increase_amount": "Augmenter le montant de:", + "modify_amount__new_amount": "Nouveau montant:", + "modify_amount__title": "MODIFIER LE MONTANT", + "modify_fee__decrease_fee": "Réduire les frais de:", + "modify_fee__fee_rate": "Taux des frais:", + "modify_fee__increase_fee": "Augmenter les frais de:", + "modify_fee__new_transaction_fee": "Nouveaux frais de transaction:", + "modify_fee__no_change": "Vos frais n'ont pas changé.", + "modify_fee__title": "MODIFIER LES FRAIS", + "modify_fee__transaction_fee": "Frais de transaction:", + "monero__confirm_export": "Confirmer l'exportation", + "monero__confirm_ki_sync": "Confirmer sync IC", + "monero__confirm_refresh": "Confirmer l'actualisation", + "monero__confirm_unlock_time": "Confirmer l'heure de déverrouillage", + "monero__hashing_inputs": "Hachage des entrées", + "monero__payment_id": "Identifiant de paiement", + "monero__postprocessing": "Post-traitement en cours", + "monero__processing": "Traitement en cours", + "monero__processing_inputs": "Traitement des entrées", + "monero__processing_outputs": "Traitement des sorties", + "monero__signing": "Signature en cours", + "monero__signing_inputs": "Signature des entrées", + "monero__unlock_time_set_template": "L'heure de déverrouillage de cette transaction est fixée à {}", + "monero__wanna_export_tx_der": "Voulez-vous vraiment exporter tx_der\npour tx_proof?", + "monero__wanna_export_tx_key": "Voulez-vous vraiment exporter tx_key?", + "monero__wanna_export_watchkey": "Voulez-vous vraiment exporter les identifiants Watch Only?", + "monero__wanna_start_refresh": "Voulez-vous vraiment\ndémarrer l'actualisation?", + "monero__wanna_sync_key_images": "Voulez-vous vraiment\nsynchroniser les images clés?", + "nem__absolute": "absolu", + "nem__activate": "Activer", + "nem__add": "Ajouter", + "nem__confirm_action": "Confirmer l'action", + "nem__confirm_address": "Confirmer l'adresse", + "nem__confirm_creation_fee": "Confirmer les frais de création", + "nem__confirm_mosaic": "Confirmer la mosaïque", + "nem__confirm_multisig_fee": "Confirmer les frais de multisignatures", + "nem__confirm_namespace": "Confirmer l'espace de noms", + "nem__confirm_payload": "Confirmer la charge utile", + "nem__confirm_properties": "Confirmer les propriétés", + "nem__confirm_rental_fee": "Confirmer les frais de location", + "nem__confirm_transfer_of": "Confirmer le transfert de", + "nem__convert_account_to_multisig": "Convertir le compte en compte multisignatures?", + "nem__cosign_transaction_for": "Cosigner la transaction pour", + "nem__cosignatory": " cosignataire", + "nem__create_mosaic": "Créer une mosaïque", + "nem__create_namespace": "Créer un espace de noms", + "nem__deactivate": "Désactiver", + "nem__decrease": "Diminuer", + "nem__description": "Description:", + "nem__divisibility_and_levy_cannot_be_shown": "La divisibilité et le prélèvement ne peuvent pas être affichés pour les mosaïques inconnues.", + "nem__encrypted": "Chiffré:", + "nem__final_confirm": "Confirmation finale", + "nem__immutable": "non modifiable", + "nem__increase": "Augmenter", + "nem__initial_supply": "Offre initiale:", + "nem__initiate_transaction_for": "Initier une transaction pour", + "nem__levy_divisibility": "Divisibilité du prélèvement:", + "nem__levy_fee": "Frais de prélèvement:", + "nem__levy_fee_of": "Prélever des frais de", + "nem__levy_mosaic": "Mosaïque de prélèvement:", + "nem__levy_namespace": "Espace de noms du prélèvement:", + "nem__levy_recipient": "Bénéficiaire du prélèvement:", + "nem__levy_type": "Type de prélèvement:", + "nem__modify_supply_for": "Modifier l'offre pour", + "nem__modify_the_number_of_cosignatories_by": "Modifier le nombre de cosignataires par ", + "nem__mutable": "modifiable", + "nem__of": "de", + "nem__percentile": "centile", + "nem__raw_units_template": "{} unités brutes", + "nem__remote_harvesting": " récolte à distance?", + "nem__remove": "Supprimer", + "nem__set_minimum_cosignatories_to": "Définir le nombre minimum de cosignataires sur ", + "nem__sign_tx_fee_template": "Signer cette transaction\net payer {}\npour les frais de réseau?", + "nem__supply_change": "Modification de l'offre", + "nem__supply_units_template": "{} l'offre de {} unités complètes?", + "nem__transferable": "Transférable?", + "nem__under_namespace": "sous l'espace de noms", + "nem__unencrypted": "Non chiffré:", + "nem__unknown_mosaic": "Mosaïque inconnue!", + "passphrase__access_hidden_wallet": "Accéder au portefeuille masqué?", + "passphrase__always_on_device": "Voulez-vous vraiment saisir la phrase secrète toujours sur le dispositif?", + "passphrase__from_host_not_shown": "La phrase secrète fournie par l'hôte sera utilisée, mais ne sera pas affichée en raison des paramètres du dispositif.", + "passphrase__hidden_wallet": "Portefeuille masqué", + "passphrase__hide": "Masquer la phrase secrète provenant de l'hôte?", + "passphrase__next_screen_will_show_passphrase": "La phrase secrète s'affichera à l'écran suivant.", + "passphrase__please_enter": "Veuillez saisir votre phrase secrète.", + "passphrase__revoke_on_device": "Voulez-vous révoquer la phrase secrète dans les paramètres du dispositif?", + "passphrase__title_confirm": "CONFIRM PHRASE SECR.", + "passphrase__title_enter": "SAISIR PHRASE SECR.", + "passphrase__title_hide": "MASQ. PHRASE SECRÈTE", + "passphrase__title_settings": "PARAM DE PHRA. SECR.", + "passphrase__title_source": "SOURCE PHRASE SECR.", + "passphrase__turn_off": "Désactiver la protection par phrase secrète?", + "passphrase__turn_on": "Activer la protection par phrase secrète?", + "pin__change": "Modifier le code PIN?", + "pin__changed": "Code PIN modifié.", + "pin__cursor_will_change": "La position du curseur change entre les entrées pour plus de sécurité.", + "pin__diff_from_wipe_code": "Le code PIN doit être différent de code d'effacement.", + "pin__disabled": "Protection par code PIN\ndésactivée.", + "pin__enabled": "Protection par code PIN\nactivée.", + "pin__enter": "Saisir le code PIN", + "pin__enter_new": "Saisissez un nouveau code PIN", + "pin__entered_not_valid": "La broche que vous avez entrée n'est pas valide.", + "pin__info": "Un code PIN sera nécessaire pour accéder à ce dispositif.", + "pin__invalid_pin": "Le code PIN saisi n'est pas valide.", + "pin__last_attempt": "Dernière tentative", + "pin__mismatch": "Les codes PIN saisis ne correspondent pas!", + "pin__pin_mismatch": "Non-concordance", + "pin__please_check_again": "Veuillez vérifier à nouveau.", + "pin__reenter_new": "Saisissez à nouveau le nouveau code PIN", + "pin__reenter_to_confirm": "Veuillez saisir à nouveau le code PIN pour confirmer.", + "pin__should_be_long": "Le code PIN doit être composé de 4 à 50 chiffres.", + "pin__title_check_pin": "VÉRIFIER CODE PIN", + "pin__title_settings": "PARAM DU CODE PIN", + "pin__title_wrong_pin": "MAUVAIS CODE PIN", + "pin__tries_left": "tentatives restantes", + "pin__turn_off": "Voulez-vous vraiment désactiver la protection par code PIN?", + "pin__turn_on": "Activer la protection par code PIN?", + "pin__wrong_pin": "Mauvais code PIN", + "plurals__contains_x_keys": "clé|clés", + "plurals__lock_after_x_hours": "heure|heures", + "plurals__lock_after_x_milliseconds": "millisecondes|millisecondes", + "plurals__lock_after_x_minutes": "minute|minutes", + "plurals__lock_after_x_seconds": "deuxième|secondes", + "plurals__sign_x_actions": "Action|Actions", + "plurals__transaction_of_x_operations": "Fonctionnement|Opérations", + "plurals__x_groups_needed": "groupe|groupes", + "plurals__x_shares_needed": "actions|actions", + "progress__authenticity_check": "Vérification de l'authenticité...", + "progress__done": "Terminé", + "progress__loading_transaction": "Chargement de la transaction en cours", + "progress__locking_device": "Verrouiller l'appareil...", + "progress__one_second_left": "1 seconde restante", + "progress__please_wait": "VEUILLEZ PATIENTER", + "progress__processing": "TRAITEMENT", + "progress__refreshing": "Actualisation en cours", + "progress__signing_transaction": "Signature de la transaction en cours", + "progress__syncing": "Synchronisation en cours", + "progress__x_seconds_left_template": "{} secondes restantes", + "reboot_to_bootloader__restart": "Voulez-vous redémarrer Trezor en mode bootloader?", + "reboot_to_bootloader__title": "ACCÉDER BOOTLOADER", + "reboot_to_bootloader__version_by_template": "Version du firmware {}\npar {}", + "recovery__cancel_dry_run": "Annuler la vérification de la sauvegarde", + "recovery__check_dry_run": "Vérifier votre sauvegarde?", + "recovery__cursor_will_change": "La position du curseur change entre les entrées pour plus de sécurité.", + "recovery__dry_run_bip39_valid_match": "La seed de récupération saisie est valide et correspond à celle du dispositif.", + "recovery__dry_run_bip39_valid_mismatch": "La seed de récupération saisie est valide, mais ne correspond pas à celle du dispositif.", + "recovery__dry_run_slip39_valid_match": "Les fragments de récupération saisis sont valides et correspondent à ce qui se trouve actuellement sur le dispositif.", + "recovery__dry_run_slip39_valid_mismatch": "Les fragments de récupération saisis sont valides, mais ne correspondent pas à ce qui se trouve actuellement sur le dispositif.", + "recovery__enter_any_share": "Saisissez n'importe quel fragment", + "recovery__enter_backup": "Saisissez votre sauvegarde.", + "recovery__enter_different_share": "Veuillez saisir un autre fragment.", + "recovery__enter_share_from_diff_group": "Saisissez un fragment d'un autre groupe.", + "recovery__group_num_template": "Groupe {}", + "recovery__group_threshold_reached": "Seuil de groupe atteint.", + "recovery__invalid_seed_entered": "Seed de récupération saisie non valide.", + "recovery__invalid_share_entered": "Fragment de récupération saisi non valide.", + "recovery__more_shares_needed": "Plus de fragments nécessaires", + "recovery__num_of_words": "Sélectionner le nombre de mots dans votre sauvegarde.", + "recovery__only_first_n_letters": "Vous n'aurez qu'à sélectionner les 2 à 4 premières lettres de chaque mot.", + "recovery__progress_will_be_lost": "Toute progression sera perdue.", + "recovery__select_num_of_words": "Sélectionner le nombre de mots dans votre sauvegarde.", + "recovery__share_already_entered": "Fragment déjà saisi.", + "recovery__share_from_another_shamir": "Vous avez saisi un fragment d'une autre sauvegarde Shamir.", + "recovery__share_num_template": "Fragment {}", + "recovery__title": "RÉCUP. PORTEFEUILLE", + "recovery__title_cancel_dry_run": "ANNULER VÉRIF SAUVEG", + "recovery__title_cancel_recovery": "ANNULER LA RÉCUP.", + "recovery__title_dry_run": "VÉRIF. SAUVEGARDE", + "recovery__title_recover": "RÉCUP. PORTEFEUILLE", + "recovery__title_remaining_shares": "FRAGMENTS RESTANTS", + "recovery__type_word_x_of_y_template": "Saisissez le mot {} sur {}", + "recovery__wallet_recovered": "Portefeuille récupéré avec succès", + "recovery__wanna_cancel_dry_run": "Voulez-vous vraiment annuler la vérification de la sauvegarde?", + "recovery__wanna_cancel_recovery": "Voulez-vous vraiment annuler le processus de récupération?", + "recovery__word_count_template": "({} mots)", + "recovery__word_x_of_y_template": "MOT {} SUR {}", + "recovery__x_more_items_starting_template_plural": "{count} Plus {plural} Démarrage", + "recovery__x_more_shares_needed_template_plural": "{count} Plus {plural} nécessaire.", + "recovery__x_of_y_entered_template": "{} fragments sur {} saisis avec succès.", + "recovery__you_have_entered": "Vous avez saisi", + "reset__advanced_group_threshold_info": "Le seuil de groupe détermine le nombre de groupes requis pour récupérer votre portefeuille.", + "reset__all_x_of_y_template": "de l'ensemble des {} fragments sur {}", + "reset__any_x_of_y_template": "de {} fragments sur {}", + "reset__button_create": "CRÉER PORTEFEUILLE", + "reset__button_recover": "RÉCUP. PORTEFEUILLE", + "reset__by_continuing": "En continuant, vous acceptez les conditions générales de la société Trezor.", + "reset__check_backup_title": "VÉRIF. SAUVEGARDE", + "reset__check_group_share_title_template": "VÉRIF G{} - FRAG {}", + "reset__check_seed_title": "VÉRIFIER LA SEED", + "reset__check_share_title_template": "VÉRIF. FRAG. #{}", + "reset__continue_with_next_share": "Continuez avec le fragment suivant.", + "reset__continue_with_share_template": "Continuez avec le fragment nº {}.", + "reset__finished_verifying_group_template": "Vous avez terminé la vérification de vos fragments de récupération pour le groupe {}.", + "reset__finished_verifying_seed": "Vous avez terminé la vérification de votre seed de récupération.", + "reset__finished_verifying_shares": "Vous avez terminé la vérification de vos fragments de récupération.", + "reset__group_description": "Un groupe est composé de fragments de récupération.", + "reset__group_info": "Chaque groupe dispose d'un nombre défini de fragments et d'un seuil spécifique. Dans les étapes suivantes, vous allez définir le nombre de fragments et les seuils.", + "reset__group_share_checked_successfully_template": "Groupe {} - Fragment {} vérifié avec succès.", + "reset__group_share_title_template": "GROUPE {} - FRAG {}", + "reset__more_info_at": "Plus d'informations à l'adresse", + "reset__need_all_share_template": "Pour la récupération, vous avez besoin de l'ensemble des {} fragments.", + "reset__need_any_share_template": "Pour la récupération, vous avez besoin de {} fragments.", + "reset__needed_to_form_a_group": "nécessaire pour former un groupe. ", + "reset__needed_to_recover_your_wallet": "nécessaire pour récupérer votre portefeuille. ", + "reset__never_make_digital_copy": "Ne faites jamais de copie numérique de votre sauvegarde et ne la téléchargez jamais en ligne!", + "reset__num_of_share_holders_template": "{} personnes ou emplacements détiendront chacun un fragment.", + "reset__num_of_shares_advanced_info_template": "Chaque fragment de récupération se compose de 20 mots. Ensuite, vous choisirez le nombre seuil de fragments nécessaires pour former le groupe {}.", + "reset__num_of_shares_basic_info": "Chaque fragment de récupération se compose de 20 mots. Ensuite, vous choisirez le nombre de fragments dont vous avez besoin pour récupérer votre portefeuille.", + "reset__num_shares_for_group_template": "Le nombre de fragments requis pour former le Groupe {}.", + "reset__number_of_shares_info": "= nombre total de listes de mots uniques utilisées pour la sauvegarde du portef.", + "reset__one_share": "1 fragment", + "reset__only_one_share_will_be_created": "Un seul fragment sera créé.", + "reset__recovery_seed_title": "SEED DE RÉCUPÉRATION", + "reset__recovery_share_title_template": "FRAG. DE RÉCUP. #{}", + "reset__required_number_of_groups": "Le nombre de groupes requis pour la récupération.", + "reset__select_correct_word": "Sélectionnez le mot correct pour chaque emplacement.", + "reset__select_word_template": "SÉLECT. {} MOT", + "reset__select_word_x_of_y_template": "Mot {} sur {}:", + "reset__set_it_to_count_template": "Définissez-le sur {} et vous aurez besoin ", + "reset__share_checked_successfully_template": "Le fragment de récupération nº {} a été vérifié avec succès.", + "reset__share_words_title": "SAUVEGARDE STANDARD", + "reset__slip39_checklist_num_groups": "Nombre de groupes", + "reset__slip39_checklist_num_shares": "Nombre de fragments", + "reset__slip39_checklist_set_num_groups": "Définir le nombre de groupes", + "reset__slip39_checklist_set_num_shares": "Définir le nombre d'actions", + "reset__slip39_checklist_set_sizes": "Définir les tailles et les seuils", + "reset__slip39_checklist_set_sizes_longer": "Régler la taille et le seuil pour chaque groupe", + "reset__slip39_checklist_set_threshold": "Définir le seuil", + "reset__slip39_checklist_title": "LISTE CONTR. SAUVEG.", + "reset__slip39_checklist_write_down": "Noter et vérifier tous les fragments", + "reset__slip39_checklist_write_down_recovery": "Notez et vérifiez toutes les parts de récupération", + "reset__the_threshold_sets_the_number_of_shares": "Le seuil définit le nombre de fragments ", + "reset__threshold_info": "= nombre minimum de listes de mots uniques utilisées pour la récupération.", + "reset__title_backup_is_done": "SAUVEGARDE TERMINÉE", + "reset__title_create_wallet": "CRÉER PORTEF.", + "reset__title_create_wallet_shamir": "CRÉER PORT. (SHAMIR)", + "reset__title_group_threshold": "SEUIL DU GROUPE", + "reset__title_number_of_groups": "NOMBRE DE GROUPES", + "reset__title_number_of_shares": "NOMBRE DE FRAGMENTS", + "reset__title_set_group_threshold": "DÉF. SEUIL DE GROUPE", + "reset__title_set_number_of_groups": "DÉF. NOMBRE DE G.", + "reset__title_set_number_of_shares": "DÉF. NOMBRE DE FRAG.", + "reset__title_set_threshold": "DÉFINIR LE SEUIL", + "reset__to_form_group_template": "pour former le groupe {}.", + "reset__tos_link": "trezor.io/tos", + "reset__total_number_of_shares_in_group_template": "Définissez le nombre total de fragments dans le groupe {}.", + "reset__use_your_backup": "Utilisez votre sauvegarde lorsque vous devez récupérer votre portefeuille.", + "reset__write_down_words_template": "Notez les {} mots dans l'ordre.", + "reset__wrong_word_selected": "Mauvais mot sélectionné!", + "reset__you_need_one_share": "Pour la récupération, vous avez besoin de 1 fragment.", + "reset__your_backup_is_done": "Votre sauvegarde est terminée.", + "ripple__confirm_tag": "Confirmer l'étiquette", + "ripple__destination_tag_template": "Étiquette de destination:\n{}", + "rotation__change_template": "Voulez-vous modifier la rotation du dispositif pour {}?", + "rotation__east": "est", + "rotation__north": "nord", + "rotation__south": "sud", + "rotation__title_change": "MODIFIER LA ROTATION", + "rotation__west": "ouest", + "safety_checks__approve_unsafe_always": "Trezor vous permettra d'approuver certaines actions qui pourraient être dangereuses.", + "safety_checks__approve_unsafe_temporary": "Trezor vous permettra temporairement d'approuver certaines actions qui pourraient être dangereuses.", + "safety_checks__enforce_strict": "Voulez-vous vraiment appliquer des contrôles de sécurité rigoureux (recommandé)?", + "safety_checks__title": "CONTRÔLES DE SÉCU.", + "safety_checks__title_safety_override": "CONTOURNEMENT SÉCU.", + "sd_card__all_data_will_be_lost": "Toutes les données sur la carte SD seront perdues.", + "sd_card__card_required": "Carte SD requise.", + "sd_card__disable": "Voulez-vous vraiment supprimer la protection par carte SD de votre dispositif?", + "sd_card__disabled": "Vous avez désactivé la protection par carte SD.", + "sd_card__enable": "Voulez-vous vraiment sécuriser votre dispositif avec la protection par carte SD?", + "sd_card__enabled": "Vous avez activé la protection par carte SD.", + "sd_card__error": "Erreur de carte SD", + "sd_card__format_card": "Formater la carte SD", + "sd_card__insert_correct_card": "Veuillez insérer la carte SD appropriée pour ce dispositif.", + "sd_card__please_insert": "Veuillez insérer votre carte SD.", + "sd_card__please_unplug_and_insert": "Veuillez débrancher le dispositif et insérer votre carte SD.", + "sd_card__problem_accessing": "Un problème est survenu lors de l'accès à la carte SD.", + "sd_card__refresh": "Voulez-vous vraiment remplacer le code secret actuel de la carte SD par un nouveau code secret?", + "sd_card__refreshed": "Vous avez actualisé la protection par carte SD.", + "sd_card__restart": "Voulez-vous redémarrer Trezor en mode bootloader?", + "sd_card__title": "PROTEC. PAR CARTE SD", + "sd_card__title_problem": "PROBLÈME DE CARTE SD", + "sd_card__unknown_filesystem": "Système de fichiers inconnu", + "sd_card__unplug_and_insert_correct": "Veuillez débrancher le dispositif et insérer la carte SD appropriée.", + "sd_card__use_different_card": "Utilisez une autre carte ou formatez la carte SD pour le système de fichiers FAT32.", + "sd_card__wanna_format": "Voulez-vous vraiment formater la carte SD?", + "sd_card__wrong_sd_card": "Mauvaise carte SD", + "send__address_path": "chemin d'adresse", + "send__confirm_sending": "Confirm_sending", + "send__from_multiple_accounts": "Envoi à partir de plusieurs comptes.", + "send__including_fee": "Frais inclus:", + "send__maximum_fee": "Frais maximum:", + "send__receiving_to_multisig": "Recevoir une adresse multisig.", + "send__title_confirm_sending": "CONFIRMER L'ENVOI", + "send__title_joint_transaction": "TRANSACTION COMMUNE", + "send__title_receiving_to": "Recevoir", + "send__title_sending": "ENVOI", + "send__title_sending_amount": "MONTANT DE L'ENVOI", + "send__title_sending_to": "ENVOI À", + "send__to_the_total_amount": "Au montant total:", + "send__total_amount": "Montant total:", + "send__transaction_id": "Identifiant de transaction:", + "send__you_are_contributing": "Votre contribution:", + "share_words__words_in_order": " mots dans l'ordre.", + "share_words__wrote_down_all": "J'ai noté tous les ", + "sign_message__bytes_template": "{} Octets", + "sign_message__confirm_address": "ADRESSE DE SIGNATURE", + "sign_message__confirm_message": "CONFIRMER LE MESSAGE", + "sign_message__message_size": "Taille du message:", + "sign_message__verify_address": "Vérifier l'adresse", + "solana__account_index": "Indice du compte", + "solana__associated_token_account": "Compte de jeton associé", + "solana__confirm_multisig": "Confirmer Multisig", + "solana__expected_fee": "Frais attendus", + "solana__instruction_accounts_template": "L'instruction contient des comptes {} et ses données sont {} octets longs.", + "solana__instruction_data": "Données d'instructions", + "solana__instruction_is_multisig": "L'instruction suivante est une instruction multisig.", + "solana__is_provided_via_lookup_table_template": "{} est fourni via une table de recherche.", + "solana__lookup_table_address": "Adresse de table de recherche", + "solana__multiple_signers": "Signataires multiples", + "solana__token_address": "Adresse de jeton", + "solana__transaction_contains_unknown_instructions": "La transaction contient des instructions inconnues.", + "solana__transaction_requires_x_signers_template": "La transaction nécessite des signataires {} qui augmentent les frais.", + "stellar__account_merge": "Fusion de comptes", + "stellar__account_thresholds": "Seuils de compte", + "stellar__add_signer": "Ajouter un signataire", + "stellar__add_trust": "Ajouter la confiance", + "stellar__all_will_be_sent_to": "Tous les XLM seront envoyés à:", + "stellar__allow_trust": "Autoriser la confiance", + "stellar__asset": "Actif", + "stellar__balance_id": "Équilibrez ID", + "stellar__bump_sequence": "Séquence de bump", + "stellar__buying": "Achat:", + "stellar__claim_claimable_balance": "Réclamer un solde réclamation", + "stellar__clear_data": "Effacer les données", + "stellar__clear_flags": "Effacer les indicateurs", + "stellar__confirm_issuer": "Confirmer l'émetteur", + "stellar__confirm_memo": "Confirmer le mémo", + "stellar__confirm_network": "Confirmer le réseau", + "stellar__confirm_operation": "Confirmer l'opération", + "stellar__confirm_stellar": "Confirmer Stellar", + "stellar__confirm_timebounds": "Confirmer les délais", + "stellar__create_account": "Créer un compte", + "stellar__debited_amount": "Montant débité", + "stellar__delete": "Supprimer", + "stellar__delete_passive_offer": "Supprimer l'offre passive", + "stellar__delete_trust": "Supprimer la confiance", + "stellar__destination": "Destination:", + "stellar__exchanges_require_memo": "Important: de nombreuses plateformes d'échange nécessitent un mémo lors du dépôt", + "stellar__final_confirm": "Confirmation finale", + "stellar__hash": "Hachage:", + "stellar__high": "Élevé:", + "stellar__home_domain": "Domaine d'origine", + "stellar__inflation": "Inflation", + "stellar__initial_balance": "Solde initial", + "stellar__initialize_signing_with": "Initialiser la signature avec", + "stellar__issuer_template": "{} émetteur:", + "stellar__key": "Clé:", + "stellar__limit": "Limite:", + "stellar__low": "Faible:", + "stellar__master_weight": "Poids de la clé principale:", + "stellar__medium": "Moyen:", + "stellar__new_offer": "Nouvelle offre", + "stellar__new_passive_offer": "Nouvelle offre passive", + "stellar__no_memo_set": "Aucun mémo défini!", + "stellar__no_restriction": "[aucune restriction]", + "stellar__on_network_template": "La transaction est sur {}", + "stellar__path_pay": "Path Pay", + "stellar__path_pay_at_least": "Path Pay au moins", + "stellar__pay": "Payer:", + "stellar__pay_at_most": "Payer au maximum:", + "stellar__preauth_transaction": "Transaction de pré-authentification:", + "stellar__price_per_template": "Prix par {}:", + "stellar__private_network": "réseau privé", + "stellar__remove_signer": "Supprimer le signataire", + "stellar__revoke_trust": "Révoquer la confiance", + "stellar__selling": "Vente:", + "stellar__set_data": "Définir les données", + "stellar__set_flags": "Définir les indicateurs", + "stellar__set_sequence_to_template": "Définir la séquence sur {}?", + "stellar__sign_tx_count_template": "Signer cette transaction constituée de {}", + "stellar__sign_tx_fee_template": "et payer {}\npour les frais?", + "stellar__source_account": "Compte source:", + "stellar__testnet_network": "réseau Testnet", + "stellar__trusted_account": "Compte de confiance", + "stellar__update": "Mettre à jour", + "stellar__valid_from": "Valide à partir de (UTC)", + "stellar__valid_to": "Valide jusqu'à (UTC)", + "stellar__value_sha256": "Valeur (SHA-256):", + "stellar__wanna_clean_value_key_template": "Voulez-vous effacer la clé de valeur {}?", + "stellar__your_account": " votre compte", + "tezos__baker_address": "Adresse du baker:", + "tezos__balance": "Solde:", + "tezos__ballot": "Bulletin de vote:", + "tezos__confirm_delegation": "Confirmer la délégation", + "tezos__confirm_origination": "Confirmer l'origine", + "tezos__delegator": "Délégant:", + "tezos__proposal": "Proposition", + "tezos__register_delegate": "Enregistrer le délégué", + "tezos__remove_delegation": "Supprimer la délégation", + "tezos__submit_ballot": "Soumettre le bulletin de vote", + "tezos__submit_proposal": "Soumettre une proposition", + "tezos__submit_proposals": "Soumettre des propositions", + "tutorial__middle_click": "Appuyez simultanément sur les boutons gauche et droit pour confirmer.", + "tutorial__press_and_hold": "Appuyez sur le bouton droit et maintenez-le enfoncé pour approuver les opérations.", + "tutorial__ready_to_use": "Vous êtes prêt à\nutiliser Trezor.", + "tutorial__scroll_down": "Appuyez sur le bouton droit pour faire défiler l'écran vers le bas afin de lire tout le contenu lorsque le texte ne tient pas sur un seul écran.\n\rAppuyez sur le...", + "tutorial__sure_you_want_skip": "Êtes-vous sûr de vouloir\nignorer le tutoriel?", + "tutorial__title_hello": "BONJOUR", + "tutorial__title_screen_scroll": "DÉFILEMENT ÉCRAN", + "tutorial__title_skip": "IGNORER LE TUTORIEL", + "tutorial__title_tutorial_complete": "TUTORIEL TERMINÉ", + "tutorial__use_trezor": "Utilisez Trezor en cliquant sur les boutons. Continuez sur le bouton droit.", + "tutorial__welcome_press_right": "Bienvenue sur Trezor. Appuyez sur le bouton droit pour continuer.", + "u2f__get": "Augmenter et récupérer le compteur U2F?", + "u2f__set_template": "Définir le compteur U2F sur {}?", + "u2f__title_get": "OBTENIR COMPTEUR U2F", + "u2f__title_set": "DÉFINIR COMPTEUR U2F", + "wipe__info": "Toutes les données seront effacées.", + "wipe__title": "EFFACER DISPOSITIF", + "wipe__want_to_wipe": "Voulez-vous vraiment effacer le dispositif?\n", + "wipe_code__change": "Modifier le code d'effacement?", + "wipe_code__changed": "Code d'effacement modifié.", + "wipe_code__diff_from_pin": "Le code d'effacement doit être différent de votre code PIN.\nVeuillez réessayer.", + "wipe_code__disabled": "Code d'effacement désactivé.", + "wipe_code__enabled": "Code d'effacement activé.", + "wipe_code__enter_new": "Saisissez le nouveau code d'effacement", + "wipe_code__info": "Le code peut être utilisé pour effacer toutes les données dispositif.", + "wipe_code__invalid": "Code d'essuyage non valide", + "wipe_code__mismatch": "Les codes d'effacement saisis ne correspondent pas!", + "wipe_code__reenter": "Saisissez à nouveau le code d'effacement", + "wipe_code__reenter_to_confirm": "Veuillez saisir à nouveau le code d'effacement pour confirmer.", + "wipe_code__title_check": "VÉRIF CODE EFFACE.", + "wipe_code__title_invalid": "CODE EFFAC. NON VAL.", + "wipe_code__title_settings": "PARAM CODE EFFAC", + "wipe_code__turn_off": "Désactiver la protection par code d'effacement?", + "wipe_code__turn_on": "Activer la code d'effacement?", + "wipe_code__wipe_code_mismatch": "Effacer le décalage du code", + "word_count__title": "NOMBRE DE MOTS", + "words__account": "Compte", + "words__account_colon": "Compte:", + "words__address": "Adresse", + "words__amount": "Montant", + "words__are_you_sure": "Êtes-vous sûr?", + "words__array_of": "Tableau de", + "words__blockhash": "Blockhash", + "words__buying": "Achat", + "words__confirm": "Confirmer", + "words__confirm_fee": "Confirmer les frais", + "words__contains": "contient", + "words__continue_anyway": "Continuer quand même?", + "words__continue_with": "Continuer avec", + "words__error": "Erreur", + "words__fee": "Frais", + "words__from": "de", + "words__keep_it_safe": "Conservez-la en lieu sûr!", + "words__know_what_your_doing": "Continuez uniquement si vous savez ce que vous faites!", + "words__my_trezor": "Mon Trezor", + "words__no": "Non", + "words__outputs": "sorties", + "words__please_check_again": "Veuillez vérifier à nouveau", + "words__please_try_again": "Veuillez réessayer", + "words__really_wanna": "Voulez-vous vraiment", + "words__recipient": "Destinataire", + "words__sign": "Signer", + "words__signer": "Signataire", + "words__title_check": "VÉRIFIER", + "words__title_group": "GROUPE", + "words__title_information": "INFORMATION", + "words__title_remember": "RAPPEL", + "words__title_share": "FRAGMENT", + "words__title_shares": "FRAGMENTS", + "words__title_success": "RÉUSSITE", + "words__title_summary": "RÉSUMÉ", + "words__title_threshold": "SEUIL", + "words__unknown": "Inconnu", + "words__warning": "Avertissement", + "words__writable": "Scrutin", + "words__yes": "Oui" + } +} diff --git a/core/translations/order.json b/core/translations/order.json new file mode 100644 index 000000000..79ba4519b --- /dev/null +++ b/core/translations/order.json @@ -0,0 +1,835 @@ +{ + "0": "addr_mismatch__contact_support_at", + "1": "addr_mismatch__key_mismatch", + "2": "addr_mismatch__mismatch", + "3": "addr_mismatch__support_url", + "4": "addr_mismatch__wrong_derivation_path", + "5": "addr_mismatch__xpub_mismatch", + "6": "address__public_key", + "7": "address__title_cosigner", + "8": "address__title_receive_address", + "9": "address__title_yours", + "10": "address_details__derivation_path", + "11": "address_details__title_receive_address", + "12": "address_details__title_receiving_to", + "13": "authenticate__confirm_template", + "14": "authenticate__header", + "15": "auto_lock__change_template", + "16": "auto_lock__title", + "17": "backup__can_back_up_anytime", + "18": "backup__it_should_be_backed_up", + "19": "backup__it_should_be_backed_up_now", + "20": "backup__new_wallet_created", + "21": "backup__new_wallet_successfully_created", + "22": "backup__recover_anytime", + "23": "backup__title_backup_wallet", + "24": "backup__title_skip", + "25": "backup__want_to_skip", + "26": "binance__buy", + "27": "binance__confirm_cancel", + "28": "binance__confirm_input", + "29": "binance__confirm_order", + "30": "binance__confirm_output", + "31": "binance__order_id", + "32": "binance__pair", + "33": "binance__price", + "34": "binance__quantity", + "35": "binance__sell", + "36": "binance__sender_address", + "37": "binance__side", + "38": "bitcoin__commitment_data", + "39": "bitcoin__confirm_locktime", + "40": "bitcoin__create_proof_of_ownership", + "41": "bitcoin__high_mining_fee_template", + "42": "bitcoin__locktime_no_effect", + "43": "bitcoin__locktime_set_to", + "44": "bitcoin__locktime_set_to_blockheight", + "45": "bitcoin__lot_of_change_outputs", + "46": "bitcoin__multiple_accounts", + "47": "bitcoin__new_fee_rate", + "48": "bitcoin__simple_send_of", + "49": "bitcoin__ticket_amount", + "50": "bitcoin__title_confirm_details", + "51": "bitcoin__title_finalize_transaction", + "52": "bitcoin__title_high_mining_fee", + "53": "bitcoin__title_meld_transaction", + "54": "bitcoin__title_modify_amount", + "55": "bitcoin__title_payjoin", + "56": "bitcoin__title_proof_of_ownership", + "57": "bitcoin__title_purchase_ticket", + "58": "bitcoin__title_update_transaction", + "59": "bitcoin__unknown_path", + "60": "bitcoin__unknown_transaction", + "61": "bitcoin__unusually_high_fee", + "62": "bitcoin__unverified_external_inputs", + "63": "bitcoin__valid_signature", + "64": "bitcoin__voting_rights", + "65": "buttons__abort", + "66": "buttons__access", + "67": "buttons__again", + "68": "buttons__allow", + "69": "buttons__back", + "70": "buttons__back_up", + "71": "buttons__cancel", + "72": "buttons__change", + "73": "buttons__check", + "74": "buttons__check_again", + "75": "buttons__close", + "76": "buttons__confirm", + "77": "buttons__continue", + "78": "buttons__details", + "79": "buttons__enable", + "80": "buttons__enter", + "81": "buttons__enter_share", + "82": "buttons__export", + "83": "buttons__format", + "84": "buttons__go_back", + "85": "buttons__hold_to_confirm", + "86": "buttons__info", + "87": "buttons__install", + "88": "buttons__more_info", + "89": "buttons__ok_i_understand", + "90": "buttons__purchase", + "91": "buttons__quit", + "92": "buttons__restart", + "93": "buttons__retry", + "94": "buttons__select", + "95": "buttons__set", + "96": "buttons__show_all", + "97": "buttons__show_details", + "98": "buttons__show_words", + "99": "buttons__skip", + "100": "buttons__try_again", + "101": "buttons__turn_off", + "102": "buttons__turn_on", + "103": "cardano__addr_base", + "104": "cardano__addr_enterprise", + "105": "cardano__addr_legacy", + "106": "cardano__addr_pointer", + "107": "cardano__addr_reward", + "108": "cardano__address_no_staking", + "109": "cardano__amount_burned_decimals_unknown", + "110": "cardano__amount_minted_decimals_unknown", + "111": "cardano__amount_sent_decimals_unknown", + "112": "cardano__anonymous_pool", + "113": "cardano__asset_fingerprint", + "114": "cardano__auxiliary_data_hash", + "115": "cardano__block", + "116": "cardano__catalyst", + "117": "cardano__certificate", + "118": "cardano__change_output", + "119": "cardano__check_all_items", + "120": "cardano__choose_level_of_details", + "121": "cardano__collateral_input_id", + "122": "cardano__collateral_input_index", + "123": "cardano__collateral_output_contains_tokens", + "124": "cardano__collateral_return", + "125": "cardano__confirm", + "126": "cardano__confirm_signing_stake_pool", + "127": "cardano__confirm_transaction", + "128": "cardano__confirming_a_multisig_transaction", + "129": "cardano__confirming_a_plutus_transaction", + "130": "cardano__confirming_pool_registration", + "131": "cardano__confirming_transction", + "132": "cardano__cost", + "133": "cardano__credential_mismatch", + "134": "cardano__datum_hash", + "135": "cardano__delegating_to", + "136": "cardano__for_account_and_index_template", + "137": "cardano__for_account_template", + "138": "cardano__for_key_hash", + "139": "cardano__for_script", + "140": "cardano__inline_datum", + "141": "cardano__input_id", + "142": "cardano__input_index", + "143": "cardano__intro_text_change", + "144": "cardano__intro_text_owned_by_device", + "145": "cardano__intro_text_registration_payment", + "146": "cardano__key_hash", + "147": "cardano__margin", + "148": "cardano__multisig_path", + "149": "cardano__nested_scripts_template", + "150": "cardano__network", + "151": "cardano__no_output_tx", + "152": "cardano__nonce", + "153": "cardano__other", + "154": "cardano__path", + "155": "cardano__pledge", + "156": "cardano__pointer", + "157": "cardano__policy_id", + "158": "cardano__pool_metadata_hash", + "159": "cardano__pool_metadata_url", + "160": "cardano__pool_owner", + "161": "cardano__pool_reward_account", + "162": "cardano__reference_input_id", + "163": "cardano__reference_input_index", + "164": "cardano__reference_script", + "165": "cardano__required_signer", + "166": "cardano__reward", + "167": "cardano__reward_address", + "168": "cardano__reward_eligibility_warning", + "169": "cardano__rewards_go_to", + "170": "cardano__script", + "171": "cardano__script_all", + "172": "cardano__script_any", + "173": "cardano__script_data_hash", + "174": "cardano__script_hash", + "175": "cardano__script_invalid_before", + "176": "cardano__script_invalid_hereafter", + "177": "cardano__script_key", + "178": "cardano__script_n_of_k", + "179": "cardano__script_reward", + "180": "cardano__sending", + "181": "cardano__show_simple", + "182": "cardano__sign_tx_path_template", + "183": "cardano__stake_delegation", + "184": "cardano__stake_deregistration", + "185": "cardano__stake_pool_registration", + "186": "cardano__stake_pool_registration_pool_id", + "187": "cardano__stake_registration", + "188": "cardano__staking_key_for_account", + "189": "cardano__to_pool", + "190": "cardano__token_minting_path", + "191": "cardano__total_collateral", + "192": "cardano__transaction", + "193": "cardano__transaction_contains_minting_or_burning", + "194": "cardano__transaction_contains_script_address_no_datum", + "195": "cardano__transaction_fee", + "196": "cardano__transaction_id", + "197": "cardano__transaction_no_collateral_input", + "198": "cardano__transaction_no_script_data_hash", + "199": "cardano__transaction_output_contains_tokens", + "200": "cardano__ttl", + "201": "cardano__unknown_collateral_amount", + "202": "cardano__unusual_path", + "203": "cardano__valid_since", + "204": "cardano__verify_script", + "205": "cardano__vote_key_registration", + "206": "cardano__vote_public_key", + "207": "cardano__voting_purpose", + "208": "cardano__warning", + "209": "cardano__weight", + "210": "cardano__withdrawal_for_address_template", + "211": "cardano__x_of_y_signatures_template", + "212": "coinjoin__access_account", + "213": "coinjoin__do_not_disconnect", + "214": "coinjoin__max_mining_fee", + "215": "coinjoin__max_rounds", + "216": "coinjoin__title", + "217": "coinjoin__title_do_not_disconnect", + "218": "coinjoin__title_progress", + "219": "coinjoin__waiting_for_others", + "220": "confirm_total__fee_rate", + "221": "confirm_total__sending_from_account", + "222": "confirm_total__title_fee", + "223": "confirm_total__title_sending_from", + "224": "debug__loading_seed", + "225": "debug__loading_seed_not_recommended", + "226": "device_name__change_template", + "227": "device_name__title", + "228": "entropy__send", + "229": "entropy__title", + "230": "entropy__title_confirm", + "231": "eos__about_to_sign_template", + "232": "eos__action_name", + "233": "eos__arbitrary_data", + "234": "eos__buy_ram", + "235": "eos__bytes", + "236": "eos__cancel_vote", + "237": "eos__checksum", + "238": "eos__code", + "239": "eos__contract", + "240": "eos__cpu", + "241": "eos__creator", + "242": "eos__delegate", + "243": "eos__delete_auth", + "244": "eos__from", + "245": "eos__link_auth", + "246": "eos__memo", + "247": "eos__name", + "248": "eos__net", + "249": "eos__new_account", + "250": "eos__owner", + "251": "eos__parent", + "252": "eos__payer", + "253": "eos__permission", + "254": "eos__proxy", + "255": "eos__receiver", + "256": "eos__refund", + "257": "eos__requirement", + "258": "eos__sell_ram", + "259": "eos__sender", + "260": "eos__sign_transaction", + "261": "eos__threshold", + "262": "eos__to", + "263": "eos__transfer", + "264": "eos__type", + "265": "eos__undelegate", + "266": "eos__unlink_auth", + "267": "eos__update_auth", + "268": "eos__vote_for_producers", + "269": "eos__vote_for_proxy", + "270": "eos__voter", + "271": "ethereum__amount_sent", + "272": "ethereum__contract", + "273": "ethereum__data_size_template", + "274": "ethereum__gas_limit", + "275": "ethereum__gas_price", + "276": "ethereum__max_gas_price", + "277": "ethereum__name_and_version", + "278": "ethereum__new_contract", + "279": "ethereum__no_message_field", + "280": "ethereum__priority_fee", + "281": "ethereum__show_full_array", + "282": "ethereum__show_full_domain", + "283": "ethereum__show_full_message", + "284": "ethereum__show_full_struct", + "285": "ethereum__sign_eip712", + "286": "ethereum__title_confirm_data", + "287": "ethereum__title_confirm_domain", + "288": "ethereum__title_confirm_message", + "289": "ethereum__title_confirm_struct", + "290": "ethereum__title_confirm_typed_data", + "291": "ethereum__title_signing_address", + "292": "ethereum__units_template", + "293": "ethereum__unknown_token", + "294": "ethereum__valid_signature", + "295": "experimental_mode__enable", + "296": "experimental_mode__only_for_dev", + "297": "experimental_mode__title", + "298": "fido__already_registered", + "299": "fido__device_already_registered", + "300": "fido__device_already_registered_with_template", + "301": "fido__device_not_registered", + "302": "fido__does_not_belong", + "303": "fido__erase_credentials", + "304": "fido__export_credentials", + "305": "fido__not_registered", + "306": "fido__not_registered_with_template", + "307": "fido__please_enable_pin_protection", + "308": "fido__title_authenticate", + "309": "fido__title_import_credential", + "310": "fido__title_list_credentials", + "311": "fido__title_register", + "312": "fido__title_remove_credential", + "313": "fido__title_reset", + "314": "fido__title_u2f_auth", + "315": "fido__title_u2f_register", + "316": "fido__title_verify_user", + "317": "fido__unable_to_verify_user", + "318": "fido__wanna_erase_credentials", + "319": "firmware_update__title", + "320": "firmware_update__title_fingerprint", + "321": "homescreen__click_to_connect", + "322": "homescreen__click_to_unlock", + "323": "homescreen__title_backup_failed", + "324": "homescreen__title_backup_needed", + "325": "homescreen__title_coinjoin_authorized", + "326": "homescreen__title_experimental_mode", + "327": "homescreen__title_no_usb_connection", + "328": "homescreen__title_pin_not_set", + "329": "homescreen__title_seedless", + "330": "homescreen__title_set", + "331": "inputs__back", + "332": "inputs__cancel", + "333": "inputs__delete", + "334": "inputs__enter", + "335": "inputs__return", + "336": "inputs__show", + "337": "inputs__space", + "338": "joint__title", + "339": "joint__to_the_total_amount", + "340": "joint__you_are_contributing", + "341": "language__change_to", + "342": "language__changed", + "343": "language__progress", + "344": "language__title", + "345": "lockscreen__tap_to_connect", + "346": "lockscreen__tap_to_unlock", + "347": "lockscreen__title_locked", + "348": "lockscreen__title_not_connected", + "349": "misc__decrypt_value", + "350": "misc__encrypt_value", + "351": "misc__title_suite_labeling", + "352": "modify_amount__decrease_amount", + "353": "modify_amount__increase_amount", + "354": "modify_amount__new_amount", + "355": "modify_amount__title", + "356": "modify_fee__decrease_fee", + "357": "modify_fee__fee_rate", + "358": "modify_fee__increase_fee", + "359": "modify_fee__new_transaction_fee", + "360": "modify_fee__no_change", + "361": "modify_fee__title", + "362": "modify_fee__transaction_fee", + "363": "monero__confirm_export", + "364": "monero__confirm_ki_sync", + "365": "monero__confirm_refresh", + "366": "monero__confirm_unlock_time", + "367": "monero__hashing_inputs", + "368": "monero__payment_id", + "369": "monero__postprocessing", + "370": "monero__processing", + "371": "monero__processing_inputs", + "372": "monero__processing_outputs", + "373": "monero__signing", + "374": "monero__signing_inputs", + "375": "monero__unlock_time_set_template", + "376": "monero__wanna_export_tx_der", + "377": "monero__wanna_export_tx_key", + "378": "monero__wanna_export_watchkey", + "379": "monero__wanna_start_refresh", + "380": "monero__wanna_sync_key_images", + "381": "nem__absolute", + "382": "nem__activate", + "383": "nem__add", + "384": "nem__confirm_action", + "385": "nem__confirm_address", + "386": "nem__confirm_creation_fee", + "387": "nem__confirm_mosaic", + "388": "nem__confirm_multisig_fee", + "389": "nem__confirm_namespace", + "390": "nem__confirm_payload", + "391": "nem__confirm_properties", + "392": "nem__confirm_rental_fee", + "393": "nem__confirm_transfer_of", + "394": "nem__convert_account_to_multisig", + "395": "nem__cosign_transaction_for", + "396": "nem__cosignatory", + "397": "nem__create_mosaic", + "398": "nem__create_namespace", + "399": "nem__deactivate", + "400": "nem__decrease", + "401": "nem__description", + "402": "nem__divisibility_and_levy_cannot_be_shown", + "403": "nem__encrypted", + "404": "nem__final_confirm", + "405": "nem__immutable", + "406": "nem__increase", + "407": "nem__initial_supply", + "408": "nem__initiate_transaction_for", + "409": "nem__levy_divisibility", + "410": "nem__levy_fee", + "411": "nem__levy_fee_of", + "412": "nem__levy_mosaic", + "413": "nem__levy_namespace", + "414": "nem__levy_recipient", + "415": "nem__levy_type", + "416": "nem__modify_supply_for", + "417": "nem__modify_the_number_of_cosignatories_by", + "418": "nem__mutable", + "419": "nem__of", + "420": "nem__percentile", + "421": "nem__raw_units_template", + "422": "nem__remote_harvesting", + "423": "nem__remove", + "424": "nem__set_minimum_cosignatories_to", + "425": "nem__sign_tx_fee_template", + "426": "nem__supply_change", + "427": "nem__supply_units_template", + "428": "nem__transferable", + "429": "nem__under_namespace", + "430": "nem__unencrypted", + "431": "nem__unknown_mosaic", + "432": "passphrase__access_hidden_wallet", + "433": "passphrase__always_on_device", + "434": "passphrase__from_host_not_shown", + "435": "passphrase__hidden_wallet", + "436": "passphrase__hide", + "437": "passphrase__next_screen_will_show_passphrase", + "438": "passphrase__please_enter", + "439": "passphrase__revoke_on_device", + "440": "passphrase__title_confirm", + "441": "passphrase__title_enter", + "442": "passphrase__title_hide", + "443": "passphrase__title_settings", + "444": "passphrase__title_source", + "445": "passphrase__turn_off", + "446": "passphrase__turn_on", + "447": "pin__change", + "448": "pin__changed", + "449": "pin__cursor_will_change", + "450": "pin__diff_from_wipe_code", + "451": "pin__disabled", + "452": "pin__enabled", + "453": "pin__enter", + "454": "pin__enter_new", + "455": "pin__entered_not_valid", + "456": "pin__info", + "457": "pin__invalid_pin", + "458": "pin__last_attempt", + "459": "pin__mismatch", + "460": "pin__pin_mismatch", + "461": "pin__please_check_again", + "462": "pin__reenter_new", + "463": "pin__reenter_to_confirm", + "464": "pin__should_be_long", + "465": "pin__title_check_pin", + "466": "pin__title_settings", + "467": "pin__title_wrong_pin", + "468": "pin__tries_left", + "469": "pin__turn_off", + "470": "pin__turn_on", + "471": "pin__wrong_pin", + "472": "plurals__contains_x_keys", + "473": "plurals__lock_after_x_hours", + "474": "plurals__lock_after_x_milliseconds", + "475": "plurals__lock_after_x_minutes", + "476": "plurals__lock_after_x_seconds", + "477": "plurals__sign_x_actions", + "478": "plurals__transaction_of_x_operations", + "479": "plurals__x_groups_needed", + "480": "plurals__x_shares_needed", + "481": "progress__authenticity_check", + "482": "progress__done", + "483": "progress__loading_transaction", + "484": "progress__locking_device", + "485": "progress__one_second_left", + "486": "progress__please_wait", + "487": "progress__processing", + "488": "progress__refreshing", + "489": "progress__signing_transaction", + "490": "progress__syncing", + "491": "progress__x_seconds_left_template", + "492": "reboot_to_bootloader__restart", + "493": "reboot_to_bootloader__title", + "494": "reboot_to_bootloader__version_by_template", + "495": "recovery__cancel_dry_run", + "496": "recovery__check_dry_run", + "497": "recovery__cursor_will_change", + "498": "recovery__dry_run_bip39_valid_match", + "499": "recovery__dry_run_bip39_valid_mismatch", + "500": "recovery__dry_run_slip39_valid_match", + "501": "recovery__dry_run_slip39_valid_mismatch", + "502": "recovery__enter_any_share", + "503": "recovery__enter_backup", + "504": "recovery__enter_different_share", + "505": "recovery__enter_share_from_diff_group", + "506": "recovery__group_num_template", + "507": "recovery__group_threshold_reached", + "508": "recovery__invalid_seed_entered", + "509": "recovery__invalid_share_entered", + "510": "recovery__more_shares_needed", + "511": "recovery__num_of_words", + "512": "recovery__only_first_n_letters", + "513": "recovery__progress_will_be_lost", + "514": "recovery__select_num_of_words", + "515": "recovery__share_already_entered", + "516": "recovery__share_from_another_shamir", + "517": "recovery__share_num_template", + "518": "recovery__title", + "519": "recovery__title_cancel_dry_run", + "520": "recovery__title_cancel_recovery", + "521": "recovery__title_dry_run", + "522": "recovery__title_recover", + "523": "recovery__title_remaining_shares", + "524": "recovery__type_word_x_of_y_template", + "525": "recovery__wallet_recovered", + "526": "recovery__wanna_cancel_dry_run", + "527": "recovery__wanna_cancel_recovery", + "528": "recovery__word_count_template", + "529": "recovery__word_x_of_y_template", + "530": "recovery__x_more_items_starting_template_plural", + "531": "recovery__x_more_shares_needed_template_plural", + "532": "recovery__x_of_y_entered_template", + "533": "recovery__you_have_entered", + "534": "reset__advanced_group_threshold_info", + "535": "reset__all_x_of_y_template", + "536": "reset__any_x_of_y_template", + "537": "reset__button_create", + "538": "reset__button_recover", + "539": "reset__by_continuing", + "540": "reset__check_backup_title", + "541": "reset__check_group_share_title_template", + "542": "reset__check_seed_title", + "543": "reset__check_share_title_template", + "544": "reset__continue_with_next_share", + "545": "reset__continue_with_share_template", + "546": "reset__finished_verifying_group_template", + "547": "reset__finished_verifying_seed", + "548": "reset__finished_verifying_shares", + "549": "reset__group_description", + "550": "reset__group_info", + "551": "reset__group_share_checked_successfully_template", + "552": "reset__group_share_title_template", + "553": "reset__more_info_at", + "554": "reset__need_all_share_template", + "555": "reset__need_any_share_template", + "556": "reset__needed_to_form_a_group", + "557": "reset__needed_to_recover_your_wallet", + "558": "reset__never_make_digital_copy", + "559": "reset__num_of_share_holders_template", + "560": "reset__num_of_shares_advanced_info_template", + "561": "reset__num_of_shares_basic_info", + "562": "reset__num_shares_for_group_template", + "563": "reset__number_of_shares_info", + "564": "reset__one_share", + "565": "reset__only_one_share_will_be_created", + "566": "reset__recovery_seed_title", + "567": "reset__recovery_share_title_template", + "568": "reset__required_number_of_groups", + "569": "reset__select_correct_word", + "570": "reset__select_word_template", + "571": "reset__select_word_x_of_y_template", + "572": "reset__set_it_to_count_template", + "573": "reset__share_checked_successfully_template", + "574": "reset__share_words_title", + "575": "reset__slip39_checklist_num_groups", + "576": "reset__slip39_checklist_num_shares", + "577": "reset__slip39_checklist_set_num_groups", + "578": "reset__slip39_checklist_set_num_shares", + "579": "reset__slip39_checklist_set_sizes", + "580": "reset__slip39_checklist_set_sizes_longer", + "581": "reset__slip39_checklist_set_threshold", + "582": "reset__slip39_checklist_title", + "583": "reset__slip39_checklist_write_down", + "584": "reset__slip39_checklist_write_down_recovery", + "585": "reset__the_threshold_sets_the_number_of_shares", + "586": "reset__threshold_info", + "587": "reset__title_backup_is_done", + "588": "reset__title_create_wallet", + "589": "reset__title_create_wallet_shamir", + "590": "reset__title_group_threshold", + "591": "reset__title_number_of_groups", + "592": "reset__title_number_of_shares", + "593": "reset__title_set_group_threshold", + "594": "reset__title_set_number_of_groups", + "595": "reset__title_set_number_of_shares", + "596": "reset__title_set_threshold", + "597": "reset__to_form_group_template", + "598": "reset__tos_link", + "599": "reset__total_number_of_shares_in_group_template", + "600": "reset__use_your_backup", + "601": "reset__write_down_words_template", + "602": "reset__wrong_word_selected", + "603": "reset__you_need_one_share", + "604": "reset__your_backup_is_done", + "605": "ripple__confirm_tag", + "606": "ripple__destination_tag_template", + "607": "rotation__change_template", + "608": "rotation__east", + "609": "rotation__north", + "610": "rotation__south", + "611": "rotation__title_change", + "612": "rotation__west", + "613": "safety_checks__approve_unsafe_always", + "614": "safety_checks__approve_unsafe_temporary", + "615": "safety_checks__enforce_strict", + "616": "safety_checks__title", + "617": "safety_checks__title_safety_override", + "618": "sd_card__all_data_will_be_lost", + "619": "sd_card__card_required", + "620": "sd_card__disable", + "621": "sd_card__disabled", + "622": "sd_card__enable", + "623": "sd_card__enabled", + "624": "sd_card__error", + "625": "sd_card__format_card", + "626": "sd_card__insert_correct_card", + "627": "sd_card__please_insert", + "628": "sd_card__please_unplug_and_insert", + "629": "sd_card__problem_accessing", + "630": "sd_card__refresh", + "631": "sd_card__refreshed", + "632": "sd_card__restart", + "633": "sd_card__title", + "634": "sd_card__title_problem", + "635": "sd_card__unknown_filesystem", + "636": "sd_card__unplug_and_insert_correct", + "637": "sd_card__use_different_card", + "638": "sd_card__wanna_format", + "639": "sd_card__wrong_sd_card", + "640": "send__address_path", + "641": "send__confirm_sending", + "642": "send__from_multiple_accounts", + "643": "send__including_fee", + "644": "send__maximum_fee", + "645": "send__receiving_to_multisig", + "646": "send__title_confirm_sending", + "647": "send__title_joint_transaction", + "648": "send__title_receiving_to", + "649": "send__title_sending", + "650": "send__title_sending_amount", + "651": "send__title_sending_to", + "652": "send__to_the_total_amount", + "653": "send__total_amount", + "654": "send__transaction_id", + "655": "send__you_are_contributing", + "656": "share_words__words_in_order", + "657": "share_words__wrote_down_all", + "658": "sign_message__bytes_template", + "659": "sign_message__confirm_address", + "660": "sign_message__confirm_message", + "661": "sign_message__message_size", + "662": "sign_message__verify_address", + "663": "solana__account_index", + "664": "solana__associated_token_account", + "665": "solana__confirm_multisig", + "666": "solana__expected_fee", + "667": "solana__instruction_accounts_template", + "668": "solana__instruction_data", + "669": "solana__instruction_is_multisig", + "670": "solana__is_provided_via_lookup_table_template", + "671": "solana__lookup_table_address", + "672": "solana__multiple_signers", + "673": "solana__token_address", + "674": "solana__transaction_contains_unknown_instructions", + "675": "solana__transaction_requires_x_signers_template", + "676": "stellar__account_merge", + "677": "stellar__account_thresholds", + "678": "stellar__add_signer", + "679": "stellar__add_trust", + "680": "stellar__all_will_be_sent_to", + "681": "stellar__allow_trust", + "682": "stellar__asset", + "683": "stellar__balance_id", + "684": "stellar__bump_sequence", + "685": "stellar__buying", + "686": "stellar__claim_claimable_balance", + "687": "stellar__clear_data", + "688": "stellar__clear_flags", + "689": "stellar__confirm_issuer", + "690": "stellar__confirm_memo", + "691": "stellar__confirm_network", + "692": "stellar__confirm_operation", + "693": "stellar__confirm_stellar", + "694": "stellar__confirm_timebounds", + "695": "stellar__create_account", + "696": "stellar__debited_amount", + "697": "stellar__delete", + "698": "stellar__delete_passive_offer", + "699": "stellar__delete_trust", + "700": "stellar__destination", + "701": "stellar__exchanges_require_memo", + "702": "stellar__final_confirm", + "703": "stellar__hash", + "704": "stellar__high", + "705": "stellar__home_domain", + "706": "stellar__inflation", + "707": "stellar__initial_balance", + "708": "stellar__initialize_signing_with", + "709": "stellar__issuer_template", + "710": "stellar__key", + "711": "stellar__limit", + "712": "stellar__low", + "713": "stellar__master_weight", + "714": "stellar__medium", + "715": "stellar__new_offer", + "716": "stellar__new_passive_offer", + "717": "stellar__no_memo_set", + "718": "stellar__no_restriction", + "719": "stellar__on_network_template", + "720": "stellar__path_pay", + "721": "stellar__path_pay_at_least", + "722": "stellar__pay", + "723": "stellar__pay_at_most", + "724": "stellar__preauth_transaction", + "725": "stellar__price_per_template", + "726": "stellar__private_network", + "727": "stellar__remove_signer", + "728": "stellar__revoke_trust", + "729": "stellar__selling", + "730": "stellar__set_data", + "731": "stellar__set_flags", + "732": "stellar__set_sequence_to_template", + "733": "stellar__sign_tx_count_template", + "734": "stellar__sign_tx_fee_template", + "735": "stellar__source_account", + "736": "stellar__testnet_network", + "737": "stellar__trusted_account", + "738": "stellar__update", + "739": "stellar__valid_from", + "740": "stellar__valid_to", + "741": "stellar__value_sha256", + "742": "stellar__wanna_clean_value_key_template", + "743": "stellar__your_account", + "744": "tezos__baker_address", + "745": "tezos__balance", + "746": "tezos__ballot", + "747": "tezos__confirm_delegation", + "748": "tezos__confirm_origination", + "749": "tezos__delegator", + "750": "tezos__proposal", + "751": "tezos__register_delegate", + "752": "tezos__remove_delegation", + "753": "tezos__submit_ballot", + "754": "tezos__submit_proposal", + "755": "tezos__submit_proposals", + "756": "tutorial__middle_click", + "757": "tutorial__press_and_hold", + "758": "tutorial__ready_to_use", + "759": "tutorial__scroll_down", + "760": "tutorial__sure_you_want_skip", + "761": "tutorial__title_hello", + "762": "tutorial__title_screen_scroll", + "763": "tutorial__title_skip", + "764": "tutorial__title_tutorial_complete", + "765": "tutorial__use_trezor", + "766": "tutorial__welcome_press_right", + "767": "u2f__get", + "768": "u2f__set_template", + "769": "u2f__title_get", + "770": "u2f__title_set", + "771": "wipe__info", + "772": "wipe__title", + "773": "wipe__want_to_wipe", + "774": "wipe_code__change", + "775": "wipe_code__changed", + "776": "wipe_code__diff_from_pin", + "777": "wipe_code__disabled", + "778": "wipe_code__enabled", + "779": "wipe_code__enter_new", + "780": "wipe_code__info", + "781": "wipe_code__invalid", + "782": "wipe_code__mismatch", + "783": "wipe_code__reenter", + "784": "wipe_code__reenter_to_confirm", + "785": "wipe_code__title_check", + "786": "wipe_code__title_invalid", + "787": "wipe_code__title_settings", + "788": "wipe_code__turn_off", + "789": "wipe_code__turn_on", + "790": "wipe_code__wipe_code_mismatch", + "791": "word_count__title", + "792": "words__account", + "793": "words__account_colon", + "794": "words__address", + "795": "words__amount", + "796": "words__are_you_sure", + "797": "words__array_of", + "798": "words__blockhash", + "799": "words__buying", + "800": "words__confirm", + "801": "words__confirm_fee", + "802": "words__contains", + "803": "words__continue_anyway", + "804": "words__continue_with", + "805": "words__error", + "806": "words__fee", + "807": "words__from", + "808": "words__keep_it_safe", + "809": "words__know_what_your_doing", + "810": "words__my_trezor", + "811": "words__no", + "812": "words__outputs", + "813": "words__please_check_again", + "814": "words__please_try_again", + "815": "words__really_wanna", + "816": "words__recipient", + "817": "words__sign", + "818": "words__signer", + "819": "words__title_check", + "820": "words__title_group", + "821": "words__title_information", + "822": "words__title_remember", + "823": "words__title_share", + "824": "words__title_shares", + "825": "words__title_success", + "826": "words__title_summary", + "827": "words__title_threshold", + "828": "words__unknown", + "829": "words__warning", + "830": "words__writable", + "831": "words__yes", + "832": "reboot_to_bootloader__just_a_moment" +} diff --git a/core/translations/order.py b/core/translations/order.py new file mode 100644 index 000000000..bf24cd15c --- /dev/null +++ b/core/translations/order.py @@ -0,0 +1,37 @@ +from __future__ import annotations +import json + +from pathlib import Path + +HERE = Path(__file__).parent + +language_file = HERE / "en.json" +output_file = HERE / "order.json" + + +def generate_new_order() -> None: + translations = json.loads(language_file.read_text())["translations"] + old_order: dict[str, str] = json.loads(output_file.read_text()) + + old_unique_items: set[str] = set(old_order.values()) + new_unique_items: set[str] = set(translations.keys()) + + new_items = sorted(new_unique_items - old_unique_items) + if new_items: + print("Found new items:") + for item in new_items: + print(item) + + first_update_index = len(old_order) + for index, item in enumerate(new_items): + new_index = str(first_update_index + index) + print(f"Adding {item} to {new_index}") + old_order[new_index] = item + + output_file.write_text(json.dumps(old_order, indent=2) + "\n") + else: + print("No new items found.") + + +if __name__ == "__main__": + generate_new_order() diff --git a/core/translations/signatures.json b/core/translations/signatures.json new file mode 100644 index 000000000..0d126706d --- /dev/null +++ b/core/translations/signatures.json @@ -0,0 +1,9 @@ +{ + "current": { + "merkle_root": "8872d405b7f29dd489d250458b814d8d1008611f3087fc62787d9319f26db9fc", + "signature": null, + "datetime": "2024-02-07T11:21:42.887423", + "commit": "ec3f8c92a35419208485be1a90e5491f89cefdc5" + }, + "history": [] +} diff --git a/docs/ci/jobs.md b/docs/ci/jobs.md index e654ae7c2..817d58002 100644 --- a/docs/ci/jobs.md +++ b/docs/ci/jobs.md @@ -278,6 +278,47 @@ device capable of pushing an actual buttons on the device. ### [hardware legacy btconly device test](https://github.com/trezor/trezor-firmware/blob/master/ci/test-hw.yml#L137) Also device tests on physical Trezor 1 but with Bitcoin-only firmware. +--- +## TEST-NONENGLISH stage - [test-nonenglish.yml](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml) +Tests for non-english languages, that run only nightly +- apart from that, they run also for every branch containing "translations" in its name + +Consists of **16 jobs** below: + +### [core device test czech](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L14) +START_DEVICE_TESTS + +### [core device test french](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L50) + +### [core device test german](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L86) + +### [core device test spanish](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L122) + +### [core device R test czech](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L158) + +### [core device R test french](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L194) + +### [core device R test german](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L230) + +### [core device R test spanish](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L266) + +### [core click test czech](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L306) +START_CLICK_TESTS + +### [core click test french](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L341) + +### [core click test german](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L376) + +### [core click test spanish](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L411) + +### [core click R test czech](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L446) + +### [core click R test french](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L481) + +### [core click R test german](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L516) + +### [core click R test spanish](https://github.com/trezor/trezor-firmware/blob/master/ci/test-nonenglish.yml#L551) + --- ## POSTTEST stage - [posttest.yml](https://github.com/trezor/trezor-firmware/blob/master/ci/posttest.yml) @@ -290,7 +331,7 @@ Consists of **2 jobs** below: --- ## DEPLOY stage - [deploy.yml](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml) -Consists of **13 jobs** below: +Consists of **14 jobs** below: ### [release core fw regular deploy](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml#L5) @@ -314,8 +355,10 @@ Consists of **13 jobs** below: ### [ui tests fixtures deploy](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml#L239) -### [sync emulators to aws](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml#L266) +### [ui tests fixtures deploy nonenglish](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml#L264) + +### [sync emulators to aws](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml#L304) -### [common sync](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml#L292) +### [common sync](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml#L330) --- diff --git a/legacy/firmware/protob/Makefile b/legacy/firmware/protob/Makefile index 06129b1d1..1822c369e 100644 --- a/legacy/firmware/protob/Makefile +++ b/legacy/firmware/protob/Makefile @@ -9,7 +9,8 @@ SKIPPED_MESSAGES := Binance Cardano DebugMonero Eos Monero Ontology Ripple SdPro EthereumSignTypedData EthereumTypedDataStructRequest EthereumTypedDataStructAck \ EthereumTypedDataValueRequest EthereumTypedDataValueAck ShowDeviceTutorial \ UnlockBootloader AuthenticateDevice AuthenticityProof \ - Solana StellarClaimClaimableBalanceOp + Solana StellarClaimClaimableBalanceOp \ + ChangeLanguage TranslationDataRequest TranslationDataAck ifeq ($(BITCOIN_ONLY), 1) SKIPPED_MESSAGES += Ethereum NEM Stellar diff --git a/python/src/trezorlib/_internal/translations.py b/python/src/trezorlib/_internal/translations.py new file mode 100644 index 000000000..809725119 --- /dev/null +++ b/python/src/trezorlib/_internal/translations.py @@ -0,0 +1,347 @@ +from __future__ import annotations + +import json +import typing as t +import unicodedata +from hashlib import sha256 +from pathlib import Path + +import construct as c +from construct_classes import Struct, subcon +from typing_extensions import Self, TypedDict + +from ..firmware.models import Model +from ..models import TrezorModel +from ..tools import EnumAdapter, TupleAdapter + +# All sections need to be aligned to 2 bytes for the offset tables using u16 to work properly +ALIGNMENT = 2 +# "align end of struct" subcon. The builtin c.Aligned does not do the right thing, +# because it assumes that the alignment is relative to the start of the subcon, not the +# start of the whole struct. +# TODO this spelling may or may not align in context of the stream as a whole (as +# opposed to the containing struct). This is prooobably not a problem -- we want the +# top-level alignment to always be ALIGNMENT anyway. But if someone were to use some +# of the structs separately, they might get a surprise. Maybe. Didn't test this. +ALIGN_SUBCON = c.Padding( + lambda ctx: (ALIGNMENT - (ctx._io.tell() % ALIGNMENT)) % ALIGNMENT +) + +JsonFontInfo = t.Dict[str, str] +Order = t.Dict[int, str] +VersionTuple = t.Tuple[int, int, int, int] + + +class JsonHeader(TypedDict): + language: str + version: str + + +class JsonDef(TypedDict): + header: JsonHeader + translations: dict[str, str] + fonts: dict[str, JsonFontInfo] + + +def version_from_json(json_str: str) -> VersionTuple: + version_digits = [int(v) for v in json_str.split(".")] + if len(version_digits) < 4: + version_digits.extend([0] * (4 - len(version_digits))) + return t.cast(VersionTuple, tuple(version_digits)) + + +def _normalize(what: str) -> str: + return unicodedata.normalize("NFKC", what) + + +def offsets_seq(data: t.Iterable[bytes]) -> t.Iterator[int]: + offset = 0 + for item in data: + yield offset + offset += len(item) + yield offset + + +class Header(Struct): + language: str + model: Model + firmware_version: VersionTuple + data_len: int + data_hash: bytes + + # fmt: off + SUBCON = c.Struct( + "magic" / c.Const(b"TR"), + "language" / c.PaddedString(8, "ascii"), # BCP47 language tag + "model" / EnumAdapter(c.Bytes(4), Model), + "firmware_version" / TupleAdapter(c.Int8ul, c.Int8ul, c.Int8ul, c.Int8ul), + "data_len" / c.Int16ul, + "data_hash" / c.Bytes(32), + ALIGN_SUBCON, + c.Terminated, + ) + # fmt: on + + +class Proof(Struct): + merkle_proof: list[bytes] + sigmask: int + signature: bytes + + # fmt: off + SUBCON = c.Struct( + "merkle_proof" / c.PrefixedArray(c.Int8ul, c.Bytes(32)), + "sigmask" / c.Byte, + "signature" / c.Bytes(64), + ALIGN_SUBCON, + c.Terminated, + ) + # fmt: on + + +class BlobTable(Struct): + offsets: list[tuple[int, int]] + data: bytes + + SENTINEL: t.ClassVar[int] = 0xFFFF + + # fmt: off + SUBCON = c.Struct( + "_length" / c.Rebuild(c.Int16ul, c.len_(c.this.offsets) - 1), + "offsets" / c.Array(c.this._length + 1, TupleAdapter(c.Int16ul, c.Int16ul)), + "data" / c.GreedyBytes, + ALIGN_SUBCON, + c.Terminated, + ) + # fmt: on + + @classmethod + def from_items(cls, items: dict[int, bytes]) -> Self: + assert not any(key >= cls.SENTINEL for key in items.keys()) + keys = sorted(items.keys()) + items_sorted = [items[key] for key in keys] + offsets = list(offsets_seq(items_sorted)) + keys.append(cls.SENTINEL) + assert len(keys) == len(offsets) + return cls( + offsets=list(zip(keys, offsets)), + data=b"".join(items_sorted), + ) + + def __len__(self) -> int: + return len(self.offsets) - 1 + + def get(self, id: int) -> bytes | None: + if id == self.SENTINEL: + return None + for key, offset in self.offsets: + if key == id: + return self.data[offset : self.offsets[key + 1][1]] + return None + + +class TranslatedStrings(Struct): + offsets: list[int] + strings: bytes + + # fmt: off + SUBCON = c.Struct( + "_length" / c.Rebuild(c.Int16ul, c.len_(c.this.offsets) - 1), + "offsets" / c.Array(c.this._length + 1, c.Int16ul), + "strings" / c.GreedyBytes, + ALIGN_SUBCON, + c.Terminated, + ) + # fmt: on + + @classmethod + def from_items(cls, items: list[str]) -> Self: + item_bytes = [_normalize(item).encode("utf-8") for item in items] + offsets = list(offsets_seq(item_bytes)) + return cls(offsets=offsets, strings=b"".join(item_bytes)) + + def __len__(self) -> int: + return len(self.offsets) - 1 + + def get(self, idx: int) -> str | None: + if idx >= len(self.offsets) - 1: + return None + return self.strings[self.offsets[idx] : self.offsets[idx + 1]].decode("utf-8") + + +# =========== + + +class Font(BlobTable): + @classmethod + def from_file(cls, file: Path) -> Self: + json_content = json.loads(file.read_text()) + assert all(len(codepoint) == 1 for codepoint in json_content) + raw_content = { + ord(codepoint): bytes.fromhex(data) + for codepoint, data in json_content.items() + } + return cls.from_items(raw_content) + + +class FontsTable(BlobTable): + @classmethod + def from_dir(cls, model_fonts: dict[str, str], font_dir: Path) -> Self: + """Example structure of the font dict: + (The beginning number corresponds to the C representation of each font) + { + "1_FONT_NORMAL": "font_tthoves_regular_21_cs.json", + "2_FONT_BOLD": "font_tthoves_bold_17_cs.json", + "3_FONT_MONO": "font_robotomono_medium_20_cs.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_cs.json" + } + """ + fonts = {} + for font_name, file_name in model_fonts.items(): + if not file_name: + continue + file_path = font_dir / file_name + font_num = int(font_name.split("_")[0]) + try: + fonts[font_num] = Font.from_file(file_path).build() + except Exception as e: + raise ValueError(f"Failed to load font {file_name}") from e + + return cls.from_items(fonts) + + def get_font(self, font_id: int) -> Font | None: + font_bytes = self.get(font_id) + if font_bytes is None: + return None + return Font.parse(font_bytes) + + +# ========= + + +class Payload(Struct): + translations_bytes: bytes + fonts_bytes: bytes + + # fmt: off + SUBCON = c.Struct( + "translations_bytes" / c.Prefixed(c.Int16ul, c.GreedyBytes), + "fonts_bytes" / c.Prefixed(c.Int16ul, c.GreedyBytes), + c.Terminated, + ) + # fmt: on + + +class TranslationsBlob(Struct): + header_bytes: bytes + proof_bytes: bytes + payload: Payload = subcon(Payload) + + # fmt: off + SUBCON = c.Struct( + "magic" / c.Const(b"TRTR00"), + "total_length" / c.Rebuild( + c.Int16ul, + ( + c.len_(c.this.header_bytes) + + c.len_(c.this.proof_bytes) + + c.len_(c.this.payload.translations_bytes) + + c.len_(c.this.payload.fonts_bytes) + + 2 * 4 # sizeof(u16) * number of fields + ) + ), + "_start_offset" / c.Tell, + "header_bytes" / c.Prefixed(c.Int16ul, c.GreedyBytes), + "proof_bytes" / c.Prefixed(c.Int16ul, c.GreedyBytes), + "payload" / Payload.SUBCON, + "_end_offset" / c.Tell, + c.Terminated, + + c.Check(c.this.total_length == c.this._end_offset - c.this._start_offset), + ) + # fmt: on + + @property + def header(self): + return Header.parse(self.header_bytes) + + @property + def proof(self): + return Proof.parse(self.proof_bytes) + + @proof.setter + def proof(self, proof: Proof): + self.proof_bytes = proof.build() + + @property + def translations(self): + return TranslatedStrings.parse(self.payload.translations_bytes) + + @property + def fonts(self): + return FontsTable.parse(self.payload.fonts_bytes) + + def build(self) -> bytes: + assert len(self.header_bytes) % ALIGNMENT == 0 + assert len(self.proof_bytes) % ALIGNMENT == 0 + assert len(self.payload.translations_bytes) % ALIGNMENT == 0 + assert len(self.payload.fonts_bytes) % ALIGNMENT == 0 + return super().build() + + +# ==================== + + +def order_from_json(json_order: dict[str, str]) -> Order: + return {int(k): v for k, v in json_order.items()} + + +def blob_from_defs( + lang_data: JsonDef, + order: Order, + model: TrezorModel, + version: VersionTuple, + fonts_dir: Path, +) -> TranslationsBlob: + json_header: JsonHeader = lang_data["header"] + + # order translations -- python dicts keep insertion order + translations_ordered: list[str] = [ + lang_data["translations"].get(key, "") for _, key in sorted(order.items()) + ] + + translations = TranslatedStrings.from_items(translations_ordered) + + if model.internal_name not in lang_data["fonts"]: + raise ValueError( + f"Model {model.internal_name} not found in header for {json_header['language']} v{json_header['version']}" + ) + + model_fonts = lang_data["fonts"][model.internal_name] + fonts = FontsTable.from_dir(model_fonts, fonts_dir) + + translations_bytes = translations.build() + assert len(translations_bytes) % ALIGNMENT == 0 + fonts_bytes = fonts.build() + assert len(fonts_bytes) % ALIGNMENT == 0 + + payload = Payload( + translations_bytes=translations_bytes, + fonts_bytes=fonts_bytes, + ) + data = payload.build() + + header = Header( + language=json_header["language"], + model=Model.from_trezor_model(model), + firmware_version=version, + data_len=len(data), + data_hash=sha256(data).digest(), + ) + + return TranslationsBlob( + header_bytes=header.build(), + proof_bytes=b"", + payload=payload, + ) diff --git a/python/src/trezorlib/cli/firmware.py b/python/src/trezorlib/cli/firmware.py index b4c47a97d..037ef5dd4 100644 --- a/python/src/trezorlib/cli/firmware.py +++ b/python/src/trezorlib/cli/firmware.py @@ -17,6 +17,7 @@ import os import sys import time +from pathlib import Path from typing import ( TYPE_CHECKING, Any, @@ -618,6 +619,7 @@ def download( @click.option("-v", "--version", help="Which version to download") @click.option("-s", "--skip-check", is_flag=True, help="Do not validate firmware integrity") @click.option("-n", "--dry-run", is_flag=True, help="Perform all steps but do not actually upload the firmware") +@click.option("-l", "--language", help="Language code, blob, or URL") @click.option("--beta", is_flag=True, help="Use firmware from BETA channel") @click.option("--bitcoin-only/--universal", is_flag=True, default=None, help="Download bitcoin-only or universal firmware (defaults to universal)") @click.option("--raw", is_flag=True, help="Push raw firmware data to Trezor") @@ -635,6 +637,7 @@ def update( dry_run: bool, beta: bool, bitcoin_only: Optional[bool], + language: Optional[str], ) -> None: """Upload new firmware to device. @@ -652,6 +655,23 @@ def update( click.echo("You can use only one of: filename, url, version.") sys.exit(1) + language_data = b"" + if language is not None: + if client.features.bootloader_mode: + click.echo("Language data cannot be uploaded in bootloader mode.") + sys.exit(1) + + assert language is not None + try: + language_data = Path(language).read_bytes() + except Exception: + try: + language_data = requests.get(language).content + except Exception: + raise click.ClickException( + f"Failed to load translations from {language}" + ) from None + if filename: firmware_data = filename.read() else: @@ -689,8 +709,13 @@ def update( client, boot_command=messages.BootCommand.INSTALL_UPGRADE, firmware_header=firmware_data[:header_size], + language_data=language_data, ) else: + if language_data: + click.echo( + "WARNING: Seamless installation not possible, language data will not be uploaded." + ) device.reboot_to_bootloader(client) click.echo("Waiting for bootloader...") diff --git a/python/src/trezorlib/cli/settings.py b/python/src/trezorlib/cli/settings.py index 1cd5118ab..24f91ed2a 100644 --- a/python/src/trezorlib/cli/settings.py +++ b/python/src/trezorlib/cli/settings.py @@ -14,11 +14,14 @@ # You should have received a copy of the License along with this library. # If not, see . +from __future__ import annotations + import io from pathlib import Path from typing import TYPE_CHECKING, Optional, cast import click +import requests from .. import device, messages, toif from . import AliasedGroup, ChoiceType, with_client @@ -203,6 +206,38 @@ def label(client: "TrezorClient", label: str) -> str: return device.apply_settings(client, label=label) +@cli.command() +@click.argument("path_or_url", required=False) +@click.option( + "-r", "--remove", is_flag=True, default=False, help="Switch back to english." +) +@click.option("-d/-D", "--display/--no-display", default=None) +@with_client +def language( + client: "TrezorClient", path_or_url: str | None, remove: bool, display: bool | None +) -> str: + """Set new language with translations.""" + if remove != (path_or_url is None): + raise click.ClickException("Either provide a path or URL or use --remove") + + if remove: + language_data = b"" + else: + assert path_or_url is not None + try: + language_data = Path(path_or_url).read_bytes() + except Exception: + try: + language_data = requests.get(path_or_url).content + except Exception: + raise click.ClickException( + f"Failed to load translations from {path_or_url}" + ) from None + return device.change_language( + client, language_data=language_data, show_display=display + ) + + @cli.command() @click.argument("rotation", type=ChoiceType(ROTATION)) @with_client diff --git a/python/src/trezorlib/device.py b/python/src/trezorlib/device.py index 1fa33dea6..41fd08879 100644 --- a/python/src/trezorlib/device.py +++ b/python/src/trezorlib/device.py @@ -14,6 +14,8 @@ # You should have received a copy of the License along with this library. # If not, see . +from __future__ import annotations + import os import time from typing import TYPE_CHECKING, Callable, Optional @@ -63,6 +65,41 @@ def apply_settings( return out +def _send_language_data( + client: "TrezorClient", + request: "messages.TranslationDataRequest", + language_data: bytes, +) -> "MessageType": + response: MessageType = request + while not isinstance(response, messages.Success): + assert isinstance(response, messages.TranslationDataRequest) + data_length = response.data_length + data_offset = response.data_offset + chunk = language_data[data_offset : data_offset + data_length] + response = client.call(messages.TranslationDataAck(data_chunk=chunk)) + + return response + + +@expect(messages.Success, field="message", ret_type=str) +@session +def change_language( + client: "TrezorClient", + language_data: bytes, + show_display: bool | None = None, +) -> "MessageType": + data_length = len(language_data) + msg = messages.ChangeLanguage(data_length=data_length, show_display=show_display) + + response = client.call(msg) + if data_length > 0: + assert isinstance(response, messages.TranslationDataRequest) + response = _send_language_data(client, response, language_data) + assert isinstance(response, messages.Success) + client.refresh_features() # changing the language in features + return response + + @expect(messages.Success, field="message", ret_type=str) @session def apply_flags(client: "TrezorClient", flags: int) -> "MessageType": @@ -242,12 +279,18 @@ def reboot_to_bootloader( client: "TrezorClient", boot_command: messages.BootCommand = messages.BootCommand.STOP_AND_WAIT, firmware_header: Optional[bytes] = None, + language_data: bytes = b"", ) -> "MessageType": - return client.call( + response = client.call( messages.RebootToBootloader( - boot_command=boot_command, firmware_header=firmware_header + boot_command=boot_command, + firmware_header=firmware_header, + language_data_length=len(language_data), ) ) + if isinstance(response, messages.TranslationDataRequest): + response = _send_language_data(client, response, language_data) + return response @session diff --git a/python/src/trezorlib/firmware/models.py b/python/src/trezorlib/firmware/models.py index 24376f364..6b598b533 100644 --- a/python/src/trezorlib/firmware/models.py +++ b/python/src/trezorlib/firmware/models.py @@ -24,6 +24,8 @@ from .util import FirmwareHashParameters if t.TYPE_CHECKING: from typing_extensions import Self + from ..models import TrezorModel + class Model(Enum): T1B1 = b"T1B1" @@ -45,6 +47,10 @@ class Model(Enum): return cls.T2T1 raise ValueError(f"Unknown hardware model: {hw_model}") + @classmethod + def from_trezor_model(cls, trezor_model: "TrezorModel") -> "Self": + return cls(trezor_model.internal_name.encode("ascii")) + def model_keys(self, dev_keys: bool = False) -> "ModelKeys": if dev_keys: model_map = MODEL_MAP_DEV diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 23940e5ff..5fc22ce7e 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -75,6 +75,9 @@ class MessageType(IntEnum): UnlockBootloader = 96 AuthenticateDevice = 97 AuthenticityProof = 98 + ChangeLanguage = 990 + TranslationDataRequest = 991 + TranslationDataAck = 992 SetU2FCounter = 63 GetNextU2FCounter = 80 NextU2FCounter = 81 @@ -3378,6 +3381,54 @@ class ApplySettings(protobuf.MessageType): self.hide_passphrase_from_host = hide_passphrase_from_host +class ChangeLanguage(protobuf.MessageType): + MESSAGE_WIRE_TYPE = 990 + FIELDS = { + 1: protobuf.Field("data_length", "uint32", repeated=False, required=True), + 2: protobuf.Field("show_display", "bool", repeated=False, required=False, default=None), + } + + def __init__( + self, + *, + data_length: "int", + show_display: Optional["bool"] = None, + ) -> None: + self.data_length = data_length + self.show_display = show_display + + +class TranslationDataRequest(protobuf.MessageType): + MESSAGE_WIRE_TYPE = 991 + FIELDS = { + 1: protobuf.Field("data_length", "uint32", repeated=False, required=True), + 2: protobuf.Field("data_offset", "uint32", repeated=False, required=True), + } + + def __init__( + self, + *, + data_length: "int", + data_offset: "int", + ) -> None: + self.data_length = data_length + self.data_offset = data_offset + + +class TranslationDataAck(protobuf.MessageType): + MESSAGE_WIRE_TYPE = 992 + FIELDS = { + 1: protobuf.Field("data_chunk", "bytes", repeated=False, required=True), + } + + def __init__( + self, + *, + data_chunk: "bytes", + ) -> None: + self.data_chunk = data_chunk + + class ApplyFlags(protobuf.MessageType): MESSAGE_WIRE_TYPE = 28 FIELDS = { @@ -3762,6 +3813,7 @@ class RebootToBootloader(protobuf.MessageType): FIELDS = { 1: protobuf.Field("boot_command", "BootCommand", repeated=False, required=False, default=BootCommand.STOP_AND_WAIT), 2: protobuf.Field("firmware_header", "bytes", repeated=False, required=False, default=None), + 3: protobuf.Field("language_data_length", "uint32", repeated=False, required=False, default=0), } def __init__( @@ -3769,9 +3821,11 @@ class RebootToBootloader(protobuf.MessageType): *, boot_command: Optional["BootCommand"] = BootCommand.STOP_AND_WAIT, firmware_header: Optional["bytes"] = None, + language_data_length: Optional["int"] = 0, ) -> None: self.boot_command = boot_command self.firmware_header = firmware_header + self.language_data_length = language_data_length class GetNonce(protobuf.MessageType): diff --git a/rust/trezor-client/src/messages/generated.rs b/rust/trezor-client/src/messages/generated.rs index 6fd14de9f..db5e13217 100644 --- a/rust/trezor-client/src/messages/generated.rs +++ b/rust/trezor-client/src/messages/generated.rs @@ -45,6 +45,9 @@ trezor_message_impl! { UnlockBootloader => MessageType_UnlockBootloader, AuthenticateDevice => MessageType_AuthenticateDevice, AuthenticityProof => MessageType_AuthenticityProof, + ChangeLanguage => MessageType_ChangeLanguage, + TranslationDataRequest => MessageType_TranslationDataRequest, + TranslationDataAck => MessageType_TranslationDataAck, SetU2FCounter => MessageType_SetU2FCounter, GetNextU2FCounter => MessageType_GetNextU2FCounter, NextU2FCounter => MessageType_NextU2FCounter, diff --git a/rust/trezor-client/src/protos/generated/messages.rs b/rust/trezor-client/src/protos/generated/messages.rs index 962a88de5..6983b8a65 100644 --- a/rust/trezor-client/src/protos/generated/messages.rs +++ b/rust/trezor-client/src/protos/generated/messages.rs @@ -120,6 +120,12 @@ pub enum MessageType { MessageType_AuthenticateDevice = 97, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_AuthenticityProof) MessageType_AuthenticityProof = 98, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_ChangeLanguage) + MessageType_ChangeLanguage = 990, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_TranslationDataRequest) + MessageType_TranslationDataRequest = 991, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_TranslationDataAck) + MessageType_TranslationDataAck = 992, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_SetU2FCounter) MessageType_SetU2FCounter = 63, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_GetNextU2FCounter) @@ -565,6 +571,9 @@ impl ::protobuf::Enum for MessageType { 96 => ::std::option::Option::Some(MessageType::MessageType_UnlockBootloader), 97 => ::std::option::Option::Some(MessageType::MessageType_AuthenticateDevice), 98 => ::std::option::Option::Some(MessageType::MessageType_AuthenticityProof), + 990 => ::std::option::Option::Some(MessageType::MessageType_ChangeLanguage), + 991 => ::std::option::Option::Some(MessageType::MessageType_TranslationDataRequest), + 992 => ::std::option::Option::Some(MessageType::MessageType_TranslationDataAck), 63 => ::std::option::Option::Some(MessageType::MessageType_SetU2FCounter), 80 => ::std::option::Option::Some(MessageType::MessageType_GetNextU2FCounter), 81 => ::std::option::Option::Some(MessageType::MessageType_NextU2FCounter), @@ -811,6 +820,9 @@ impl ::protobuf::Enum for MessageType { "MessageType_UnlockBootloader" => ::std::option::Option::Some(MessageType::MessageType_UnlockBootloader), "MessageType_AuthenticateDevice" => ::std::option::Option::Some(MessageType::MessageType_AuthenticateDevice), "MessageType_AuthenticityProof" => ::std::option::Option::Some(MessageType::MessageType_AuthenticityProof), + "MessageType_ChangeLanguage" => ::std::option::Option::Some(MessageType::MessageType_ChangeLanguage), + "MessageType_TranslationDataRequest" => ::std::option::Option::Some(MessageType::MessageType_TranslationDataRequest), + "MessageType_TranslationDataAck" => ::std::option::Option::Some(MessageType::MessageType_TranslationDataAck), "MessageType_SetU2FCounter" => ::std::option::Option::Some(MessageType::MessageType_SetU2FCounter), "MessageType_GetNextU2FCounter" => ::std::option::Option::Some(MessageType::MessageType_GetNextU2FCounter), "MessageType_NextU2FCounter" => ::std::option::Option::Some(MessageType::MessageType_NextU2FCounter), @@ -1056,6 +1068,9 @@ impl ::protobuf::Enum for MessageType { MessageType::MessageType_UnlockBootloader, MessageType::MessageType_AuthenticateDevice, MessageType::MessageType_AuthenticityProof, + MessageType::MessageType_ChangeLanguage, + MessageType::MessageType_TranslationDataRequest, + MessageType::MessageType_TranslationDataAck, MessageType::MessageType_SetU2FCounter, MessageType::MessageType_GetNextU2FCounter, MessageType::MessageType_NextU2FCounter, @@ -1307,200 +1322,203 @@ impl ::protobuf::EnumFull for MessageType { MessageType::MessageType_UnlockBootloader => 43, MessageType::MessageType_AuthenticateDevice => 44, MessageType::MessageType_AuthenticityProof => 45, - MessageType::MessageType_SetU2FCounter => 46, - MessageType::MessageType_GetNextU2FCounter => 47, - MessageType::MessageType_NextU2FCounter => 48, - MessageType::MessageType_Deprecated_PassphraseStateRequest => 49, - MessageType::MessageType_Deprecated_PassphraseStateAck => 50, - MessageType::MessageType_FirmwareErase => 51, - MessageType::MessageType_FirmwareUpload => 52, - MessageType::MessageType_FirmwareRequest => 53, - MessageType::MessageType_SelfTest => 54, - MessageType::MessageType_GetPublicKey => 55, - MessageType::MessageType_PublicKey => 56, - MessageType::MessageType_SignTx => 57, - MessageType::MessageType_TxRequest => 58, - MessageType::MessageType_TxAck => 59, - MessageType::MessageType_GetAddress => 60, - MessageType::MessageType_Address => 61, - MessageType::MessageType_TxAckPaymentRequest => 62, - MessageType::MessageType_SignMessage => 63, - MessageType::MessageType_VerifyMessage => 64, - MessageType::MessageType_MessageSignature => 65, - MessageType::MessageType_GetOwnershipId => 66, - MessageType::MessageType_OwnershipId => 67, - MessageType::MessageType_GetOwnershipProof => 68, - MessageType::MessageType_OwnershipProof => 69, - MessageType::MessageType_AuthorizeCoinJoin => 70, - MessageType::MessageType_CipherKeyValue => 71, - MessageType::MessageType_CipheredKeyValue => 72, - MessageType::MessageType_SignIdentity => 73, - MessageType::MessageType_SignedIdentity => 74, - MessageType::MessageType_GetECDHSessionKey => 75, - MessageType::MessageType_ECDHSessionKey => 76, - MessageType::MessageType_CosiCommit => 77, - MessageType::MessageType_CosiCommitment => 78, - MessageType::MessageType_CosiSign => 79, - MessageType::MessageType_CosiSignature => 80, - MessageType::MessageType_DebugLinkDecision => 81, - MessageType::MessageType_DebugLinkGetState => 82, - MessageType::MessageType_DebugLinkState => 83, - MessageType::MessageType_DebugLinkStop => 84, - MessageType::MessageType_DebugLinkLog => 85, - MessageType::MessageType_DebugLinkMemoryRead => 86, - MessageType::MessageType_DebugLinkMemory => 87, - MessageType::MessageType_DebugLinkMemoryWrite => 88, - MessageType::MessageType_DebugLinkFlashErase => 89, - MessageType::MessageType_DebugLinkLayout => 90, - MessageType::MessageType_DebugLinkReseedRandom => 91, - MessageType::MessageType_DebugLinkRecordScreen => 92, - MessageType::MessageType_DebugLinkEraseSdCard => 93, - MessageType::MessageType_DebugLinkWatchLayout => 94, - MessageType::MessageType_DebugLinkResetDebugEvents => 95, - MessageType::MessageType_EthereumGetPublicKey => 96, - MessageType::MessageType_EthereumPublicKey => 97, - MessageType::MessageType_EthereumGetAddress => 98, - MessageType::MessageType_EthereumAddress => 99, - MessageType::MessageType_EthereumSignTx => 100, - MessageType::MessageType_EthereumSignTxEIP1559 => 101, - MessageType::MessageType_EthereumTxRequest => 102, - MessageType::MessageType_EthereumTxAck => 103, - MessageType::MessageType_EthereumSignMessage => 104, - MessageType::MessageType_EthereumVerifyMessage => 105, - MessageType::MessageType_EthereumMessageSignature => 106, - MessageType::MessageType_EthereumSignTypedData => 107, - MessageType::MessageType_EthereumTypedDataStructRequest => 108, - MessageType::MessageType_EthereumTypedDataStructAck => 109, - MessageType::MessageType_EthereumTypedDataValueRequest => 110, - MessageType::MessageType_EthereumTypedDataValueAck => 111, - MessageType::MessageType_EthereumTypedDataSignature => 112, - MessageType::MessageType_EthereumSignTypedHash => 113, - MessageType::MessageType_NEMGetAddress => 114, - MessageType::MessageType_NEMAddress => 115, - MessageType::MessageType_NEMSignTx => 116, - MessageType::MessageType_NEMSignedTx => 117, - MessageType::MessageType_NEMDecryptMessage => 118, - MessageType::MessageType_NEMDecryptedMessage => 119, - MessageType::MessageType_TezosGetAddress => 120, - MessageType::MessageType_TezosAddress => 121, - MessageType::MessageType_TezosSignTx => 122, - MessageType::MessageType_TezosSignedTx => 123, - MessageType::MessageType_TezosGetPublicKey => 124, - MessageType::MessageType_TezosPublicKey => 125, - MessageType::MessageType_StellarSignTx => 126, - MessageType::MessageType_StellarTxOpRequest => 127, - MessageType::MessageType_StellarGetAddress => 128, - MessageType::MessageType_StellarAddress => 129, - MessageType::MessageType_StellarCreateAccountOp => 130, - MessageType::MessageType_StellarPaymentOp => 131, - MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 132, - MessageType::MessageType_StellarManageSellOfferOp => 133, - MessageType::MessageType_StellarCreatePassiveSellOfferOp => 134, - MessageType::MessageType_StellarSetOptionsOp => 135, - MessageType::MessageType_StellarChangeTrustOp => 136, - MessageType::MessageType_StellarAllowTrustOp => 137, - MessageType::MessageType_StellarAccountMergeOp => 138, - MessageType::MessageType_StellarManageDataOp => 139, - MessageType::MessageType_StellarBumpSequenceOp => 140, - MessageType::MessageType_StellarManageBuyOfferOp => 141, - MessageType::MessageType_StellarPathPaymentStrictSendOp => 142, - MessageType::MessageType_StellarClaimClaimableBalanceOp => 143, - MessageType::MessageType_StellarSignedTx => 144, - MessageType::MessageType_CardanoGetPublicKey => 145, - MessageType::MessageType_CardanoPublicKey => 146, - MessageType::MessageType_CardanoGetAddress => 147, - MessageType::MessageType_CardanoAddress => 148, - MessageType::MessageType_CardanoTxItemAck => 149, - MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 150, - MessageType::MessageType_CardanoTxWitnessRequest => 151, - MessageType::MessageType_CardanoTxWitnessResponse => 152, - MessageType::MessageType_CardanoTxHostAck => 153, - MessageType::MessageType_CardanoTxBodyHash => 154, - MessageType::MessageType_CardanoSignTxFinished => 155, - MessageType::MessageType_CardanoSignTxInit => 156, - MessageType::MessageType_CardanoTxInput => 157, - MessageType::MessageType_CardanoTxOutput => 158, - MessageType::MessageType_CardanoAssetGroup => 159, - MessageType::MessageType_CardanoToken => 160, - MessageType::MessageType_CardanoTxCertificate => 161, - MessageType::MessageType_CardanoTxWithdrawal => 162, - MessageType::MessageType_CardanoTxAuxiliaryData => 163, - MessageType::MessageType_CardanoPoolOwner => 164, - MessageType::MessageType_CardanoPoolRelayParameters => 165, - MessageType::MessageType_CardanoGetNativeScriptHash => 166, - MessageType::MessageType_CardanoNativeScriptHash => 167, - MessageType::MessageType_CardanoTxMint => 168, - MessageType::MessageType_CardanoTxCollateralInput => 169, - MessageType::MessageType_CardanoTxRequiredSigner => 170, - MessageType::MessageType_CardanoTxInlineDatumChunk => 171, - MessageType::MessageType_CardanoTxReferenceScriptChunk => 172, - MessageType::MessageType_CardanoTxReferenceInput => 173, - MessageType::MessageType_RippleGetAddress => 174, - MessageType::MessageType_RippleAddress => 175, - MessageType::MessageType_RippleSignTx => 176, - MessageType::MessageType_RippleSignedTx => 177, - MessageType::MessageType_MoneroTransactionInitRequest => 178, - MessageType::MessageType_MoneroTransactionInitAck => 179, - MessageType::MessageType_MoneroTransactionSetInputRequest => 180, - MessageType::MessageType_MoneroTransactionSetInputAck => 181, - MessageType::MessageType_MoneroTransactionInputViniRequest => 182, - MessageType::MessageType_MoneroTransactionInputViniAck => 183, - MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 184, - MessageType::MessageType_MoneroTransactionAllInputsSetAck => 185, - MessageType::MessageType_MoneroTransactionSetOutputRequest => 186, - MessageType::MessageType_MoneroTransactionSetOutputAck => 187, - MessageType::MessageType_MoneroTransactionAllOutSetRequest => 188, - MessageType::MessageType_MoneroTransactionAllOutSetAck => 189, - MessageType::MessageType_MoneroTransactionSignInputRequest => 190, - MessageType::MessageType_MoneroTransactionSignInputAck => 191, - MessageType::MessageType_MoneroTransactionFinalRequest => 192, - MessageType::MessageType_MoneroTransactionFinalAck => 193, - MessageType::MessageType_MoneroKeyImageExportInitRequest => 194, - MessageType::MessageType_MoneroKeyImageExportInitAck => 195, - MessageType::MessageType_MoneroKeyImageSyncStepRequest => 196, - MessageType::MessageType_MoneroKeyImageSyncStepAck => 197, - MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 198, - MessageType::MessageType_MoneroKeyImageSyncFinalAck => 199, - MessageType::MessageType_MoneroGetAddress => 200, - MessageType::MessageType_MoneroAddress => 201, - MessageType::MessageType_MoneroGetWatchKey => 202, - MessageType::MessageType_MoneroWatchKey => 203, - MessageType::MessageType_DebugMoneroDiagRequest => 204, - MessageType::MessageType_DebugMoneroDiagAck => 205, - MessageType::MessageType_MoneroGetTxKeyRequest => 206, - MessageType::MessageType_MoneroGetTxKeyAck => 207, - MessageType::MessageType_MoneroLiveRefreshStartRequest => 208, - MessageType::MessageType_MoneroLiveRefreshStartAck => 209, - MessageType::MessageType_MoneroLiveRefreshStepRequest => 210, - MessageType::MessageType_MoneroLiveRefreshStepAck => 211, - MessageType::MessageType_MoneroLiveRefreshFinalRequest => 212, - MessageType::MessageType_MoneroLiveRefreshFinalAck => 213, - MessageType::MessageType_EosGetPublicKey => 214, - MessageType::MessageType_EosPublicKey => 215, - MessageType::MessageType_EosSignTx => 216, - MessageType::MessageType_EosTxActionRequest => 217, - MessageType::MessageType_EosTxActionAck => 218, - MessageType::MessageType_EosSignedTx => 219, - MessageType::MessageType_BinanceGetAddress => 220, - MessageType::MessageType_BinanceAddress => 221, - MessageType::MessageType_BinanceGetPublicKey => 222, - MessageType::MessageType_BinancePublicKey => 223, - MessageType::MessageType_BinanceSignTx => 224, - MessageType::MessageType_BinanceTxRequest => 225, - MessageType::MessageType_BinanceTransferMsg => 226, - MessageType::MessageType_BinanceOrderMsg => 227, - MessageType::MessageType_BinanceCancelMsg => 228, - MessageType::MessageType_BinanceSignedTx => 229, - MessageType::MessageType_WebAuthnListResidentCredentials => 230, - MessageType::MessageType_WebAuthnCredentials => 231, - MessageType::MessageType_WebAuthnAddResidentCredential => 232, - MessageType::MessageType_WebAuthnRemoveResidentCredential => 233, - MessageType::MessageType_SolanaGetPublicKey => 234, - MessageType::MessageType_SolanaPublicKey => 235, - MessageType::MessageType_SolanaGetAddress => 236, - MessageType::MessageType_SolanaAddress => 237, - MessageType::MessageType_SolanaSignTx => 238, - MessageType::MessageType_SolanaTxSignature => 239, + MessageType::MessageType_ChangeLanguage => 46, + MessageType::MessageType_TranslationDataRequest => 47, + MessageType::MessageType_TranslationDataAck => 48, + MessageType::MessageType_SetU2FCounter => 49, + MessageType::MessageType_GetNextU2FCounter => 50, + MessageType::MessageType_NextU2FCounter => 51, + MessageType::MessageType_Deprecated_PassphraseStateRequest => 52, + MessageType::MessageType_Deprecated_PassphraseStateAck => 53, + MessageType::MessageType_FirmwareErase => 54, + MessageType::MessageType_FirmwareUpload => 55, + MessageType::MessageType_FirmwareRequest => 56, + MessageType::MessageType_SelfTest => 57, + MessageType::MessageType_GetPublicKey => 58, + MessageType::MessageType_PublicKey => 59, + MessageType::MessageType_SignTx => 60, + MessageType::MessageType_TxRequest => 61, + MessageType::MessageType_TxAck => 62, + MessageType::MessageType_GetAddress => 63, + MessageType::MessageType_Address => 64, + MessageType::MessageType_TxAckPaymentRequest => 65, + MessageType::MessageType_SignMessage => 66, + MessageType::MessageType_VerifyMessage => 67, + MessageType::MessageType_MessageSignature => 68, + MessageType::MessageType_GetOwnershipId => 69, + MessageType::MessageType_OwnershipId => 70, + MessageType::MessageType_GetOwnershipProof => 71, + MessageType::MessageType_OwnershipProof => 72, + MessageType::MessageType_AuthorizeCoinJoin => 73, + MessageType::MessageType_CipherKeyValue => 74, + MessageType::MessageType_CipheredKeyValue => 75, + MessageType::MessageType_SignIdentity => 76, + MessageType::MessageType_SignedIdentity => 77, + MessageType::MessageType_GetECDHSessionKey => 78, + MessageType::MessageType_ECDHSessionKey => 79, + MessageType::MessageType_CosiCommit => 80, + MessageType::MessageType_CosiCommitment => 81, + MessageType::MessageType_CosiSign => 82, + MessageType::MessageType_CosiSignature => 83, + MessageType::MessageType_DebugLinkDecision => 84, + MessageType::MessageType_DebugLinkGetState => 85, + MessageType::MessageType_DebugLinkState => 86, + MessageType::MessageType_DebugLinkStop => 87, + MessageType::MessageType_DebugLinkLog => 88, + MessageType::MessageType_DebugLinkMemoryRead => 89, + MessageType::MessageType_DebugLinkMemory => 90, + MessageType::MessageType_DebugLinkMemoryWrite => 91, + MessageType::MessageType_DebugLinkFlashErase => 92, + MessageType::MessageType_DebugLinkLayout => 93, + MessageType::MessageType_DebugLinkReseedRandom => 94, + MessageType::MessageType_DebugLinkRecordScreen => 95, + MessageType::MessageType_DebugLinkEraseSdCard => 96, + MessageType::MessageType_DebugLinkWatchLayout => 97, + MessageType::MessageType_DebugLinkResetDebugEvents => 98, + MessageType::MessageType_EthereumGetPublicKey => 99, + MessageType::MessageType_EthereumPublicKey => 100, + MessageType::MessageType_EthereumGetAddress => 101, + MessageType::MessageType_EthereumAddress => 102, + MessageType::MessageType_EthereumSignTx => 103, + MessageType::MessageType_EthereumSignTxEIP1559 => 104, + MessageType::MessageType_EthereumTxRequest => 105, + MessageType::MessageType_EthereumTxAck => 106, + MessageType::MessageType_EthereumSignMessage => 107, + MessageType::MessageType_EthereumVerifyMessage => 108, + MessageType::MessageType_EthereumMessageSignature => 109, + MessageType::MessageType_EthereumSignTypedData => 110, + MessageType::MessageType_EthereumTypedDataStructRequest => 111, + MessageType::MessageType_EthereumTypedDataStructAck => 112, + MessageType::MessageType_EthereumTypedDataValueRequest => 113, + MessageType::MessageType_EthereumTypedDataValueAck => 114, + MessageType::MessageType_EthereumTypedDataSignature => 115, + MessageType::MessageType_EthereumSignTypedHash => 116, + MessageType::MessageType_NEMGetAddress => 117, + MessageType::MessageType_NEMAddress => 118, + MessageType::MessageType_NEMSignTx => 119, + MessageType::MessageType_NEMSignedTx => 120, + MessageType::MessageType_NEMDecryptMessage => 121, + MessageType::MessageType_NEMDecryptedMessage => 122, + MessageType::MessageType_TezosGetAddress => 123, + MessageType::MessageType_TezosAddress => 124, + MessageType::MessageType_TezosSignTx => 125, + MessageType::MessageType_TezosSignedTx => 126, + MessageType::MessageType_TezosGetPublicKey => 127, + MessageType::MessageType_TezosPublicKey => 128, + MessageType::MessageType_StellarSignTx => 129, + MessageType::MessageType_StellarTxOpRequest => 130, + MessageType::MessageType_StellarGetAddress => 131, + MessageType::MessageType_StellarAddress => 132, + MessageType::MessageType_StellarCreateAccountOp => 133, + MessageType::MessageType_StellarPaymentOp => 134, + MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 135, + MessageType::MessageType_StellarManageSellOfferOp => 136, + MessageType::MessageType_StellarCreatePassiveSellOfferOp => 137, + MessageType::MessageType_StellarSetOptionsOp => 138, + MessageType::MessageType_StellarChangeTrustOp => 139, + MessageType::MessageType_StellarAllowTrustOp => 140, + MessageType::MessageType_StellarAccountMergeOp => 141, + MessageType::MessageType_StellarManageDataOp => 142, + MessageType::MessageType_StellarBumpSequenceOp => 143, + MessageType::MessageType_StellarManageBuyOfferOp => 144, + MessageType::MessageType_StellarPathPaymentStrictSendOp => 145, + MessageType::MessageType_StellarClaimClaimableBalanceOp => 146, + MessageType::MessageType_StellarSignedTx => 147, + MessageType::MessageType_CardanoGetPublicKey => 148, + MessageType::MessageType_CardanoPublicKey => 149, + MessageType::MessageType_CardanoGetAddress => 150, + MessageType::MessageType_CardanoAddress => 151, + MessageType::MessageType_CardanoTxItemAck => 152, + MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 153, + MessageType::MessageType_CardanoTxWitnessRequest => 154, + MessageType::MessageType_CardanoTxWitnessResponse => 155, + MessageType::MessageType_CardanoTxHostAck => 156, + MessageType::MessageType_CardanoTxBodyHash => 157, + MessageType::MessageType_CardanoSignTxFinished => 158, + MessageType::MessageType_CardanoSignTxInit => 159, + MessageType::MessageType_CardanoTxInput => 160, + MessageType::MessageType_CardanoTxOutput => 161, + MessageType::MessageType_CardanoAssetGroup => 162, + MessageType::MessageType_CardanoToken => 163, + MessageType::MessageType_CardanoTxCertificate => 164, + MessageType::MessageType_CardanoTxWithdrawal => 165, + MessageType::MessageType_CardanoTxAuxiliaryData => 166, + MessageType::MessageType_CardanoPoolOwner => 167, + MessageType::MessageType_CardanoPoolRelayParameters => 168, + MessageType::MessageType_CardanoGetNativeScriptHash => 169, + MessageType::MessageType_CardanoNativeScriptHash => 170, + MessageType::MessageType_CardanoTxMint => 171, + MessageType::MessageType_CardanoTxCollateralInput => 172, + MessageType::MessageType_CardanoTxRequiredSigner => 173, + MessageType::MessageType_CardanoTxInlineDatumChunk => 174, + MessageType::MessageType_CardanoTxReferenceScriptChunk => 175, + MessageType::MessageType_CardanoTxReferenceInput => 176, + MessageType::MessageType_RippleGetAddress => 177, + MessageType::MessageType_RippleAddress => 178, + MessageType::MessageType_RippleSignTx => 179, + MessageType::MessageType_RippleSignedTx => 180, + MessageType::MessageType_MoneroTransactionInitRequest => 181, + MessageType::MessageType_MoneroTransactionInitAck => 182, + MessageType::MessageType_MoneroTransactionSetInputRequest => 183, + MessageType::MessageType_MoneroTransactionSetInputAck => 184, + MessageType::MessageType_MoneroTransactionInputViniRequest => 185, + MessageType::MessageType_MoneroTransactionInputViniAck => 186, + MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 187, + MessageType::MessageType_MoneroTransactionAllInputsSetAck => 188, + MessageType::MessageType_MoneroTransactionSetOutputRequest => 189, + MessageType::MessageType_MoneroTransactionSetOutputAck => 190, + MessageType::MessageType_MoneroTransactionAllOutSetRequest => 191, + MessageType::MessageType_MoneroTransactionAllOutSetAck => 192, + MessageType::MessageType_MoneroTransactionSignInputRequest => 193, + MessageType::MessageType_MoneroTransactionSignInputAck => 194, + MessageType::MessageType_MoneroTransactionFinalRequest => 195, + MessageType::MessageType_MoneroTransactionFinalAck => 196, + MessageType::MessageType_MoneroKeyImageExportInitRequest => 197, + MessageType::MessageType_MoneroKeyImageExportInitAck => 198, + MessageType::MessageType_MoneroKeyImageSyncStepRequest => 199, + MessageType::MessageType_MoneroKeyImageSyncStepAck => 200, + MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 201, + MessageType::MessageType_MoneroKeyImageSyncFinalAck => 202, + MessageType::MessageType_MoneroGetAddress => 203, + MessageType::MessageType_MoneroAddress => 204, + MessageType::MessageType_MoneroGetWatchKey => 205, + MessageType::MessageType_MoneroWatchKey => 206, + MessageType::MessageType_DebugMoneroDiagRequest => 207, + MessageType::MessageType_DebugMoneroDiagAck => 208, + MessageType::MessageType_MoneroGetTxKeyRequest => 209, + MessageType::MessageType_MoneroGetTxKeyAck => 210, + MessageType::MessageType_MoneroLiveRefreshStartRequest => 211, + MessageType::MessageType_MoneroLiveRefreshStartAck => 212, + MessageType::MessageType_MoneroLiveRefreshStepRequest => 213, + MessageType::MessageType_MoneroLiveRefreshStepAck => 214, + MessageType::MessageType_MoneroLiveRefreshFinalRequest => 215, + MessageType::MessageType_MoneroLiveRefreshFinalAck => 216, + MessageType::MessageType_EosGetPublicKey => 217, + MessageType::MessageType_EosPublicKey => 218, + MessageType::MessageType_EosSignTx => 219, + MessageType::MessageType_EosTxActionRequest => 220, + MessageType::MessageType_EosTxActionAck => 221, + MessageType::MessageType_EosSignedTx => 222, + MessageType::MessageType_BinanceGetAddress => 223, + MessageType::MessageType_BinanceAddress => 224, + MessageType::MessageType_BinanceGetPublicKey => 225, + MessageType::MessageType_BinancePublicKey => 226, + MessageType::MessageType_BinanceSignTx => 227, + MessageType::MessageType_BinanceTxRequest => 228, + MessageType::MessageType_BinanceTransferMsg => 229, + MessageType::MessageType_BinanceOrderMsg => 230, + MessageType::MessageType_BinanceCancelMsg => 231, + MessageType::MessageType_BinanceSignedTx => 232, + MessageType::MessageType_WebAuthnListResidentCredentials => 233, + MessageType::MessageType_WebAuthnCredentials => 234, + MessageType::MessageType_WebAuthnAddResidentCredential => 235, + MessageType::MessageType_WebAuthnRemoveResidentCredential => 236, + MessageType::MessageType_SolanaGetPublicKey => 237, + MessageType::MessageType_SolanaPublicKey => 238, + MessageType::MessageType_SolanaGetAddress => 239, + MessageType::MessageType_SolanaAddress => 240, + MessageType::MessageType_SolanaSignTx => 241, + MessageType::MessageType_SolanaTxSignature => 242, }; Self::enum_descriptor().value_by_index(index) } @@ -1550,7 +1568,7 @@ pub mod exts { static file_descriptor_proto_data: &'static [u8] = b"\ \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\x20google/protobuf/de\ - scriptor.proto*\x8bS\n\x0bMessageType\x12(\n\x16MessageType_Initialize\ + scriptor.proto*\x98T\n\x0bMessageType\x12(\n\x16MessageType_Initialize\ \x10\0\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\x90\xb5\x18\x01\x12\x1e\n\ \x10MessageType_Ping\x10\x01\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12\ %\n\x13MessageType_Success\x10\x02\x1a\x0c\x80\xa6\x1d\x01\xa8\xb5\x18\ @@ -1605,115 +1623,119 @@ static file_descriptor_proto_data: &'static [u8] = b"\ ockBootloader\x10`\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1eMes\ sageType_AuthenticateDevice\x10a\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\ \x12+\n\x1dMessageType_AuthenticityProof\x10b\x1a\x08\x80\xa6\x1d\x01\ - \x90\xb5\x18\x01\x12#\n\x19MessageType_SetU2FCounter\x10?\x1a\x04\x90\ - \xb5\x18\x01\x12'\n\x1dMessageType_GetNextU2FCounter\x10P\x1a\x04\x90\ - \xb5\x18\x01\x12$\n\x1aMessageType_NextU2FCounter\x10Q\x1a\x04\x98\xb5\ - \x18\x01\x125\n-MessageType_Deprecated_PassphraseStateRequest\x10M\x1a\ - \x02\x08\x01\x121\n)MessageType_Deprecated_PassphraseStateAck\x10N\x1a\ - \x02\x08\x01\x12+\n\x19MessageType_FirmwareErase\x10\x06\x1a\x0c\xb8\xb5\ - \x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1aMessageType_FirmwareU\ - pload\x10\x07\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\ - \x12-\n\x1bMessageType_FirmwareRequest\x10\x08\x1a\x0c\xb8\xb5\x18\x01\ - \x80\xa6\x1d\x01\x98\xb5\x18\x01\x12&\n\x14MessageType_SelfTest\x10\x20\ - \x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12&\n\x18Messa\ - geType_GetPublicKey\x10\x0b\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12#\ - \n\x15MessageType_PublicKey\x10\x0c\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\ - \x01\x12\x20\n\x12MessageType_SignTx\x10\x0f\x1a\x08\x80\xa6\x1d\x01\x90\ - \xb5\x18\x01\x12#\n\x15MessageType_TxRequest\x10\x15\x1a\x08\x80\xa6\x1d\ - \x01\x98\xb5\x18\x01\x12\x1f\n\x11MessageType_TxAck\x10\x16\x1a\x08\x80\ - \xa6\x1d\x01\x90\xb5\x18\x01\x12$\n\x16MessageType_GetAddress\x10\x1d\ - \x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12!\n\x13MessageType_Address\ - \x10\x1e\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12)\n\x1fMessageType_T\ - xAckPaymentRequest\x10%\x1a\x04\x90\xb5\x18\x01\x12%\n\x17MessageType_Si\ - gnMessage\x10&\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19Message\ - Type_VerifyMessage\x10'\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12*\n\ - \x1cMessageType_MessageSignature\x10(\x1a\x08\x80\xa6\x1d\x01\x98\xb5\ - \x18\x01\x12(\n\x1aMessageType_GetOwnershipId\x10+\x1a\x08\x80\xa6\x1d\ - \x01\x90\xb5\x18\x01\x12%\n\x17MessageType_OwnershipId\x10,\x1a\x08\x80\ - \xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_GetOwnershipProof\x10\ - 1\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_Ownershi\ - pProof\x102\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageTyp\ - e_AuthorizeCoinJoin\x103\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\ - \x1aMessageType_CipherKeyValue\x10\x17\x1a\x08\x80\xa6\x1d\x01\x90\xb5\ - \x18\x01\x12*\n\x1cMessageType_CipheredKeyValue\x100\x1a\x08\x80\xa6\x1d\ - \x01\x98\xb5\x18\x01\x12&\n\x18MessageType_SignIdentity\x105\x1a\x08\x80\ - \xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_SignedIdentity\x106\ - \x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_GetECDHSe\ - ssionKey\x10=\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageT\ - ype_ECDHSessionKey\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12$\n\ - \x16MessageType_CosiCommit\x10G\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\ - \x12(\n\x1aMessageType_CosiCommitment\x10H\x1a\x08\x80\xa6\x1d\x01\x98\ - \xb5\x18\x01\x12\"\n\x14MessageType_CosiSign\x10I\x1a\x08\x80\xa6\x1d\ - \x01\x90\xb5\x18\x01\x12'\n\x19MessageType_CosiSignature\x10J\x1a\x08\ - \x80\xa6\x1d\x01\x98\xb5\x18\x01\x123\n\x1dMessageType_DebugLinkDecision\ - \x10d\x1a\x10\xc0\xb5\x18\x01\xb0\xb5\x18\x01\x80\xa6\x1d\x01\xa0\xb5\ - \x18\x01\x12/\n\x1dMessageType_DebugLinkGetState\x10e\x1a\x0c\x80\xa6\ - \x1d\x01\xb0\xb5\x18\x01\xa0\xb5\x18\x01\x12(\n\x1aMessageType_DebugLink\ - State\x10f\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12'\n\x19MessageType\ - _DebugLinkStop\x10g\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12&\n\x18Me\ - ssageType_DebugLinkLog\x10h\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12-\ - \n\x1fMessageType_DebugLinkMemoryRead\x10n\x1a\x08\x80\xa6\x1d\x01\xa0\ - \xb5\x18\x01\x12)\n\x1bMessageType_DebugLinkMemory\x10o\x1a\x08\x80\xa6\ - \x1d\x01\xa8\xb5\x18\x01\x12.\n\x20MessageType_DebugLinkMemoryWrite\x10p\ - \x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12-\n\x1fMessageType_DebugLink\ - FlashErase\x10q\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12*\n\x1bMessag\ - eType_DebugLinkLayout\x10\xa9F\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\ - \x120\n!MessageType_DebugLinkReseedRandom\x10\xaaF\x1a\x08\x80\xa6\x1d\ - \x01\xa0\xb5\x18\x01\x120\n!MessageType_DebugLinkRecordScreen\x10\xabF\ - \x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_DebugLink\ - EraseSdCard\x10\xadF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20M\ - essageType_DebugLinkWatchLayout\x10\xaeF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\ - \x18\x01\x124\n%MessageType_DebugLinkResetDebugEvents\x10\xafF\x1a\x08\ - \x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12+\n\x20MessageType_EthereumGetPublic\ - Key\x10\xc2\x03\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_EthereumPu\ - blicKey\x10\xc3\x03\x1a\x04\x98\xb5\x18\x01\x12(\n\x1eMessageType_Ethere\ - umGetAddress\x108\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessageType_Ethereum\ - Address\x109\x1a\x04\x98\xb5\x18\x01\x12$\n\x1aMessageType_EthereumSignT\ - x\x10:\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_EthereumSignTxEIP1559\ - \x10\xc4\x03\x1a\x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_EthereumTxReq\ - uest\x10;\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_EthereumTxAck\ - \x10<\x1a\x04\x90\xb5\x18\x01\x12)\n\x1fMessageType_EthereumSignMessage\ - \x10@\x1a\x04\x90\xb5\x18\x01\x12+\n!MessageType_EthereumVerifyMessage\ - \x10A\x1a\x04\x90\xb5\x18\x01\x12.\n$MessageType_EthereumMessageSignatur\ - e\x10B\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedData\ - \x10\xd0\x03\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTypedDat\ - aStructRequest\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_Et\ - hereumTypedDataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)Mess\ - ageType_EthereumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\x18\ - \x01\x120\n%MessageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\x04\ - \x90\xb5\x18\x01\x121\n&MessageType_EthereumTypedDataSignature\x10\xd5\ - \x03\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHash\ - \x10\xd6\x03\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\ - \x10C\x1a\x04\x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\ - \x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\ - \x90\xb5\x18\x01\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\ - \x18\x01\x12'\n\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\ - \x18\x01\x12)\n\x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\ - \x18\x01\x12&\n\x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\ - \xb5\x18\x01\x12#\n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\ - \xb5\x18\x01\x12\"\n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\ - \xb5\x18\x01\x12$\n\x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\ - \xb5\x18\x01\x12(\n\x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\ - \x90\xb5\x18\x01\x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\ - \x04\x98\xb5\x18\x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\ - \x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\ - \x01\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\ - \xcf\x01\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\ - \x10\xd0\x01\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAc\ - countOp\x10\xd2\x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_Stella\ - rPaymentOp\x10\xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_Stella\ - rPathPaymentStrictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$M\ - essageType_StellarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\ - \x126\n+MessageType_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\ - \x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\ - \x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\ - \xd8\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrust\ - Op\x10\xd9\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccount\ - MergeOp\x10\xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_Stella\ - rManageDataOp\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_Ste\ - llarBumpSequenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageTyp\ - e_StellarManageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*Mes\ - sageType_StellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\ + \x90\xb5\x18\x01\x12)\n\x1aMessageType_ChangeLanguage\x10\xde\x07\x1a\ + \x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x121\n\"MessageType_TranslationData\ + Request\x10\xdf\x07\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12-\n\x1eMe\ + ssageType_TranslationDataAck\x10\xe0\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\ + \x18\x01\x12#\n\x19MessageType_SetU2FCounter\x10?\x1a\x04\x90\xb5\x18\ + \x01\x12'\n\x1dMessageType_GetNextU2FCounter\x10P\x1a\x04\x90\xb5\x18\ + \x01\x12$\n\x1aMessageType_NextU2FCounter\x10Q\x1a\x04\x98\xb5\x18\x01\ + \x125\n-MessageType_Deprecated_PassphraseStateRequest\x10M\x1a\x02\x08\ + \x01\x121\n)MessageType_Deprecated_PassphraseStateAck\x10N\x1a\x02\x08\ + \x01\x12+\n\x19MessageType_FirmwareErase\x10\x06\x1a\x0c\xb8\xb5\x18\x01\ + \x80\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1aMessageType_FirmwareUpload\ + \x10\x07\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12-\n\ + \x1bMessageType_FirmwareRequest\x10\x08\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\ + \x1d\x01\x98\xb5\x18\x01\x12&\n\x14MessageType_SelfTest\x10\x20\x1a\x0c\ + \xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12&\n\x18MessageType_G\ + etPublicKey\x10\x0b\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12#\n\x15Me\ + ssageType_PublicKey\x10\x0c\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12\ + \x20\n\x12MessageType_SignTx\x10\x0f\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\ + \x01\x12#\n\x15MessageType_TxRequest\x10\x15\x1a\x08\x80\xa6\x1d\x01\x98\ + \xb5\x18\x01\x12\x1f\n\x11MessageType_TxAck\x10\x16\x1a\x08\x80\xa6\x1d\ + \x01\x90\xb5\x18\x01\x12$\n\x16MessageType_GetAddress\x10\x1d\x1a\x08\ + \x80\xa6\x1d\x01\x90\xb5\x18\x01\x12!\n\x13MessageType_Address\x10\x1e\ + \x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12)\n\x1fMessageType_TxAckPaym\ + entRequest\x10%\x1a\x04\x90\xb5\x18\x01\x12%\n\x17MessageType_SignMessag\ + e\x10&\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19MessageType_Ver\ + ifyMessage\x10'\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12*\n\x1cMessag\ + eType_MessageSignature\x10(\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12(\ + \n\x1aMessageType_GetOwnershipId\x10+\x1a\x08\x80\xa6\x1d\x01\x90\xb5\ + \x18\x01\x12%\n\x17MessageType_OwnershipId\x10,\x1a\x08\x80\xa6\x1d\x01\ + \x98\xb5\x18\x01\x12+\n\x1dMessageType_GetOwnershipProof\x101\x1a\x08\ + \x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_OwnershipProof\ + \x102\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_Auth\ + orizeCoinJoin\x103\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMes\ + sageType_CipherKeyValue\x10\x17\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\ + \x12*\n\x1cMessageType_CipheredKeyValue\x100\x1a\x08\x80\xa6\x1d\x01\x98\ + \xb5\x18\x01\x12&\n\x18MessageType_SignIdentity\x105\x1a\x08\x80\xa6\x1d\ + \x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_SignedIdentity\x106\x1a\x08\ + \x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_GetECDHSessionKey\ + \x10=\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_ECDH\ + SessionKey\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12$\n\x16Messag\ + eType_CosiCommit\x10G\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1a\ + MessageType_CosiCommitment\x10H\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\ + \x12\"\n\x14MessageType_CosiSign\x10I\x1a\x08\x80\xa6\x1d\x01\x90\xb5\ + \x18\x01\x12'\n\x19MessageType_CosiSignature\x10J\x1a\x08\x80\xa6\x1d\ + \x01\x98\xb5\x18\x01\x123\n\x1dMessageType_DebugLinkDecision\x10d\x1a\ + \x10\xc0\xb5\x18\x01\xb0\xb5\x18\x01\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12\ + /\n\x1dMessageType_DebugLinkGetState\x10e\x1a\x0c\x80\xa6\x1d\x01\xb0\ + \xb5\x18\x01\xa0\xb5\x18\x01\x12(\n\x1aMessageType_DebugLinkState\x10f\ + \x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12'\n\x19MessageType_DebugLink\ + Stop\x10g\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12&\n\x18MessageType_\ + DebugLinkLog\x10h\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12-\n\x1fMess\ + ageType_DebugLinkMemoryRead\x10n\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\ + \x12)\n\x1bMessageType_DebugLinkMemory\x10o\x1a\x08\x80\xa6\x1d\x01\xa8\ + \xb5\x18\x01\x12.\n\x20MessageType_DebugLinkMemoryWrite\x10p\x1a\x08\x80\ + \xa6\x1d\x01\xa0\xb5\x18\x01\x12-\n\x1fMessageType_DebugLinkFlashErase\ + \x10q\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12*\n\x1bMessageType_Debu\ + gLinkLayout\x10\xa9F\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x120\n!Mess\ + ageType_DebugLinkReseedRandom\x10\xaaF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\ + \x18\x01\x120\n!MessageType_DebugLinkRecordScreen\x10\xabF\x1a\x08\x80\ + \xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_DebugLinkEraseSdCard\ + \x10\xadF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_\ + DebugLinkWatchLayout\x10\xaeF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\ + \x124\n%MessageType_DebugLinkResetDebugEvents\x10\xafF\x1a\x08\x80\xa6\ + \x1d\x01\xa0\xb5\x18\x01\x12+\n\x20MessageType_EthereumGetPublicKey\x10\ + \xc2\x03\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_EthereumPublicKey\ + \x10\xc3\x03\x1a\x04\x98\xb5\x18\x01\x12(\n\x1eMessageType_EthereumGetAd\ + dress\x108\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessageType_EthereumAddress\ + \x109\x1a\x04\x98\xb5\x18\x01\x12$\n\x1aMessageType_EthereumSignTx\x10:\ + \x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_EthereumSignTxEIP1559\x10\ + \xc4\x03\x1a\x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_EthereumTxRequest\ + \x10;\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_EthereumTxAck\x10<\ + \x1a\x04\x90\xb5\x18\x01\x12)\n\x1fMessageType_EthereumSignMessage\x10@\ + \x1a\x04\x90\xb5\x18\x01\x12+\n!MessageType_EthereumVerifyMessage\x10A\ + \x1a\x04\x90\xb5\x18\x01\x12.\n$MessageType_EthereumMessageSignature\x10\ + B\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedData\x10\ + \xd0\x03\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTypedDataStr\ + uctRequest\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_Ethere\ + umTypedDataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)MessageT\ + ype_EthereumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\x18\x01\ + \x120\n%MessageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\x04\x90\ + \xb5\x18\x01\x121\n&MessageType_EthereumTypedDataSignature\x10\xd5\x03\ + \x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHash\x10\ + \xd6\x03\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\x10\ + C\x1a\x04\x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\x1a\ + \x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\x90\ + \xb5\x18\x01\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\x18\ + \x01\x12'\n\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\x18\ + \x01\x12)\n\x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\x18\ + \x01\x12&\n\x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\xb5\ + \x18\x01\x12#\n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\xb5\ + \x18\x01\x12\"\n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\xb5\ + \x18\x01\x12$\n\x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\xb5\ + \x18\x01\x12(\n\x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\x90\ + \xb5\x18\x01\x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\x04\ + \x98\xb5\x18\x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\x04\ + \x90\xb5\x18\x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\x01\ + \x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\xcf\ + \x01\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\x10\ + \xd0\x01\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAccoun\ + tOp\x10\xd2\x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_StellarPay\ + mentOp\x10\xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_StellarPat\ + hPaymentStrictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$Messa\ + geType_StellarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\x126\ + \n+MessageType_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\x90\ + \xb5\x18\x01\x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\x1a\ + \x04\x90\xb5\x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\xd8\ + \x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrustOp\ + \x10\xd9\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccountMe\ + rgeOp\x10\xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarM\ + anageDataOp\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_Stell\ + arBumpSequenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_\ + StellarManageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*Messa\ + geType_StellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\ \x01\x125\n*MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\ \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\ \x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\ diff --git a/rust/trezor-client/src/protos/generated/messages_management.rs b/rust/trezor-client/src/protos/generated/messages_management.rs index 8ec3917c1..30347d7ca 100644 --- a/rust/trezor-client/src/protos/generated/messages_management.rs +++ b/rust/trezor-client/src/protos/generated/messages_management.rs @@ -3452,6 +3452,495 @@ impl ::protobuf::reflect::ProtobufValue for ApplySettings { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; } +// @@protoc_insertion_point(message:hw.trezor.messages.management.ChangeLanguage) +#[derive(PartialEq,Clone,Default,Debug)] +pub struct ChangeLanguage { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.management.ChangeLanguage.data_length) + pub data_length: ::std::option::Option, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.management.ChangeLanguage.special_fields) + pub special_fields: ::protobuf::SpecialFields, +} + +impl<'a> ::std::default::Default for &'a ChangeLanguage { + fn default() -> &'a ChangeLanguage { + ::default_instance() + } +} + +impl ChangeLanguage { + pub fn new() -> ChangeLanguage { + ::std::default::Default::default() + } + + // required uint32 data_length = 1; + + pub fn data_length(&self) -> u32 { + self.data_length.unwrap_or(0) + } + + pub fn clear_data_length(&mut self) { + self.data_length = ::std::option::Option::None; + } + + pub fn has_data_length(&self) -> bool { + self.data_length.is_some() + } + + // Param is passed by value, moved + pub fn set_data_length(&mut self, v: u32) { + self.data_length = ::std::option::Option::Some(v); + } + + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(1); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "data_length", + |m: &ChangeLanguage| { &m.data_length }, + |m: &mut ChangeLanguage| { &mut m.data_length }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "ChangeLanguage", + fields, + oneofs, + ) + } +} + +impl ::protobuf::Message for ChangeLanguage { + const NAME: &'static str = "ChangeLanguage"; + + fn is_initialized(&self) -> bool { + if self.data_length.is_none() { + return false; + } + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { + while let Some(tag) = is.read_raw_tag_or_eof()? { + match tag { + 8 => { + self.data_length = ::std::option::Option::Some(is.read_uint32()?); + }, + tag => { + ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u64 { + let mut my_size = 0; + if let Some(v) = self.data_length { + my_size += ::protobuf::rt::uint32_size(1, v); + } + my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); + self.special_fields.cached_size().set(my_size as u32); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { + if let Some(v) = self.data_length { + os.write_uint32(1, v)?; + } + os.write_unknown_fields(self.special_fields.unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn special_fields(&self) -> &::protobuf::SpecialFields { + &self.special_fields + } + + fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { + &mut self.special_fields + } + + fn new() -> ChangeLanguage { + ChangeLanguage::new() + } + + fn clear(&mut self) { + self.data_length = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static ChangeLanguage { + static instance: ChangeLanguage = ChangeLanguage { + data_length: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } +} + +impl ::protobuf::MessageFull for ChangeLanguage { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| file_descriptor().message_by_package_relative_name("ChangeLanguage").unwrap()).clone() + } +} + +impl ::std::fmt::Display for ChangeLanguage { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for ChangeLanguage { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; +} + +// @@protoc_insertion_point(message:hw.trezor.messages.management.TranslationDataRequest) +#[derive(PartialEq,Clone,Default,Debug)] +pub struct TranslationDataRequest { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.management.TranslationDataRequest.data_length) + pub data_length: ::std::option::Option, + // @@protoc_insertion_point(field:hw.trezor.messages.management.TranslationDataRequest.data_offset) + pub data_offset: ::std::option::Option, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.management.TranslationDataRequest.special_fields) + pub special_fields: ::protobuf::SpecialFields, +} + +impl<'a> ::std::default::Default for &'a TranslationDataRequest { + fn default() -> &'a TranslationDataRequest { + ::default_instance() + } +} + +impl TranslationDataRequest { + pub fn new() -> TranslationDataRequest { + ::std::default::Default::default() + } + + // required uint32 data_length = 1; + + pub fn data_length(&self) -> u32 { + self.data_length.unwrap_or(0) + } + + pub fn clear_data_length(&mut self) { + self.data_length = ::std::option::Option::None; + } + + pub fn has_data_length(&self) -> bool { + self.data_length.is_some() + } + + // Param is passed by value, moved + pub fn set_data_length(&mut self, v: u32) { + self.data_length = ::std::option::Option::Some(v); + } + + // required uint32 data_offset = 2; + + pub fn data_offset(&self) -> u32 { + self.data_offset.unwrap_or(0) + } + + pub fn clear_data_offset(&mut self) { + self.data_offset = ::std::option::Option::None; + } + + pub fn has_data_offset(&self) -> bool { + self.data_offset.is_some() + } + + // Param is passed by value, moved + pub fn set_data_offset(&mut self, v: u32) { + self.data_offset = ::std::option::Option::Some(v); + } + + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(2); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "data_length", + |m: &TranslationDataRequest| { &m.data_length }, + |m: &mut TranslationDataRequest| { &mut m.data_length }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "data_offset", + |m: &TranslationDataRequest| { &m.data_offset }, + |m: &mut TranslationDataRequest| { &mut m.data_offset }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "TranslationDataRequest", + fields, + oneofs, + ) + } +} + +impl ::protobuf::Message for TranslationDataRequest { + const NAME: &'static str = "TranslationDataRequest"; + + fn is_initialized(&self) -> bool { + if self.data_length.is_none() { + return false; + } + if self.data_offset.is_none() { + return false; + } + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { + while let Some(tag) = is.read_raw_tag_or_eof()? { + match tag { + 8 => { + self.data_length = ::std::option::Option::Some(is.read_uint32()?); + }, + 16 => { + self.data_offset = ::std::option::Option::Some(is.read_uint32()?); + }, + tag => { + ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u64 { + let mut my_size = 0; + if let Some(v) = self.data_length { + my_size += ::protobuf::rt::uint32_size(1, v); + } + if let Some(v) = self.data_offset { + my_size += ::protobuf::rt::uint32_size(2, v); + } + my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); + self.special_fields.cached_size().set(my_size as u32); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { + if let Some(v) = self.data_length { + os.write_uint32(1, v)?; + } + if let Some(v) = self.data_offset { + os.write_uint32(2, v)?; + } + os.write_unknown_fields(self.special_fields.unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn special_fields(&self) -> &::protobuf::SpecialFields { + &self.special_fields + } + + fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { + &mut self.special_fields + } + + fn new() -> TranslationDataRequest { + TranslationDataRequest::new() + } + + fn clear(&mut self) { + self.data_length = ::std::option::Option::None; + self.data_offset = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static TranslationDataRequest { + static instance: TranslationDataRequest = TranslationDataRequest { + data_length: ::std::option::Option::None, + data_offset: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } +} + +impl ::protobuf::MessageFull for TranslationDataRequest { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| file_descriptor().message_by_package_relative_name("TranslationDataRequest").unwrap()).clone() + } +} + +impl ::std::fmt::Display for TranslationDataRequest { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for TranslationDataRequest { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; +} + +// @@protoc_insertion_point(message:hw.trezor.messages.management.TranslationDataAck) +#[derive(PartialEq,Clone,Default,Debug)] +pub struct TranslationDataAck { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.management.TranslationDataAck.data_chunk) + pub data_chunk: ::std::option::Option<::std::vec::Vec>, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.management.TranslationDataAck.special_fields) + pub special_fields: ::protobuf::SpecialFields, +} + +impl<'a> ::std::default::Default for &'a TranslationDataAck { + fn default() -> &'a TranslationDataAck { + ::default_instance() + } +} + +impl TranslationDataAck { + pub fn new() -> TranslationDataAck { + ::std::default::Default::default() + } + + // required bytes data_chunk = 1; + + pub fn data_chunk(&self) -> &[u8] { + match self.data_chunk.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_data_chunk(&mut self) { + self.data_chunk = ::std::option::Option::None; + } + + pub fn has_data_chunk(&self) -> bool { + self.data_chunk.is_some() + } + + // Param is passed by value, moved + pub fn set_data_chunk(&mut self, v: ::std::vec::Vec) { + self.data_chunk = ::std::option::Option::Some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_data_chunk(&mut self) -> &mut ::std::vec::Vec { + if self.data_chunk.is_none() { + self.data_chunk = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.data_chunk.as_mut().unwrap() + } + + // Take field + pub fn take_data_chunk(&mut self) -> ::std::vec::Vec { + self.data_chunk.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(1); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "data_chunk", + |m: &TranslationDataAck| { &m.data_chunk }, + |m: &mut TranslationDataAck| { &mut m.data_chunk }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "TranslationDataAck", + fields, + oneofs, + ) + } +} + +impl ::protobuf::Message for TranslationDataAck { + const NAME: &'static str = "TranslationDataAck"; + + fn is_initialized(&self) -> bool { + if self.data_chunk.is_none() { + return false; + } + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { + while let Some(tag) = is.read_raw_tag_or_eof()? { + match tag { + 10 => { + self.data_chunk = ::std::option::Option::Some(is.read_bytes()?); + }, + tag => { + ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u64 { + let mut my_size = 0; + if let Some(v) = self.data_chunk.as_ref() { + my_size += ::protobuf::rt::bytes_size(1, &v); + } + my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); + self.special_fields.cached_size().set(my_size as u32); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { + if let Some(v) = self.data_chunk.as_ref() { + os.write_bytes(1, v)?; + } + os.write_unknown_fields(self.special_fields.unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn special_fields(&self) -> &::protobuf::SpecialFields { + &self.special_fields + } + + fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { + &mut self.special_fields + } + + fn new() -> TranslationDataAck { + TranslationDataAck::new() + } + + fn clear(&mut self) { + self.data_chunk = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static TranslationDataAck { + static instance: TranslationDataAck = TranslationDataAck { + data_chunk: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } +} + +impl ::protobuf::MessageFull for TranslationDataAck { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| file_descriptor().message_by_package_relative_name("TranslationDataAck").unwrap()).clone() + } +} + +impl ::std::fmt::Display for TranslationDataAck { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for TranslationDataAck { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; +} + // @@protoc_insertion_point(message:hw.trezor.messages.management.ApplyFlags) #[derive(PartialEq,Clone,Default,Debug)] pub struct ApplyFlags { @@ -9774,76 +10263,80 @@ static file_descriptor_proto_data: &'static [u8] = b"\ r.messages.management.SafetyCheckLevelR\x0csafetyChecks\x123\n\x15experi\ mental_features\x18\n\x20\x01(\x08R\x14experimentalFeatures\x129\n\x19hi\ de_passphrase_from_host\x18\x0b\x20\x01(\x08R\x16hidePassphraseFromHost\ - \"\"\n\nApplyFlags\x12\x14\n\x05flags\x18\x01\x20\x02(\rR\x05flags\"#\n\ - \tChangePin\x12\x16\n\x06remove\x18\x01\x20\x01(\x08R\x06remove\"(\n\x0e\ - ChangeWipeCode\x12\x16\n\x06remove\x18\x01\x20\x01(\x08R\x06remove\"\xaa\ - \x01\n\tSdProtect\x12]\n\toperation\x18\x01\x20\x02(\x0e2?.hw.trezor.mes\ - sages.management.SdProtect.SdProtectOperationTypeR\toperation\">\n\x16Sd\ - ProtectOperationType\x12\x0b\n\x07DISABLE\x10\0\x12\n\n\x06ENABLE\x10\ - \x01\x12\x0b\n\x07REFRESH\x10\x02\"O\n\x04Ping\x12\x1a\n\x07message\x18\ - \x01\x20\x01(\t:\0R\x07message\x12+\n\x11button_protection\x18\x02\x20\ - \x01(\x08R\x10buttonProtection\"\x08\n\x06Cancel\"\x20\n\nGetEntropy\x12\ - \x12\n\x04size\x18\x01\x20\x02(\rR\x04size\"#\n\x07Entropy\x12\x18\n\x07\ - entropy\x18\x01\x20\x02(\x0cR\x07entropy\"/\n\x0fGetFirmwareHash\x12\x1c\ - \n\tchallenge\x18\x01\x20\x01(\x0cR\tchallenge\"\"\n\x0cFirmwareHash\x12\ - \x12\n\x04hash\x18\x01\x20\x02(\x0cR\x04hash\"2\n\x12AuthenticateDevice\ - \x12\x1c\n\tchallenge\x18\x01\x20\x02(\x0cR\tchallenge\"U\n\x11Authentic\ - ityProof\x12\"\n\x0ccertificates\x18\x01\x20\x03(\x0cR\x0ccertificates\ - \x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\tsignature\"\x0c\n\nWipeDevi\ - ce\"\xb0\x02\n\nLoadDevice\x12\x1c\n\tmnemonics\x18\x01\x20\x03(\tR\tmne\ - monics\x12\x10\n\x03pin\x18\x03\x20\x01(\tR\x03pin\x123\n\x15passphrase_\ - protection\x18\x04\x20\x01(\x08R\x14passphraseProtection\x12!\n\x08langu\ - age\x18\x05\x20\x01(\t:\x05en-USR\x08language\x12\x14\n\x05label\x18\x06\ - \x20\x01(\tR\x05label\x12#\n\rskip_checksum\x18\x07\x20\x01(\x08R\x0cski\ - pChecksum\x12\x1f\n\x0bu2f_counter\x18\x08\x20\x01(\rR\nu2fCounter\x12!\ - \n\x0cneeds_backup\x18\t\x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tno_back\ - up\x18\n\x20\x01(\x08R\x08noBackup\"\x9c\x03\n\x0bResetDevice\x12%\n\x0e\ - display_random\x18\x01\x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08strengt\ - h\x18\x02\x20\x01(\r:\x03256R\x08strength\x123\n\x15passphrase_protectio\ - n\x18\x03\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_protection\ - \x18\x04\x20\x01(\x08R\rpinProtection\x12!\n\x08language\x18\x05\x20\x01\ - (\t:\x05en-USR\x08language\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05lab\ - el\x12\x1f\n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\ - \x0bskip_backup\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\ - \x18\t\x20\x01(\x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\ - \x0e2).hw.trezor.messages.management.BackupType:\x05Bip39R\nbackupType\"\ - \x0e\n\x0cBackupDevice\"\x10\n\x0eEntropyRequest\"&\n\nEntropyAck\x12\ - \x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\xd4\x03\n\x0eRecove\ - ryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCount\x123\n\x15\ - passphrase_protection\x18\x02\x20\x01(\x08R\x14passphraseProtection\x12%\ - \n\x0epin_protection\x18\x03\x20\x01(\x08R\rpinProtection\x12\x1a\n\x08l\ - anguage\x18\x04\x20\x01(\tR\x08language\x12\x14\n\x05label\x18\x05\x20\ - \x01(\tR\x05label\x12)\n\x10enforce_wordlist\x18\x06\x20\x01(\x08R\x0fen\ - forceWordlist\x12T\n\x04type\x18\x08\x20\x01(\x0e2@.hw.trezor.messages.m\ - anagement.RecoveryDevice.RecoveryDeviceTypeR\x04type\x12\x1f\n\x0bu2f_co\ - unter\x18\t\x20\x01(\rR\nu2fCounter\x12\x17\n\x07dry_run\x18\n\x20\x01(\ - \x08R\x06dryRun\"Z\n\x12RecoveryDeviceType\x12%\n!RecoveryDeviceType_Scr\ - ambledWords\x10\0\x12\x1d\n\x19RecoveryDeviceType_Matrix\x10\x01\"\xc5\ - \x01\n\x0bWordRequest\x12N\n\x04type\x18\x01\x20\x02(\x0e2:.hw.trezor.me\ - ssages.management.WordRequest.WordRequestTypeR\x04type\"f\n\x0fWordReque\ - stType\x12\x19\n\x15WordRequestType_Plain\x10\0\x12\x1b\n\x17WordRequest\ - Type_Matrix9\x10\x01\x12\x1b\n\x17WordRequestType_Matrix6\x10\x02\"\x1d\ - \n\x07WordAck\x12\x12\n\x04word\x18\x01\x20\x02(\tR\x04word\"0\n\rSetU2F\ - Counter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x13\n\ - \x11GetNextU2FCounter\"1\n\x0eNextU2FCounter\x12\x1f\n\x0bu2f_counter\ - \x18\x01\x20\x02(\rR\nu2fCounter\"\x11\n\x0fDoPreauthorized\"\x16\n\x14P\ - reauthorizedRequest\"\x15\n\x13CancelAuthorization\"\xe5\x01\n\x12Reboot\ - ToBootloader\x12o\n\x0cboot_command\x18\x01\x20\x01(\x0e2=.hw.trezor.mes\ - sages.management.RebootToBootloader.BootCommand:\rSTOP_AND_WAITR\x0bboot\ - Command\x12'\n\x0ffirmware_header\x18\x02\x20\x01(\x0cR\x0efirmwareHeade\ - r\"5\n\x0bBootCommand\x12\x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTAL\ - L_UPGRADE\x10\x01\"\x10\n\x08GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\ - \x12\x14\n\x05nonce\x18\x01\x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\ - \";\n\nUnlockPath\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\ - \x12\x10\n\x03mac\x18\x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathReque\ - st\x12\x10\n\x03mac\x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTu\ - torial\"\x12\n\x10UnlockBootloader*>\n\nBackupType\x12\t\n\x05Bip39\x10\ - \0\x12\x10\n\x0cSlip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\ - \x02*G\n\x10SafetyCheckLevel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPrompt\ - Always\x10\x01\x12\x15\n\x11PromptTemporarily\x10\x02*0\n\x10HomescreenF\ - ormat\x12\x08\n\x04Toif\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04T\ - oiG\x10\x03BB\n#com.satoshilabs.trezor.lib.protobufB\x17TrezorMessageMan\ - agement\x80\xa6\x1d\x01\ + \"1\n\x0eChangeLanguage\x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\nda\ + taLength\"Z\n\x16TranslationDataRequest\x12\x1f\n\x0bdata_length\x18\x01\ + \x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\x18\x02\x20\x02(\rR\nd\ + ataOffset\"3\n\x12TranslationDataAck\x12\x1d\n\ndata_chunk\x18\x01\x20\ + \x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\x05flags\x18\x01\x20\ + \x02(\rR\x05flags\"#\n\tChangePin\x12\x16\n\x06remove\x18\x01\x20\x01(\ + \x08R\x06remove\"(\n\x0eChangeWipeCode\x12\x16\n\x06remove\x18\x01\x20\ + \x01(\x08R\x06remove\"\xaa\x01\n\tSdProtect\x12]\n\toperation\x18\x01\ + \x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.SdProtectOperati\ + onTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\n\x07DISABLE\ + \x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\n\x04Pi\ + ng\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\x11butt\ + on_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\x08\n\x06Cance\ + l\"\x20\n\nGetEntropy\x12\x12\n\x04size\x18\x01\x20\x02(\rR\x04size\"#\n\ + \x07Entropy\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"/\n\ + \x0fGetFirmwareHash\x12\x1c\n\tchallenge\x18\x01\x20\x01(\x0cR\tchalleng\ + e\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\x04hash\ + \"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\x01\x20\x02(\x0cR\t\ + challenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccertificates\x18\x01\x20\ + \x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\ts\ + ignature\"\x0c\n\nWipeDevice\"\xb0\x02\n\nLoadDevice\x12\x1c\n\tmnemonic\ + s\x18\x01\x20\x03(\tR\tmnemonics\x12\x10\n\x03pin\x18\x03\x20\x01(\tR\ + \x03pin\x123\n\x15passphrase_protection\x18\x04\x20\x01(\x08R\x14passphr\ + aseProtection\x12!\n\x08language\x18\x05\x20\x01(\t:\x05en-USR\x08langua\ + ge\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12#\n\rskip_checksum\ + \x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\x1f\n\x0bu2f_counter\x18\x08\ + \x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_backup\x18\t\x20\x01(\x08R\x0bn\ + eedsBackup\x12\x1b\n\tno_backup\x18\n\x20\x01(\x08R\x08noBackup\"\x9c\ + \x03\n\x0bResetDevice\x12%\n\x0edisplay_random\x18\x01\x20\x01(\x08R\rdi\ + splayRandom\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\x03256R\x08strengt\ + h\x123\n\x15passphrase_protection\x18\x03\x20\x01(\x08R\x14passphrasePro\ + tection\x12%\n\x0epin_protection\x18\x04\x20\x01(\x08R\rpinProtection\ + \x12!\n\x08language\x18\x05\x20\x01(\t:\x05en-USR\x08language\x12\x14\n\ + \x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\n\x0bu2f_counter\x18\x07\ + \x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_backup\x18\x08\x20\x01(\x08R\ + \nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\x08R\x08noBackup\x12Q\n\ + \x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.messages.management.Backu\ + pType:\x05Bip39R\nbackupType\"\x0e\n\x0cBackupDevice\"\x10\n\x0eEntropyR\ + equest\"&\n\nEntropyAck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07en\ + tropy\"\xd4\x03\n\x0eRecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\ + \x01(\rR\twordCount\x123\n\x15passphrase_protection\x18\x02\x20\x01(\x08\ + R\x14passphraseProtection\x12%\n\x0epin_protection\x18\x03\x20\x01(\x08R\ + \rpinProtection\x12\x1a\n\x08language\x18\x04\x20\x01(\tR\x08language\ + \x12\x14\n\x05label\x18\x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordl\ + ist\x18\x06\x20\x01(\x08R\x0fenforceWordlist\x12T\n\x04type\x18\x08\x20\ + \x01(\x0e2@.hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceT\ + ypeR\x04type\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12\ + \x17\n\x07dry_run\x18\n\x20\x01(\x08R\x06dryRun\"Z\n\x12RecoveryDeviceTy\ + pe\x12%\n!RecoveryDeviceType_ScrambledWords\x10\0\x12\x1d\n\x19RecoveryD\ + eviceType_Matrix\x10\x01\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\ + \x01\x20\x02(\x0e2:.hw.trezor.messages.management.WordRequest.WordReques\ + tTypeR\x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plai\ + n\x10\0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordRe\ + questType_Matrix6\x10\x02\"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\ + \x20\x02(\tR\x04word\"0\n\rSetU2FCounter\x12\x1f\n\x0bu2f_counter\x18\ + \x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNextU2FCounter\"1\n\x0eNextU2\ + FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\ + \n\x0fDoPreauthorized\"\x16\n\x14PreauthorizedRequest\"\x15\n\x13CancelA\ + uthorization\"\xe5\x01\n\x12RebootToBootloader\x12o\n\x0cboot_command\ + \x18\x01\x20\x01(\x0e2=.hw.trezor.messages.management.RebootToBootloader\ + .BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\n\x0ffirmware_header\ + \x18\x02\x20\x01(\x0cR\x0efirmwareHeader\"5\n\x0bBootCommand\x12\x11\n\r\ + STOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UPGRADE\x10\x01\"\x10\n\x08GetN\ + once:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\x12\x14\n\x05nonce\x18\x01\x20\ + \x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\";\n\nUnlockPath\x12\x1b\n\tadd\ + ress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x10\n\x03mac\x18\x02\x20\x01(\ + \x0cR\x03mac\"'\n\x13UnlockedPathRequest\x12\x10\n\x03mac\x18\x01\x20\ + \x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTutorial\"\x12\n\x10UnlockBootloa\ + der*>\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0cSlip39_Basic\x10\ + \x01\x12\x13\n\x0fSlip39_Advanced\x10\x02*G\n\x10SafetyCheckLevel\x12\n\ + \n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\x11Prompt\ + Temporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\x10\x01\ + \x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n#com.satoshilabs\ + .trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -9862,7 +10355,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { let generated_file_descriptor = generated_file_descriptor_lazy.get(|| { let mut deps = ::std::vec::Vec::with_capacity(1); deps.push(super::messages::file_descriptor().clone()); - let mut messages = ::std::vec::Vec::with_capacity(41); + let mut messages = ::std::vec::Vec::with_capacity(44); messages.push(Initialize::generated_message_descriptor_data()); messages.push(GetFeatures::generated_message_descriptor_data()); messages.push(Features::generated_message_descriptor_data()); @@ -9870,6 +10363,9 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(SetBusy::generated_message_descriptor_data()); messages.push(EndSession::generated_message_descriptor_data()); messages.push(ApplySettings::generated_message_descriptor_data()); + messages.push(ChangeLanguage::generated_message_descriptor_data()); + messages.push(TranslationDataRequest::generated_message_descriptor_data()); + messages.push(TranslationDataAck::generated_message_descriptor_data()); messages.push(ApplyFlags::generated_message_descriptor_data()); messages.push(ChangePin::generated_message_descriptor_data()); messages.push(ChangeWipeCode::generated_message_descriptor_data()); diff --git a/storage/storage.c b/storage/storage.c index 203237432..16ea982e2 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -154,6 +154,7 @@ const uint8_t WIPE_CODE_EMPTY[] = {0, 0, 0, 0}; #define GUARD_KEY_MODULUS 6311 #define GUARD_KEY_REMAINDER 15 +// TODO: handle translation const char *const VERIFYING_PIN_MSG = "Verifying PIN"; const char *const PROCESSING_MSG = "Processing"; const char *const STARTING_MSG = "Starting up"; diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index 306cc7539..891f4f824 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING from .. import buttons +from .. import translations as TR from .common import go_next if TYPE_CHECKING: @@ -40,11 +41,10 @@ def enter_word( def confirm_recovery(debug: "DebugLink") -> None: layout = debug.wait_layout() + TR.assert_equals(layout.title(), "recovery__title") if debug.model == "T": - assert layout.title().startswith(("RECOVER WALLET", "BACKUP CHECK")) debug.click(buttons.OK, wait=True) elif debug.model == "Safe 3": - assert layout.title() == "RECOVER WALLET" debug.press_right(wait=True) debug.press_right() @@ -54,13 +54,8 @@ def select_number_of_words( ) -> None: if wait: debug.wait_layout() + TR.assert_equals(debug.read_layout().text_content(), "recovery__num_of_words") if debug.model == "T": - assert "number of words" in debug.read_layout().text_content() - assert debug.read_layout().title() in ( - "BACKUP CHECK", - "RECOVER WALLET", - ) - # click the number word_option_offset = 6 word_options = (12, 18, 20, 24, 33) @@ -70,10 +65,8 @@ def select_number_of_words( coords = buttons.grid34(index % 3, index // 3) layout = debug.click(coords, wait=True) elif debug.model == "Safe 3": - assert "number of words" in debug.read_layout().text_content() layout = debug.press_right(wait=True) - - assert layout.title() == "NUMBER OF WORDS" + TR.assert_equals(layout.title(), "word_count__title") # navigate to the number and confirm it word_options = (12, 18, 20, 24, 33) @@ -85,67 +78,60 @@ def select_number_of_words( raise ValueError("Unknown model") if num_of_words in (20, 33): - assert "Enter any share" in layout.text_content() + TR.assert_in(layout.text_content(), "recovery__enter_any_share") else: - assert "Enter your backup" in layout.text_content() + TR.assert_in(layout.text_content(), "recovery__enter_backup") def enter_share( debug: "DebugLink", share: str, is_first: bool = True ) -> "LayoutContent": - if debug.model == "T": + TR.assert_in(debug.read_layout().title(), "recovery__title_recover") + if debug.model == "Safe 3": + layout = debug.wait_layout() + for _ in range(layout.page_count()): + layout = debug.press_right(wait=True) + else: layout = debug.click(buttons.OK, wait=True) - assert layout.main_component() == "MnemonicKeyboard" - for word in share.split(" "): - layout = enter_word(debug, word, is_slip39=True) + assert "MnemonicKeyboard" in layout.all_components() - return layout - elif debug.model == "Safe 3": - assert "RECOVER WALLET" in debug.wait_layout().title() - layout = debug.press_right(wait=True) - if is_first: - # Word entering info - debug.press_right() - layout = debug.press_right(wait=True) - assert "MnemonicKeyboard" in layout.all_components() + for word in share.split(" "): + layout = enter_word(debug, word, is_slip39=True) - for word in share.split(" "): - layout = enter_word(debug, word, is_slip39=True) - - return layout - else: - raise ValueError("Unknown model") + return layout def enter_shares(debug: "DebugLink", shares: list[str]) -> None: - layout = debug.read_layout() - expected_text = "Enter any share" + TR.assert_in(debug.read_layout().text_content(), "recovery__enter_any_share") for index, share in enumerate(shares): - assert expected_text in layout.text_content() - layout = enter_share(debug, share, is_first=index == 0) - expected_text = f"{index + 1} of {len(shares)} shares entered" + enter_share(debug, share, is_first=index == 0) + if index < len(shares) - 1: + TR.assert_in( + debug.read_layout().text_content(), + "recovery__x_of_y_entered_template", + template=(index + 1, len(shares)), + ) - assert "Wallet recovered successfully" in layout.text_content() + TR.assert_in(debug.read_layout().text_content(), "recovery__wallet_recovered") def enter_seed(debug: "DebugLink", seed_words: list[str]) -> None: - assert "Enter" in debug.read_layout().text_content() + TR.assert_in(debug.read_layout().text_content(), "recovery__enter_backup") if debug.model == "T": - layout = debug.click(buttons.OK, wait=True) - assert layout.main_component() == "MnemonicKeyboard" + debug.click(buttons.OK, wait=True) elif debug.model == "Safe 3": - layout = debug.press_right(wait=True) - assert "RECOVER WALLET" in layout.title() + debug.press_right(wait=True) + TR.assert_equals(debug.read_layout().title(), "recovery__title_recover") debug.press_right() - layout = debug.press_right(wait=True) - assert "MnemonicKeyboard" in layout.all_components() + debug.press_right(wait=True) + assert "MnemonicKeyboard" in debug.read_layout().all_components() for word in seed_words: - layout = enter_word(debug, word, is_slip39=False) + enter_word(debug, word, is_slip39=False) - assert "Wallet recovered successfully" in layout.text_content() # type: ignore + TR.assert_in(debug.read_layout().text_content(), "recovery__wallet_recovered") def finalize(debug: "DebugLink") -> None: diff --git a/tests/click_tests/reset.py b/tests/click_tests/reset.py index 5824cc153..eb0d420af 100644 --- a/tests/click_tests/reset.py +++ b/tests/click_tests/reset.py @@ -1,3 +1,4 @@ +import re from typing import TYPE_CHECKING from shamir_mnemonic import shamir # type: ignore @@ -5,14 +6,17 @@ from shamir_mnemonic import shamir # type: ignore from trezorlib import messages from .. import buttons +from .. import translations as TR if TYPE_CHECKING: from trezorlib.debuglink import DebugLink def confirm_new_wallet(debug: "DebugLink") -> None: - layout = debug.wait_layout() - assert layout.title().startswith("CREATE WALLET") + TR.assert_equals_multiple( + debug.read_layout().title(), + ["reset__title_create_wallet", "reset__title_create_wallet_shamir"], + ) if debug.model == "T": debug.click(buttons.OK, wait=True) elif debug.model == "Safe 3": @@ -20,32 +24,14 @@ def confirm_new_wallet(debug: "DebugLink") -> None: debug.press_right(wait=True) -def confirm_read(debug: "DebugLink", title: str, middle_r: bool = False) -> None: - layout = debug.read_layout() - if title == "Caution": - assert "Never make a digital copy" in layout.text_content() - elif title == "Success": - # TODO: improve this - assert any( - text in layout.text_content() - for text in ( - "success", - "finished", - "done", - "created", - "Keep it safe", - ) - ) - elif title == "Checklist": - assert "number of shares" in layout.text_content().lower() - else: - assert title.upper() in layout.title() - +def confirm_read(debug: "DebugLink", middle_r: bool = False) -> None: if debug.model == "T": debug.click(buttons.OK, wait=True) elif debug.model == "Safe 3": - if layout.page_count() > 1: - debug.press_right(wait=True) + page_count = debug.read_layout().page_count() + if page_count > 1: + for _ in range(page_count - 1): + debug.press_right(wait=True) if middle_r: debug.press_middle(wait=True) else: @@ -60,7 +46,9 @@ def set_selection(debug: "DebugLink", button: tuple[int, int], diff: int) -> Non debug.click(buttons.OK, wait=True) elif debug.model == "Safe 3": layout = debug.read_layout() - if layout.title() in ("NUMBER OF SHARES", "THRESHOLD"): + if layout.title() in TR.translate( + "reset__title_number_of_shares" + ) + TR.translate("words__title_threshold"): # Special info screens layout = debug.press_right(wait=True) assert "NumberInput" in layout.all_components() @@ -77,27 +65,12 @@ def read_words( debug: "DebugLink", backup_type: messages.BackupType, do_htc: bool = True ) -> list[str]: words: list[str] = [] - layout = debug.read_layout() - - if debug.model == "T": - if backup_type == messages.BackupType.Slip39_Advanced: - assert layout.title().startswith("GROUP") - elif backup_type == messages.BackupType.Slip39_Basic: - assert layout.title().startswith("RECOVERY SHARE #") - else: - assert layout.title() == "RECOVERY SEED" - elif debug.model == "Safe 3": - if backup_type == messages.BackupType.Slip39_Advanced: - assert "SHARE" in layout.title() - elif backup_type == messages.BackupType.Slip39_Basic: - assert layout.title().startswith("SHARE #") - else: - assert layout.title() == "STANDARD BACKUP" - assert "Write down" in layout.text_content() - layout = debug.press_right(wait=True) + if debug.model == "Safe 3": + debug.press_right(wait=True) # Swiping through all the pages and loading the words + layout = debug.read_layout() for _ in range(layout.page_count() - 1): words.extend(layout.seed_words()) layout = debug.swipe_up(wait=True) @@ -122,11 +95,13 @@ def read_words( def confirm_words(debug: "DebugLink", words: list[str]) -> None: layout = debug.wait_layout() if debug.model == "T": - assert "Select word" in layout.text_content() + TR.assert_template(layout.text_content(), "reset__select_word_x_of_y_template") for _ in range(3): # "Select word 3 of 20" # ^ - word_pos = int(layout.text_content().split()[2]) + word_pos_match = re.search(r"\d+", debug.wait_layout().text_content()) + assert word_pos_match is not None + word_pos = int(word_pos_match.group(0)) # Unifying both the buttons and words to lowercase btn_texts = [ text.lower() for text in layout.tt_check_seed_button_contents() @@ -135,12 +110,15 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: button_pos = btn_texts.index(wanted_word) layout = debug.click(buttons.RESET_WORD_CHECK[button_pos], wait=True) elif debug.model == "Safe 3": - assert "Select the correct word" in layout.text_content() + TR.assert_in(layout.text_content(), "reset__select_correct_word") layout = debug.press_right(wait=True) for _ in range(3): # "SELECT 2ND WORD" # ^ - word_pos = int(layout.title().split()[1][:-2]) + word_pos_match = re.search(r"\d+", layout.title()) + assert word_pos_match is not None + word_pos = int(word_pos_match.group(0)) + wanted_word = words[word_pos - 1].lower() while not layout.get_middle_choice() == wanted_word: diff --git a/tests/click_tests/test_autolock.py b/tests/click_tests/test_autolock.py index b15503a22..564267171 100644 --- a/tests/click_tests/test_autolock.py +++ b/tests/click_tests/test_autolock.py @@ -25,6 +25,7 @@ from trezorlib.protobuf import MessageType from trezorlib.tools import parse_path from .. import buttons, common +from .. import translations as TR from ..device_tests.bitcoin.payment_req import make_coinjoin_request from ..tx_cache import TxCache from . import recovery @@ -63,10 +64,11 @@ def set_autolock_delay(device_handler: "BackgroundDeviceHandler", delay_ms: int) debug.input("1234") - assert ( - f"Auto-lock your Trezor after {delay_ms // 1000} seconds" - in debug.wait_layout().text_content() + TR.assert_template( + debug.wait_layout().text_content(), + "auto_lock__change_template", ) + layout = go_next(debug, wait=True) assert layout.main_component() == "Homescreen" assert device_handler.result() == "Settings applied" @@ -103,11 +105,13 @@ def test_autolock_interrupts_signing(device_handler: "BackgroundDeviceHandler"): if debug.model == "T": debug.click(buttons.OK, wait=True) layout = debug.click(buttons.OK, wait=True) - assert "Total amount: 0.0039 BTC" in layout.text_content() + TR.assert_in(layout.text_content(), "send__total_amount") + assert "0.0039 BTC" in layout.text_content() elif debug.model == "Safe 3": debug.press_right(wait=True) layout = debug.press_right(wait=True) - assert "Total amount: 0.0039 BTC" in layout.text_content() + TR.assert_in(layout.text_content(), "send__total_amount") + assert "0.0039 BTC" in layout.text_content() # wait for autolock to kick in time.sleep(10.1) @@ -148,11 +152,13 @@ def test_autolock_does_not_interrupt_signing(device_handler: "BackgroundDeviceHa if debug.model == "T": debug.click(buttons.OK, wait=True) layout = debug.click(buttons.OK, wait=True) - assert "Total amount: 0.0039 BTC" in layout.text_content() + TR.assert_in(layout.text_content(), "send__total_amount") + assert "0.0039 BTC" in layout.text_content() elif debug.model == "Safe 3": debug.press_right(wait=True) layout = debug.press_right(wait=True) - assert "Total amount: 0.0039 BTC" in layout.text_content() + TR.assert_in(layout.text_content(), "send__total_amount") + assert "0.0039 BTC" in layout.text_content() def sleepy_filter(msg: MessageType) -> MessageType: time.sleep(10.1) @@ -242,7 +248,7 @@ def test_autolock_interrupts_passphrase(device_handler: "BackgroundDeviceHandler def unlock_dry_run(debug: "DebugLink") -> "LayoutContent": - assert "Check your backup?" in debug.wait_layout().text_content() + TR.assert_in(debug.wait_layout().text_content(), "recovery__check_dry_run") layout = go_next(debug, wait=True) assert "PinKeyboard" in layout.all_components() @@ -259,7 +265,7 @@ def test_dryrun_locks_at_number_of_words(device_handler: "BackgroundDeviceHandle device_handler.run(device.recover, dry_run=True) # type: ignore layout = unlock_dry_run(debug) - assert "number of words" in layout.text_content() + TR.assert_in(debug.wait_layout().text_content(), "recovery__num_of_words") if debug.model == "Safe 3": debug.press_right(wait=True) @@ -279,7 +285,7 @@ def test_dryrun_locks_at_number_of_words(device_handler: "BackgroundDeviceHandle assert layout is not None # we are back at homescreen - assert "number of words" in layout.text_content() + TR.assert_in(debug.wait_layout().text_content(), "recovery__num_of_words") @pytest.mark.setup_client(pin=PIN4) diff --git a/tests/click_tests/test_passphrase_tr.py b/tests/click_tests/test_passphrase_tr.py index 508211c26..45497de8e 100644 --- a/tests/click_tests/test_passphrase_tr.py +++ b/tests/click_tests/test_passphrase_tr.py @@ -21,6 +21,7 @@ import pytest from trezorlib import exceptions +from .. import translations as TR from ..common import get_test_address from .common import ( CommonPass, @@ -55,9 +56,22 @@ assert len(AAA_51) == 51 assert AAA_51_ADDRESS == AAA_50_ADDRESS +def _get_possible_btns(path: str) -> str: + return "|".join(TR.translate(path)) + + +def _get_cancel_or_delete() -> str: + paths = ["inputs__cancel", "inputs__delete"] + return "|".join(_get_possible_btns(path) for path in paths) + + +BACK = _get_possible_btns("inputs__back") +SHOW = _get_possible_btns("inputs__show") +ENTER = _get_possible_btns("inputs__enter") +SPACE = _get_possible_btns("inputs__space") +CANCEL_OR_DELETE = _get_cancel_or_delete() # fmt: off -BACK = "BACK" -MENU_ACTIONS = ["SHOW", "CANCEL|DELETE", "ENTER", "abc", "ABC", "123", "#$!", "SPACE"] +MENU_ACTIONS = [SHOW, CANCEL_OR_DELETE, ENTER, "abc", "ABC", "123", "#$!", SPACE] DIGITS_ACTIONS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", BACK] LOWERCASE_ACTIONS = [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", @@ -143,7 +157,7 @@ def press_char(debug: "DebugLink", char: str) -> None: # Space is a special case if char == " ": go_to_category(debug, PassphraseCategory.MENU) - navigate_to_action_and_press(debug, "SPACE", _current_actions(debug)) + navigate_to_action_and_press(debug, SPACE, _current_actions(debug)) else: char_category = get_char_category(char) go_to_category(debug, char_category) @@ -162,19 +176,19 @@ def input_passphrase(debug: "DebugLink", passphrase: str) -> None: def show_passphrase(debug: "DebugLink") -> None: """Show a passphrase""" go_to_category(debug, PassphraseCategory.MENU) - navigate_to_action_and_press(debug, "SHOW", _current_actions(debug)) + navigate_to_action_and_press(debug, SHOW, _current_actions(debug)) def enter_passphrase(debug: "DebugLink") -> None: """Enter a passphrase""" go_to_category(debug, PassphraseCategory.MENU) - navigate_to_action_and_press(debug, "ENTER", _current_actions(debug)) + navigate_to_action_and_press(debug, ENTER, _current_actions(debug)) def delete_char(debug: "DebugLink") -> None: """Deletes the last char""" go_to_category(debug, PassphraseCategory.MENU) - navigate_to_action_and_press(debug, "CANCEL|DELETE", _current_actions(debug)) + navigate_to_action_and_press(debug, CANCEL_OR_DELETE, _current_actions(debug)) def cancel(debug: "DebugLink") -> None: diff --git a/tests/click_tests/test_pin.py b/tests/click_tests/test_pin.py index 50e4e5921..67e10d2ad 100644 --- a/tests/click_tests/test_pin.py +++ b/tests/click_tests/test_pin.py @@ -23,6 +23,7 @@ import pytest from trezorlib import device, exceptions from .. import buttons +from .. import translations as TR from .common import go_back, go_next, navigate_to_action_and_press if TYPE_CHECKING: @@ -41,10 +42,20 @@ PIN24 = "875163065288639289952973" PIN50 = "31415926535897932384626433832795028841971693993751" PIN60 = PIN50 + "9" * 10 + +def _get_possible_btns(path: str) -> str: + return "|".join(TR.translate(path)) + + +DELETE = _get_possible_btns("inputs__delete") +SHOW = _get_possible_btns("inputs__show") +ENTER = _get_possible_btns("inputs__enter") + + TR_PIN_ACTIONS = [ - "DELETE", - "SHOW", - "ENTER", + DELETE, + SHOW, + ENTER, "0", "1", "2", @@ -84,7 +95,7 @@ def prepare( elif situation == Situation.PIN_SETUP: # Set new PIN device_handler.run(device.change_pin) # type: ignore - assert "Turn on" in debug.wait_layout().text_content() + TR.assert_in(debug.wait_layout().text_content(), "pin__turn_on") if debug.model == "T": go_next(debug) elif debug.model == "Safe 3": @@ -96,7 +107,7 @@ def prepare( # Change PIN device_handler.run(device.change_pin) # type: ignore _input_see_confirm(debug, old_pin) - assert "Change PIN" in debug.read_layout().text_content() + TR.assert_in(debug.wait_layout().text_content(), "pin__change") go_next(debug, wait=True) _input_see_confirm(debug, old_pin) elif situation == Situation.WIPE_CODE_SETUP: @@ -104,7 +115,7 @@ def prepare( device_handler.run(device.change_wipe_code) # type: ignore if old_pin: _input_see_confirm(debug, old_pin) - assert "Turn on" in debug.wait_layout().text_content() + TR.assert_in(debug.wait_layout().text_content(), "wipe_code__turn_on") go_next(debug, wait=True) if debug.model == "Safe 3": go_next(debug, wait=True) @@ -150,7 +161,7 @@ def _see_pin(debug: "DebugLink") -> None: if debug.model == "T": debug.click(buttons.TOP_ROW, wait=True) elif debug.model == "Safe 3": - navigate_to_action_and_press(debug, "SHOW", TR_PIN_ACTIONS) + navigate_to_action_and_press(debug, SHOW, TR_PIN_ACTIONS) def _delete_pin(debug: "DebugLink", digits_to_delete: int, check: bool = True) -> None: @@ -162,7 +173,7 @@ def _delete_pin(debug: "DebugLink", digits_to_delete: int, check: bool = True) - if debug.model == "T": debug.click(buttons.pin_passphrase_grid(9), wait=True) elif debug.model == "Safe 3": - navigate_to_action_and_press(debug, "DELETE", TR_PIN_ACTIONS) + navigate_to_action_and_press(debug, DELETE, TR_PIN_ACTIONS) if check: after = debug.read_layout().pin() @@ -174,7 +185,7 @@ def _delete_all(debug: "DebugLink", check: bool = True) -> None: if debug.model == "T": debug.click_hold(buttons.pin_passphrase_grid(9), hold_ms=1500) elif debug.model == "Safe 3": - navigate_to_action_and_press(debug, "DELETE", TR_PIN_ACTIONS, hold_ms=1000) + navigate_to_action_and_press(debug, DELETE, TR_PIN_ACTIONS, hold_ms=1000) if check: after = debug.read_layout().pin() @@ -193,7 +204,7 @@ def _confirm_pin(debug: "DebugLink") -> None: if debug.model == "T": debug.click(buttons.pin_passphrase_grid(11), wait=True) elif debug.model == "Safe 3": - navigate_to_action_and_press(debug, "ENTER", TR_PIN_ACTIONS) + navigate_to_action_and_press(debug, ENTER, TR_PIN_ACTIONS) def _input_see_confirm(debug: "DebugLink", pin: str) -> None: diff --git a/tests/click_tests/test_reset_bip39.py b/tests/click_tests/test_reset_bip39.py index 62da0724c..7fd349e27 100644 --- a/tests/click_tests/test_reset_bip39.py +++ b/tests/click_tests/test_reset_bip39.py @@ -50,10 +50,10 @@ def test_reset_bip39(device_handler: "BackgroundDeviceHandler"): reset.confirm_new_wallet(debug) # confirm back up - reset.confirm_read(debug, "Success") + reset.confirm_read(debug) # confirm backup warning - reset.confirm_read(debug, "Caution", middle_r=True) + reset.confirm_read(debug, middle_r=True) # read words words = reset.read_words(debug, messages.BackupType.Bip39) @@ -62,7 +62,7 @@ def test_reset_bip39(device_handler: "BackgroundDeviceHandler"): reset.confirm_words(debug, words) # confirm backup done - reset.confirm_read(debug, "Success") + reset.confirm_read(debug) # Your backup is done go_next(debug) diff --git a/tests/click_tests/test_reset_slip39_advanced.py b/tests/click_tests/test_reset_slip39_advanced.py index 427ba71af..a49c58357 100644 --- a/tests/click_tests/test_reset_slip39_advanced.py +++ b/tests/click_tests/test_reset_slip39_advanced.py @@ -62,10 +62,10 @@ def test_reset_slip39_advanced( reset.confirm_new_wallet(debug) # confirm back up - reset.confirm_read(debug, "Success") + reset.confirm_read(debug) # confirm checklist - reset.confirm_read(debug, "Checklist") + reset.confirm_read(debug) # set num of groups - default is 5 if group_count < 5: @@ -74,7 +74,7 @@ def test_reset_slip39_advanced( reset.set_selection(debug, buttons.RESET_PLUS, group_count - 5) # confirm checklist - reset.confirm_read(debug, "Checklist") + reset.confirm_read(debug) # set group threshold # TODO: could make it general as well @@ -86,7 +86,7 @@ def test_reset_slip39_advanced( raise RuntimeError("not a supported combination") # confirm checklist - reset.confirm_read(debug, "Checklist") + reset.confirm_read(debug) # set share num and threshold for groups for _ in range(group_count): @@ -106,7 +106,7 @@ def test_reset_slip39_advanced( raise RuntimeError("not a supported combination") # confirm backup warning - reset.confirm_read(debug, "Caution", middle_r=True) + reset.confirm_read(debug, middle_r=True) all_words: list[str] = [] for _ in range(group_count): @@ -120,12 +120,12 @@ def test_reset_slip39_advanced( reset.confirm_words(debug, words) # confirm share checked - reset.confirm_read(debug, "Success") + reset.confirm_read(debug) all_words.append(" ".join(words)) # confirm backup done - reset.confirm_read(debug, "Success") + reset.confirm_read(debug) # generate secret locally internal_entropy = debug.state().reset_entropy diff --git a/tests/click_tests/test_reset_slip39_basic.py b/tests/click_tests/test_reset_slip39_basic.py index d9a264343..e0e3617bb 100644 --- a/tests/click_tests/test_reset_slip39_basic.py +++ b/tests/click_tests/test_reset_slip39_basic.py @@ -59,10 +59,10 @@ def test_reset_slip39_basic( reset.confirm_new_wallet(debug) # confirm back up - reset.confirm_read(debug, "Success") + reset.confirm_read(debug) # confirm checklist - reset.confirm_read(debug, "Checklist") + reset.confirm_read(debug) # set num of shares - default is 5 if num_of_shares < 5: @@ -71,7 +71,7 @@ def test_reset_slip39_basic( reset.set_selection(debug, buttons.RESET_PLUS, num_of_shares - 5) # confirm checklist - reset.confirm_read(debug, "Checklist") + reset.confirm_read(debug) # set threshold # TODO: could make it general as well @@ -83,10 +83,10 @@ def test_reset_slip39_basic( raise RuntimeError("not a supported combination") # confirm checklist - reset.confirm_read(debug, "Checklist") + reset.confirm_read(debug) # confirm backup warning - reset.confirm_read(debug, "Caution", middle_r=True) + reset.confirm_read(debug, middle_r=True) all_words: list[str] = [] for _ in range(num_of_shares): @@ -97,12 +97,12 @@ def test_reset_slip39_basic( reset.confirm_words(debug, words) # confirm share checked - reset.confirm_read(debug, "Success") + reset.confirm_read(debug) all_words.append(" ".join(words)) # confirm backup done - reset.confirm_read(debug, "Success") + reset.confirm_read(debug) # generate secret locally internal_entropy = debug.state().reset_entropy diff --git a/tests/click_tests/test_tutorial.py b/tests/click_tests/test_tutorial.py index 0cb70387b..b07773c66 100644 --- a/tests/click_tests/test_tutorial.py +++ b/tests/click_tests/test_tutorial.py @@ -22,6 +22,8 @@ import pytest from trezorlib import device from trezorlib.exceptions import Cancelled +from .. import translations as TR + if TYPE_CHECKING: from trezorlib.debuglink import DebugLink @@ -55,7 +57,7 @@ def go_through_tutorial(debug: "DebugLink") -> None: debug.press_right(wait=True) debug.press_right(wait=True) layout = debug.press_middle(wait=True) - assert layout.title() == "TUTORIAL COMPLETE" + TR.assert_equals(layout.title(), "tutorial__title_tutorial_complete") @pytest.mark.setup_client(uninitialized=True) diff --git a/tests/common.py b/tests/common.py index 0b165e9f2..4951eac48 100644 --- a/tests/common.py +++ b/tests/common.py @@ -24,7 +24,6 @@ from unittest import mock import pytest from trezorlib import btc, messages, tools -from trezorlib.messages import ButtonRequestType if TYPE_CHECKING: from _pytest.mark.structures import MarkDecorator @@ -33,6 +32,7 @@ if TYPE_CHECKING: from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.messages import ButtonRequest +PRIVATE_KEYS_DEV = [byte * 32 for byte in (b"\xdd", b"\xde", b"\xdf")] BRGeneratorType = Generator[None, messages.ButtonRequest, None] @@ -148,7 +148,7 @@ def generate_entropy( def click_through( - debug: "DebugLink", screens: int, code: Optional[ButtonRequestType] = None + debug: "DebugLink", screens: int, code: Optional[messages.ButtonRequestType] = None ) -> Generator[None, "ButtonRequest", None]: """Click through N dialog screens. @@ -214,7 +214,11 @@ def read_and_confirm_mnemonic_tt( # check share for _ in range(3): - word_pos = int(debug.wait_layout().text_content().split()[2]) + # Word position is the first number in the text + word_pos_match = re.search(r"\d+", debug.wait_layout().text_content()) + assert word_pos_match is not None + word_pos = int(word_pos_match.group(0)) + index = word_pos - 1 if choose_wrong: debug.input(mnemonic[(index + 1) % len(mnemonic)]) @@ -278,7 +282,7 @@ def get_test_address(client: "Client") -> str: return btc.get_address(client, "Testnet", TEST_ADDRESS_N) -def compact_size(n) -> bytes: +def compact_size(n: int) -> bytes: if n < 253: return n.to_bytes(1, "little") elif n < 0x1_0000: @@ -287,3 +291,28 @@ def compact_size(n) -> bytes: return bytes([254]) + n.to_bytes(4, "little") else: return bytes([255]) + n.to_bytes(8, "little") + + +def get_text_possible_pagination(debug: "DebugLink", br: messages.ButtonRequest) -> str: + text = debug.wait_layout().text_content() + if br.pages is not None: + for _ in range(br.pages - 1): + debug.swipe_up() + text += " " + text += debug.wait_layout().text_content() + return text + + +def swipe_if_necessary( + debug: "DebugLink", br_code: messages.ButtonRequestType | None = None +) -> BRGeneratorType: + br = yield + if br_code is not None: + assert br.code == br_code + swipe_till_the_end(debug, br) + + +def swipe_till_the_end(debug: "DebugLink", br: messages.ButtonRequest) -> None: + if br.pages is not None: + for _ in range(br.pages - 1): + debug.swipe_up() diff --git a/tests/conftest.py b/tests/conftest.py index 432cd22fe..b6fa7ab2f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -29,7 +29,11 @@ from trezorlib.device import apply_settings from trezorlib.device import wipe as wipe_device from trezorlib.transport import enumerate_devices, get_transport -from . import ui_tests +# register rewrites before importing from local package +# so that we see details of failed asserts from this module +pytest.register_assert_rewrite("tests.common") + +from . import translations, ui_tests from .device_handler import BackgroundDeviceHandler from .emulators import EmulatorWrapper @@ -42,10 +46,7 @@ if TYPE_CHECKING: HERE = Path(__file__).resolve().parent - - -# So that we see details of failed asserts from this module -pytest.register_assert_rewrite("tests.common") +CORE = HERE.parent / "core" def _emulator_wrapper_main_args() -> list[str]: @@ -128,14 +129,23 @@ def _raw_client(request: pytest.FixtureRequest) -> Client: # Requesting the emulator fixture only if relevant. if request.session.config.getoption("control_emulators"): emu_fixture = request.getfixturevalue("emulator") - return emu_fixture.client + client = emu_fixture.client else: interact = os.environ.get("INTERACT") == "1" path = os.environ.get("TREZOR_PATH") if path: - return _client_from_path(request, path, interact) + client = _client_from_path(request, path, interact) else: - return _find_client(request, interact) + client = _find_client(request, interact) + + # Setting the appropriate language + # Not doing it for T1 + if client.features.model != "1": + lang = request.session.config.getoption("lang") or "en" + assert isinstance(lang, str) + translations.set_language(client, lang) + + return client def _client_from_path( @@ -229,6 +239,13 @@ def client( wipe_device(_raw_client) + # Load language again, as it got erased in wipe + if _raw_client.features.model != "1": + lang = request.session.config.getoption("lang") or "en" + assert isinstance(lang, str) + if lang != "en": + translations.set_language(_raw_client, lang) + setup_params = dict( uninitialized=False, mnemonic=" ".join(["all"] * 12), @@ -253,7 +270,6 @@ def client( pin=setup_params["pin"], # type: ignore passphrase_protection=use_passphrase, label="test", - language="en-US", needs_backup=setup_params["needs_backup"], # type: ignore no_backup=setup_params["no_backup"], # type: ignore ) @@ -357,6 +373,12 @@ def pytest_addoption(parser: "Parser") -> None: help="Generating a master-diff report. " "This shows all unique differing screens compared to master.", ) + parser.addoption( + "--lang", + action="store", + choices=translations.LANGUAGES, + help="Run tests with a specified language: 'en' is the default", + ) def pytest_configure(config: "Config") -> None: diff --git a/tests/device_tests/bitcoin/test_signmessage.py b/tests/device_tests/bitcoin/test_signmessage.py index ad4d04d92..f60a88f17 100644 --- a/tests/device_tests/bitcoin/test_signmessage.py +++ b/tests/device_tests/bitcoin/test_signmessage.py @@ -364,9 +364,9 @@ def test_signmessage_pagination(client: Client, message: str): # We cannot differentiate between a newline and space in the message read from Trezor. # TODO: do the check also for model R if client.features.model == "T": - expected_message = message.replace("\n", "").replace(" ", "") message_read = IF.message_read.replace(" ", "").replace("...", "") - assert expected_message == message_read + signed_message = message.replace("\n", "").replace(" ", "") + assert signed_message in message_read @pytest.mark.skip_t1 diff --git a/tests/device_tests/ethereum/common.py b/tests/device_tests/ethereum/common.py index ad04df978..ee2155885 100644 --- a/tests/device_tests/ethereum/common.py +++ b/tests/device_tests/ethereum/common.py @@ -6,23 +6,7 @@ from hashlib import sha256 from trezorlib import cosi, definitions, messages, protobuf -PRIVATE_KEYS_DEV = [byte * 32 for byte in (b"\xdd", b"\xde", b"\xdf")] - - -def sign_with_privkeys(digest: bytes, privkeys: t.Sequence[bytes]) -> bytes: - """Locally produce a CoSi signature.""" - pubkeys = [cosi.pubkey_from_privkey(sk) for sk in privkeys] - nonces = [cosi.get_nonce(sk, digest, i) for i, sk in enumerate(privkeys)] - - global_pk = cosi.combine_keys(pubkeys) - global_R = cosi.combine_keys(R for _, R in nonces) - - sigs = [ - cosi.sign_with_privkey(digest, sk, global_pk, r, global_R) - for sk, (r, _) in zip(privkeys, nonces) - ] - - return cosi.combine_sig(global_R, sigs) +from ...common import PRIVATE_KEYS_DEV def make_network( @@ -91,7 +75,7 @@ def sign_payload( merkle_proof.append(digest) merkle_proof = len(merkle_proof).to_bytes(1, "little") + b"".join(merkle_proof) - signature = sign_with_privkeys(digest, PRIVATE_KEYS_DEV[:threshold]) + signature = cosi.sign_with_privkeys(digest, PRIVATE_KEYS_DEV[:threshold]) sigmask = 0 for i in range(threshold): sigmask |= 1 << i diff --git a/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py b/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py index bae94538b..70ca3e75c 100644 --- a/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py +++ b/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py @@ -117,6 +117,10 @@ def _make_bad_params(): and default values of the appropriate type. """ for field in messages.RecoveryDevice.FIELDS.values(): + # language is not supported anymore: + if field.name == "language": + continue + if field.name in DRY_RUN_ALLOWED_FIELDS: continue diff --git a/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py b/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py index 05b7972d2..6c915e93c 100644 --- a/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py +++ b/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py @@ -37,7 +37,6 @@ def test_pin_passphrase(client: Client): passphrase_protection=True, pin_protection=True, label="label", - language="en-US", enforce_wordlist=True, ) ) @@ -99,7 +98,6 @@ def test_nopin_nopassphrase(client: Client): passphrase_protection=False, pin_protection=False, label="label", - language="en-US", enforce_wordlist=True, ) ) @@ -148,7 +146,6 @@ def test_word_fail(client: Client): passphrase_protection=False, pin_protection=False, label="label", - language="en-US", enforce_wordlist=True, ) ) @@ -177,7 +174,6 @@ def test_pin_fail(client: Client): passphrase_protection=True, pin_protection=True, label="label", - language="en-US", enforce_wordlist=True, ) ) @@ -210,8 +206,7 @@ def test_already_initialized(client: Client): False, False, "label", - "en-US", - client.mnemonic_callback, + input_callback=client.mnemonic_callback, ) ret = client.call_raw( diff --git a/tests/device_tests/reset_recovery/test_recovery_slip39_advanced_dryrun.py b/tests/device_tests/reset_recovery/test_recovery_slip39_advanced_dryrun.py index 659eb2a53..f64875d4e 100644 --- a/tests/device_tests/reset_recovery/test_recovery_slip39_advanced_dryrun.py +++ b/tests/device_tests/reset_recovery/test_recovery_slip39_advanced_dryrun.py @@ -50,7 +50,6 @@ def test_2of3_dryrun(client: Client): passphrase_protection=False, pin_protection=False, label="label", - language="en-US", dry_run=True, ) @@ -75,6 +74,5 @@ def test_2of3_invalid_seed_dryrun(client: Client): passphrase_protection=False, pin_protection=False, label="label", - language="en-US", dry_run=True, ) diff --git a/tests/device_tests/reset_recovery/test_recovery_slip39_basic_dryrun.py b/tests/device_tests/reset_recovery/test_recovery_slip39_basic_dryrun.py index aee56a73f..35b559070 100644 --- a/tests/device_tests/reset_recovery/test_recovery_slip39_basic_dryrun.py +++ b/tests/device_tests/reset_recovery/test_recovery_slip39_basic_dryrun.py @@ -46,7 +46,6 @@ def test_2of3_dryrun(client: Client): passphrase_protection=False, pin_protection=False, label="label", - language="en-US", dry_run=True, ) @@ -71,6 +70,5 @@ def test_2of3_invalid_seed_dryrun(client: Client): passphrase_protection=False, pin_protection=False, label="label", - language="en-US", dry_run=True, ) diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py b/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py index ee7db378d..70c9c3db1 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py @@ -35,7 +35,6 @@ def test_reset_device_skip_backup(client: Client): strength=STRENGTH, passphrase_protection=False, pin_protection=False, - language="en-US", label="test", skip_backup=True, ) @@ -104,7 +103,6 @@ def test_reset_device_skip_backup_break(client: Client): strength=STRENGTH, passphrase_protection=False, pin_protection=False, - language="en-US", label="test", skip_backup=True, ) @@ -163,7 +161,6 @@ def test_reset_device_skip_backup_show_entropy_fail(client: Client): strength=STRENGTH, passphrase_protection=False, pin_protection=False, - language="en-US", label="test", skip_backup=True, ) diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_t1.py b/tests/device_tests/reset_recovery/test_reset_bip39_t1.py index 9ad7b1a38..ed2ff8f12 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_t1.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_t1.py @@ -34,7 +34,6 @@ def reset_device(client: Client, strength: int): strength=strength, passphrase_protection=False, pin_protection=False, - language="en-US", label="test", ) ) @@ -110,7 +109,6 @@ def test_reset_device_256_pin(client: Client): strength=strength, passphrase_protection=True, pin_protection=True, - language="en-US", label="test", ) ) @@ -199,7 +197,6 @@ def test_failed_pin(client: Client): strength=strength, passphrase_protection=True, pin_protection=True, - language="en-US", label="test", ) ) @@ -235,4 +232,4 @@ def test_failed_pin(client: Client): def test_already_initialized(client: Client): with pytest.raises(Exception): - device.reset(client, False, 128, True, True, "label", "en-US") + device.reset(client, False, 128, True, True, "label") diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_t2.py b/tests/device_tests/reset_recovery/test_reset_bip39_t2.py index 1e3fe2091..a30c6007e 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_t2.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_t2.py @@ -44,7 +44,6 @@ def reset_device(client: Client, strength: int): passphrase_protection=False, pin_protection=False, label="test", - language="en-US", ) # generate mnemonic locally @@ -94,7 +93,6 @@ def test_reset_device_pin(client: Client): passphrase_protection=True, pin_protection=True, label="test", - language="en-US", ) # generate mnemonic locally @@ -129,7 +127,6 @@ def test_reset_failed_check(client: Client): passphrase_protection=False, pin_protection=False, label="test", - language="en-US", ) # generate mnemonic locally @@ -188,4 +185,4 @@ def test_failed_pin(client: Client): @pytest.mark.setup_client(mnemonic=MNEMONIC12) def test_already_initialized(client: Client): with pytest.raises(Exception): - device.reset(client, False, 128, True, True, "label", "en-US") + device.reset(client, False, 128, True, True, "label") diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py b/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py index fa6957ccd..5b2e93458 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py @@ -50,7 +50,6 @@ def reset(client: Client, strength: int = 128, skip_backup: bool = False) -> str passphrase_protection=False, pin_protection=False, label="test", - language="en-US", backup_type=BackupType.Bip39, ) diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py index d45d30e8b..f594d6167 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py @@ -70,7 +70,6 @@ def reset(client: Client, strength: int = 128) -> list[str]: passphrase_protection=False, pin_protection=False, label="test", - language="en-US", backup_type=BackupType.Slip39_Advanced, ) diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py index 56d44e2b3..a998c8d3a 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py @@ -60,7 +60,6 @@ def reset(client: Client, strength: int = 128) -> list[str]: passphrase_protection=False, pin_protection=False, label="test", - language="en-US", backup_type=BackupType.Slip39_Basic, ) diff --git a/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py b/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py index f46138cc9..b8b3eeb85 100644 --- a/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py @@ -46,7 +46,6 @@ def test_reset_device_slip39_advanced(client: Client): passphrase_protection=False, pin_protection=False, label="test", - language="en-US", backup_type=BackupType.Slip39_Advanced, ) diff --git a/tests/device_tests/reset_recovery/test_reset_slip39_basic.py b/tests/device_tests/reset_recovery/test_reset_slip39_basic.py index 81d43606d..7321ce628 100644 --- a/tests/device_tests/reset_recovery/test_reset_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_reset_slip39_basic.py @@ -45,7 +45,6 @@ def reset_device(client: Client, strength: int): passphrase_protection=False, pin_protection=False, label="test", - language="en-US", backup_type=BackupType.Slip39_Basic, ) diff --git a/tests/device_tests/test_language.py b/tests/device_tests/test_language.py new file mode 100644 index 000000000..ba61572d5 --- /dev/null +++ b/tests/device_tests/test_language.py @@ -0,0 +1,209 @@ +# This file is part of the Trezor project. +# +# Copyright (C) 2012-2019 SatoshiLabs and contributors +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the License along with this library. +# If not, see . + +from copy import deepcopy +from typing import Iterator + +import pytest + +from trezorlib import debuglink, device, exceptions, messages, models +from trezorlib.debuglink import TrezorClientDebugLink as Client + +from ..translations import LANGUAGES, build_and_sign_blob, get_lang_json, set_language + +pytestmark = pytest.mark.skip_t1 + + +MAX_DATA_LENGTH = {models.T2T1: 48 * 1024, models.T2B1: 32 * 1024} + + +def get_confirm(lang: str) -> str: + content = get_lang_json(lang) + return content["translations"]["words__confirm"] + + +@pytest.fixture +def client(client: Client) -> Iterator[Client]: + lang_before = client.features.language or "" + try: + set_language(client, "en") + yield client + finally: + set_language(client, lang_before[:2]) + + +def _check_ping_screen_texts(client: Client, title: str, right_button: str) -> None: + def ping_input_flow(client: Client, title: str, right_button: str): + yield + layout = client.debug.wait_layout() + assert layout.title().upper() == title.upper() + assert layout.button_contents()[-1] == right_button.upper() + client.debug.press_yes() + + # TT does not have a right button text (but a green OK tick) + if client.features.model == "T": + right_button = "-" + + with client: + client.watch_layout(True) + client.set_input_flow(ping_input_flow(client, title, right_button)) + ping = client.call(messages.Ping(message="ahoj!", button_protection=True)) + assert ping == messages.Success(message="ahoj!") + + +def test_change_language_errors(client: Client): + # TODO: check invalid signature + # TODO: may split it into multiple tests + + assert client.features.language == "en-US" + + # Translations too long + # Sending more than allowed by the flash capacity + max_length = MAX_DATA_LENGTH[client.model] + with pytest.raises(exceptions.TrezorFailure, match="Translations too long"), client: + bad_data = (max_length + 1) * b"a" + device.change_language(client, language_data=bad_data) + assert client.features.language == "en-US" + + # Invalid data length + # Sending more data than advertised in the header + with pytest.raises(exceptions.TrezorFailure, match="Invalid data length"), client: + good_data = build_and_sign_blob("cs", client.model) + bad_data = good_data + b"abcd" + device.change_language(client, language_data=bad_data) + assert client.features.language == "en-US" + + # Invalid header magic + # Does not match the expected magic + with pytest.raises(exceptions.TrezorFailure, match="DataError"), client: + good_data = build_and_sign_blob("cs", client.model) + bad_data = 4 * b"a" + good_data[4:] + device.change_language(client, language_data=bad_data) + assert client.features.language == "en-US" + + # Invalid data hash + # Changing the data after their hash has been calculated + with pytest.raises(exceptions.TrezorFailure, match="DataError"), client: + good_data = build_and_sign_blob("cs", client.model) + bad_data = good_data[:-8] + 8 * b"a" + device.change_language( + client, + language_data=bad_data, + ) + assert client.features.language == "en-US" + + # Translations version mismatch + # Change the version to one not matching the current device + with pytest.raises( + exceptions.TrezorFailure, match="Translations version mismatch" + ), client: + data = get_lang_json("cs") + data["header"]["version"] = "3.5.4" + device.change_language( + client, + language_data=build_and_sign_blob(data, client.model), + ) + assert client.features.language == "en-US" + + # Invalid header version + # Version is not a valid semver with integers + with pytest.raises(ValueError), client: + data = get_lang_json("cs") + data["header"]["version"] = "ABC.XYZ.DEF" + device.change_language( + client, + language_data=build_and_sign_blob(data, client.model), + ) + assert client.features.language == "en-US" + + _check_ping_screen_texts(client, get_confirm("en"), get_confirm("en")) + + +@pytest.mark.parametrize("lang", LANGUAGES) +def test_full_language_change(client: Client, lang: str): + assert client.features.language == "en-US" + + # Setting selected language + set_language(client, lang) + assert client.features.language[:2] == lang + _check_ping_screen_texts(client, get_confirm(lang), get_confirm(lang)) + + # Setting the default language via empty data + set_language(client, "en") + assert client.features.language == "en-US" + _check_ping_screen_texts(client, get_confirm("en"), get_confirm("en")) + + +def test_language_is_removed_after_wipe(client: Client): + assert client.features.language == "en-US" + + _check_ping_screen_texts(client, get_confirm("en"), get_confirm("en")) + + # Setting cs language + set_language(client, "cs") + assert client.features.language == "cs-CZ" + + _check_ping_screen_texts(client, get_confirm("cs"), get_confirm("cs")) + + # Wipe device + device.wipe(client) + assert client.features.language == "en-US" + + # Load it again + debuglink.load_device( + client, + mnemonic=" ".join(["all"] * 12), + pin=None, + passphrase_protection=False, + label="test", + ) + assert client.features.language == "en-US" + + _check_ping_screen_texts(client, get_confirm("en"), get_confirm("en")) + + +def test_translations_renders_on_screen(client: Client): + czech_data = get_lang_json("cs") + + # Setting some values of words__confirm key and checking that in ping screen title + assert client.features.language == "en-US" + + # Normal english + _check_ping_screen_texts(client, get_confirm("en"), get_confirm("en")) + + # Normal czech + set_language(client, "cs") + assert client.features.language == "cs-CZ" + _check_ping_screen_texts(client, get_confirm("cs"), get_confirm("cs")) + + # Modified czech - changed value + czech_data_copy = deepcopy(czech_data) + new_czech_confirm = "ABCD" + czech_data_copy["translations"]["words__confirm"] = new_czech_confirm + device.change_language( + client, + language_data=build_and_sign_blob(czech_data_copy, client.model), + ) + _check_ping_screen_texts(client, new_czech_confirm, get_confirm("cs")) + + # Modified czech - key deleted completely, english is shown + czech_data_copy = deepcopy(czech_data) + del czech_data_copy["translations"]["words__confirm"] + device.change_language( + client, + language_data=build_and_sign_blob(czech_data_copy, client.model), + ) + _check_ping_screen_texts(client, get_confirm("en"), get_confirm("cs")) diff --git a/tests/device_tests/test_msg_applysettings.py b/tests/device_tests/test_msg_applysettings.py index a2a14861f..2b324d39c 100644 --- a/tests/device_tests/test_msg_applysettings.py +++ b/tests/device_tests/test_msg_applysettings.py @@ -77,18 +77,6 @@ def test_apply_settings_rotation(client: Client): assert client.features.display_rotation == 270 -@pytest.mark.skip_t2 -@pytest.mark.skip_tr -def test_invalid_language(client: Client): - assert client.features.language == "en-US" - - with client: - _set_expected_responses(client) - device.apply_settings(client, language="nonexistent") - - assert client.features.language == "en-US" - - @pytest.mark.setup_client(pin=PIN4, passphrase=False) def test_apply_settings_passphrase(client: Client): with client: diff --git a/tests/device_tests/test_msg_backup_device.py b/tests/device_tests/test_msg_backup_device.py index 8a5903768..bdcecd67e 100644 --- a/tests/device_tests/test_msg_backup_device.py +++ b/tests/device_tests/test_msg_backup_device.py @@ -163,6 +163,5 @@ def test_no_backup_show_entropy_fails(client: Client): passphrase_protection=False, pin_protection=False, label="test", - language="en-US", no_backup=True, ) diff --git a/tests/device_tests/test_msg_loaddevice.py b/tests/device_tests/test_msg_loaddevice.py index 6fbe60603..9f1de13d8 100644 --- a/tests/device_tests/test_msg_loaddevice.py +++ b/tests/device_tests/test_msg_loaddevice.py @@ -113,7 +113,6 @@ def test_load_device_utf(client: Client): pin="", passphrase_protection=True, label="test", - language="en-US", skip_checksum=True, ) client.use_passphrase(passphrase_nfkd) @@ -126,7 +125,6 @@ def test_load_device_utf(client: Client): pin="", passphrase_protection=True, label="test", - language="en-US", skip_checksum=True, ) client.use_passphrase(passphrase_nfc) @@ -139,7 +137,6 @@ def test_load_device_utf(client: Client): pin="", passphrase_protection=True, label="test", - language="en-US", skip_checksum=True, ) client.use_passphrase(passphrase_nfkc) @@ -152,7 +149,6 @@ def test_load_device_utf(client: Client): pin="", passphrase_protection=True, label="test", - language="en-US", skip_checksum=True, ) client.use_passphrase(passphrase_nfd) diff --git a/tests/device_tests/test_protection_levels.py b/tests/device_tests/test_protection_levels.py index 530716da2..26853014f 100644 --- a/tests/device_tests/test_protection_levels.py +++ b/tests/device_tests/test_protection_levels.py @@ -222,7 +222,7 @@ def test_reset_device(client: Client): + [messages.ButtonRequest] * 24 + [messages.Success, messages.Features] ) - device.reset(client, False, 128, True, False, "label", "en-US") + device.reset(client, False, 128, True, False, "label") with pytest.raises(TrezorFailure): # This must fail, because device is already initialized @@ -234,7 +234,6 @@ def test_reset_device(client: Client): passphrase_protection=True, pin_protection=False, label="label", - language="en-US", ) ) @@ -259,8 +258,7 @@ def test_recovery_device(client: Client): False, False, "label", - "en-US", - client.mnemonic_callback, + input_callback=client.mnemonic_callback, ) with pytest.raises(TrezorFailure): @@ -272,7 +270,6 @@ def test_recovery_device(client: Client): passphrase_protection=False, pin_protection=False, label="label", - language="en-US", ) ) diff --git a/tests/device_tests/test_sdcard.py b/tests/device_tests/test_sdcard.py index 983d1d914..bc4dc1269 100644 --- a/tests/device_tests/test_sdcard.py +++ b/tests/device_tests/test_sdcard.py @@ -21,6 +21,8 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure from trezorlib.messages import SdProtectOperationType as Op +from .. import translations as TR + pytestmark = [pytest.mark.skip_t1, pytest.mark.skip_tr] @@ -57,7 +59,7 @@ def test_sd_protect_unlock(client: Client): client.debug.input("1234") yield # do you really want to enable SD protection - assert "SD card protection" in layout().text_content() + TR.assert_in(layout().text_content(), "sd_card__enable") client.debug.press_yes() yield # enter current PIN @@ -65,7 +67,7 @@ def test_sd_protect_unlock(client: Client): client.debug.input("1234") yield # you have successfully enabled SD protection - assert "You have successfully enabled SD protection." in layout().text_content() + TR.assert_in(layout().text_content(), "sd_card__enabled") client.debug.press_yes() with client: @@ -75,7 +77,7 @@ def test_sd_protect_unlock(client: Client): def input_flow_change_pin(): yield # do you really want to change PIN? - assert "PIN SETTINGS" == layout().title() + TR.assert_equals(layout().title(), "pin__title_settings") client.debug.press_yes() yield # enter current PIN @@ -91,7 +93,7 @@ def test_sd_protect_unlock(client: Client): client.debug.input("1234") yield # Pin change successful - assert "PIN changed" in layout().text_content() + TR.assert_in(layout().text_content(), "pin__changed") client.debug.press_yes() with client: @@ -103,7 +105,7 @@ def test_sd_protect_unlock(client: Client): def input_flow_change_pin_format(): yield # do you really want to change PIN? - assert "PIN SETTINGS" == layout().title() + TR.assert_equals(layout().title(), "pin__title_settings") client.debug.press_yes() yield # enter current PIN @@ -111,7 +113,7 @@ def test_sd_protect_unlock(client: Client): client.debug.input("1234") yield # SD card problem - assert "Wrong SD card" in layout().text_content() + TR.assert_in(layout().text_content(), "sd_card__unplug_and_insert_correct") client.debug.press_no() # close with client, pytest.raises(TrezorFailure) as e: diff --git a/tests/device_tests/test_session_id_and_passphrase.py b/tests/device_tests/test_session_id_and_passphrase.py index 2bb9677e5..b7d734514 100644 --- a/tests/device_tests/test_session_id_and_passphrase.py +++ b/tests/device_tests/test_session_id_and_passphrase.py @@ -24,6 +24,8 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.messages import FailureType, SafetyCheckLevel from trezorlib.tools import parse_path +from .. import translations as TR + XPUB_PASSPHRASES = { "A": "xpub6CekxGcnqnJ6osfY4Rrq7W5ogFtR54KUvz4H16XzaQuukMFZCGebEpVznfq4yFcKEmYyShwj2UKjL7CazuNSuhdkofF4mHabHkLxCMVvsqG", "B": "xpub6CFxuyQpgryoR64QC38w42dLgDv5P4qWXhn1fbaN62UYzu1wJXZyrYqGnkq5d8xPUK68RXtXFBiqp3rfLGpeQ57zLtx675ZZn5ezKMAWQfu", @@ -395,16 +397,13 @@ def test_hide_passphrase_from_host(client: Client): def input_flow(): yield - layout = client.debug.wait_layout() + TR.assert_in( + client.debug.wait_layout().text_content(), + "passphrase__access_hidden_wallet", + ) if client.debug.model == "T": - assert ( - "Passphrase provided by host will be used but will not be displayed due to the device settings." - in layout.text_content() - ) client.debug.press_yes() elif client.debug.model == "Safe 3": - layout = client.debug.wait_layout() - assert "will not be displayed" in layout.text_content() client.debug.press_right() client.debug.press_right() client.debug.press_yes() @@ -433,15 +432,18 @@ def test_hide_passphrase_from_host(client: Client): def input_flow(): yield - layout = client.debug.wait_layout() - assert "Next screen will show the passphrase" in layout.text_content() + TR.assert_in( + client.debug.wait_layout().text_content(), + "passphrase__next_screen_will_show_passphrase", + ) client.debug.press_yes() yield - layout = client.debug.wait_layout() - assert "confirm passphrase" in layout.title().lower() - - assert passphrase in layout.text_content() + TR.assert_equals( + client.debug.wait_layout().title(), + "passphrase__title_confirm", + ) + assert passphrase in client.debug.wait_layout().text_content() client.debug.press_yes() client.watch_layout() diff --git a/tests/gitlab.py b/tests/gitlab.py index b7719bf38..dcf3c268f 100644 --- a/tests/gitlab.py +++ b/tests/gitlab.py @@ -24,14 +24,31 @@ RAW_REPORT_URL_TEMPLATE = ( "https://gitlab.com/satoshilabs/trezor/trezor-firmware/-/jobs/{}/raw" ) -UI_JOB_NAMES = ( +UI_JOBS_ENGLISH = [ "core click R test", "core device R test", "core click test", "core device test", "core persistence test", "legacy device test", -) +] + + +def get_foreign_tests(langs: list[str]) -> list[str]: + result: list[str] = [] + for lang in langs: + result += [ + f"core click R test {lang}", + f"core device R test {lang}", + f"core click test {lang}", + f"core device test {lang}", + ] + return result + + +FOREIGN_LANGS = ["french", "czech", "german", "spanish"] + +UI_JOB_NAMES = UI_JOBS_ENGLISH + get_foreign_tests(FOREIGN_LANGS) SAVE_GRAPHQL_RESULTS = False diff --git a/tests/input_flows.py b/tests/input_flows.py index 3373f0b1c..beee69223 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -20,27 +20,21 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.debuglink import multipage_content from . import buttons +from . import translations as TR from .common import ( BRGeneratorType, check_pin_backoff_time, click_info_button_tt, click_through, + get_text_possible_pagination, read_and_confirm_mnemonic, + swipe_if_necessary, ) from .input_flows_helpers import BackupFlow, EthereumFlow, PinFlow, RecoveryFlow B = messages.ButtonRequestType -def swipe_if_necessary(debug: DebugLink, br_code: B | None = None) -> BRGeneratorType: - br = yield - if br_code is not None: - assert br.code == br_code - if br.pages is not None: - for _ in range(br.pages - 1): - debug.swipe_up() - - class InputFlowBase: def __init__(self, client: Client): self.client = client @@ -264,7 +258,7 @@ class InputFlowSignMessageInfo(InputFlowBase): self.debug.click(buttons.CORNER_BUTTON, wait=True) self.debug.click(buttons.CORNER_BUTTON, wait=True) self.debug.press_no(wait=True) - self.debug.synchronize_at("mismatch") + self.debug.synchronize_at("IconDialog") # address mismatch? self.debug.press_no() yield @@ -340,8 +334,10 @@ class InputFlowShowAddressQRCodeCancel(InputFlowBase): self.debug.press_left() self.debug.press_left() # Cancel - self.debug.press_left() + self.debug.press_left(wait=True) # Confirm address mismatch + # Clicking right twice, as some languages can have two pages + self.debug.press_right() self.debug.press_right() @@ -358,7 +354,8 @@ class InputFlowShowMultisigXPUBs(InputFlowBase): yield # show address layout = self.debug.wait_layout() - assert "RECEIVE ADDRESS\n(MULTISIG)" == layout.title() + TR.assert_in(layout.title(), "address__title_receive_address") + assert "(MULTISIG)" in layout.title() assert layout.text_content().replace(" ", "") == self.address self.debug.click(buttons.CORNER_BUTTON) @@ -367,15 +364,13 @@ class InputFlowShowMultisigXPUBs(InputFlowBase): layout = self.debug.swipe_left(wait=True) # address details assert "Multisig 2 of 3" in layout.screen_content() - assert "Derivation path:" in layout.screen_content() + TR.assert_in(layout.screen_content(), "address_details__derivation_path") # Three xpub pages with the same testing logic for xpub_num in range(3): - expected_title = f"MULTISIG XPUB #{xpub_num + 1}\n" + ( - "(YOURS)" if self.index == xpub_num else "(COSIGNER)" - ) + expected_title = f"MULTISIG XPUB #{xpub_num + 1}" layout = self.debug.swipe_left(wait=True) - assert expected_title == layout.title() + assert expected_title in layout.title() content = layout.text_content().replace(" ", "") assert self.xpubs[xpub_num] in content @@ -393,7 +388,8 @@ class InputFlowShowMultisigXPUBs(InputFlowBase): yield # show address layout = self.debug.wait_layout() - assert "RECEIVE ADDRESS (MULTISIG)" in layout.title() + TR.assert_in(layout.title(), "address__title_receive_address") + assert "(MULTISIG)" in layout.title() assert layout.text_content().replace(" ", "") == self.address self.debug.press_right() @@ -406,9 +402,7 @@ class InputFlowShowMultisigXPUBs(InputFlowBase): # Three xpub pages with the same testing logic for xpub_num in range(3): - expected_title = f"MULTISIG XPUB #{xpub_num + 1} " + ( - "(YOURS)" if self.index == xpub_num else "(COSIGNER)" - ) + expected_title = f"MULTISIG XPUB #{xpub_num + 1}" layout = self.debug.press_right(wait=True) assert expected_title in layout.title() xpub_part_1 = layout.text_content().replace(" ", "") @@ -555,7 +549,7 @@ def sign_tx_go_to_info(client: Client) -> Generator[None, None, str]: client.debug.press_info() layout = client.debug.wait_layout() - content = layout.text_content().lower() + content = layout.text_content() client.debug.click(buttons.CORNER_BUTTON, wait=True) @@ -596,20 +590,21 @@ class InputFlowSignTxInformation(InputFlowBase): def __init__(self, client: Client): super().__init__(client) - def assert_content(self, content: str) -> None: - assert "sending from" in content - assert "legacy #6" in content - assert "fee rate" in content + def assert_content(self, content: str, title_path: str) -> None: + TR.assert_in(content, title_path) + assert "Legacy #6" in content + TR.assert_in(content, "confirm_total__fee_rate") assert "71.56 sat" in content def input_flow_tt(self) -> BRGeneratorType: content = yield from sign_tx_go_to_info(self.client) - self.assert_content(content) + self.assert_content(content, "confirm_total__sending_from_account") self.debug.press_yes() def input_flow_tr(self) -> BRGeneratorType: content = yield from sign_tx_go_to_info_tr(self.client) - self.assert_content(content.lower()) + print("content", content) + self.assert_content(content, "confirm_total__title_sending_from") self.debug.press_yes() @@ -617,10 +612,10 @@ class InputFlowSignTxInformationMixed(InputFlowBase): def __init__(self, client: Client): super().__init__(client) - def assert_content(self, content: str) -> None: - assert "sending from" in content - assert "multiple accounts" in content - assert "fee rate" in content + def assert_content(self, content: str, title_path: str) -> None: + TR.assert_in(content, title_path) + TR.assert_in(content, "bitcoin__multiple_accounts") + TR.assert_in(content, "confirm_total__fee_rate") assert "18.33 sat" in content def input_flow_tt(self) -> BRGeneratorType: @@ -629,12 +624,16 @@ class InputFlowSignTxInformationMixed(InputFlowBase): self.debug.press_yes() content = yield from sign_tx_go_to_info(self.client) - self.assert_content(content) + self.assert_content(content, "confirm_total__sending_from_account") self.debug.press_yes() def input_flow_tr(self) -> BRGeneratorType: + # multiple accounts warning + yield + self.debug.press_yes() + content = yield from sign_tx_go_to_info_tr(self.client) - self.assert_content(content.lower()) + self.assert_content(content, "confirm_total__title_sending_from") self.debug.press_yes() @@ -689,7 +688,7 @@ class InputFlowSignTxInformationReplacement(InputFlowBase): def lock_time_input_flow_tt( debug: DebugLink, - layout_assert_func: Callable[[DebugLink], None], + layout_assert_func: Callable[[DebugLink, messages.ButtonRequest], None], double_confirm: bool = False, ) -> BRGeneratorType: yield # confirm output @@ -699,8 +698,8 @@ def lock_time_input_flow_tt( debug.wait_layout() debug.press_yes() - yield # confirm locktime - layout_assert_func(debug) + br = yield # confirm locktime + layout_assert_func(debug, br) debug.press_yes() yield # confirm transaction @@ -711,7 +710,8 @@ def lock_time_input_flow_tt( def lock_time_input_flow_tr( - debug: DebugLink, layout_assert_func: Callable[[DebugLink], None] + debug: DebugLink, + layout_assert_func: Callable[[DebugLink, messages.ButtonRequest], None], ) -> BRGeneratorType: yield # confirm address debug.wait_layout() @@ -720,8 +720,8 @@ def lock_time_input_flow_tr( debug.wait_layout() debug.press_yes() - yield # confirm locktime - layout_assert_func(debug) + br = yield # confirm locktime + layout_assert_func(debug, br) debug.press_yes() yield # confirm transaction @@ -733,9 +733,9 @@ class InputFlowLockTimeBlockHeight(InputFlowBase): super().__init__(client) self.block_height = block_height - def assert_func(self, debug: DebugLink) -> None: - layout_text = debug.wait_layout().text_content() - assert "blockheight" in layout_text + def assert_func(self, debug: DebugLink, br: messages.ButtonRequest) -> None: + layout_text = get_text_possible_pagination(debug, br) + TR.assert_in(layout_text, "bitcoin__locktime_set_to_blockheight") assert self.block_height in layout_text def input_flow_tt(self) -> BRGeneratorType: @@ -752,9 +752,9 @@ class InputFlowLockTimeDatetime(InputFlowBase): super().__init__(client) self.lock_time_str = lock_time_str - def assert_func(self, debug: DebugLink): - layout_text = debug.wait_layout().text_content() - assert "Locktime" in layout_text + def assert_func(self, debug: DebugLink, br: messages.ButtonRequest) -> None: + layout_text = get_text_possible_pagination(debug, br) + TR.assert_in(layout_text, "bitcoin__locktime_set_to") assert self.lock_time_str in layout_text def input_flow_tt(self) -> BRGeneratorType: @@ -1595,10 +1595,15 @@ class InputFlowResetSkipBackup(InputFlowBase): def input_flow_common(self) -> BRGeneratorType: yield from self.BAK.confirm_new_wallet() yield # Skip Backup - assert "New wallet created" in self.text_content() + info_path = ( + "backup__new_wallet_created" + if self.debug.model == "Safe 3" + else "backup__new_wallet_successfully_created" + ) + TR.assert_in(self.text_content(), info_path) if self.debug.model == "Safe 3": self.debug.press_right() self.debug.press_no() yield # Confirm skip backup - assert "skip the backup" in self.text_content() + TR.assert_in(self.text_content(), "backup__want_to_skip") self.debug.press_no() diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 5b73924d1..d3ac30297 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -1,7 +1,8 @@ from trezorlib import messages from trezorlib.debuglink import TrezorClientDebugLink as Client -from .common import BRGeneratorType +from . import translations as TR +from .common import BRGeneratorType, get_text_possible_pagination B = messages.ButtonRequestType @@ -19,7 +20,9 @@ class PinFlow: self.debug.input(pin) if self.debug.model == "Safe 3": yield # Reenter PIN - assert "re-enter PIN" in self.debug.wait_layout().text_content() + TR.assert_in( + self.debug.wait_layout().text_content(), "pin__reenter_to_confirm" + ) self.debug.press_yes() yield # Enter PIN again assert "PinKeyboard" in self.debug.wait_layout().all_components() @@ -36,7 +39,7 @@ class BackupFlow: def confirm_new_wallet(self) -> BRGeneratorType: yield - assert "By continuing you agree" in self.debug.wait_layout().text_content() + TR.assert_in(self.debug.wait_layout().text_content(), "reset__by_continuing") if self.debug.model == "Safe 3": self.debug.press_right() self.debug.press_yes() @@ -47,16 +50,19 @@ class RecoveryFlow: self.client = client self.debug = self.client.debug + def _text_content(self) -> str: + return self.debug.wait_layout().text_content() + def confirm_recovery(self) -> BRGeneratorType: yield - assert "By continuing you agree" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "reset__by_continuing") if self.debug.model == "Safe 3": self.debug.press_right() self.debug.press_yes() def confirm_dry_run(self) -> BRGeneratorType: yield - assert "Check your backup" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__check_dry_run") self.debug.press_yes() def setup_slip39_recovery(self, num_words: int) -> BRGeneratorType: @@ -73,16 +79,17 @@ class RecoveryFlow: def tr_recovery_homescreen(self) -> BRGeneratorType: yield - assert "number of words" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__num_of_words") self.debug.press_yes() def enter_your_backup(self) -> BRGeneratorType: yield - assert "Enter your backup" in self.debug.wait_layout().text_content() - if ( - self.debug.model == "Safe 3" - and "BACKUP CHECK" not in self.debug.wait_layout().title() - ): + TR.assert_in(self._text_content(), "recovery__enter_backup") + is_dry_run = any( + title in self.debug.wait_layout().title().lower() + for title in TR.translate("recovery__title_dry_run", lower=True) + ) + if self.debug.model == "Safe 3" and not is_dry_run: # Normal recovery has extra info (not dry run) self.debug.press_right(wait=True) self.debug.press_right(wait=True) @@ -90,11 +97,12 @@ class RecoveryFlow: def enter_any_share(self) -> BRGeneratorType: yield - assert "Enter any share" in self.debug.wait_layout().text_content() - if ( - self.debug.model == "Safe 3" - and "BACKUP CHECK" not in self.debug.wait_layout().title() - ): + TR.assert_in(self._text_content(), "recovery__enter_any_share") + is_dry_run = any( + title in self.debug.wait_layout().title().lower() + for title in TR.translate("recovery__title_dry_run", lower=True) + ) + if self.debug.model == "Safe 3" and not is_dry_run: # Normal recovery has extra info (not dry run) self.debug.press_right(wait=True) self.debug.press_right(wait=True) @@ -103,13 +111,13 @@ class RecoveryFlow: def abort_recovery(self, confirm: bool) -> BRGeneratorType: yield if self.debug.model == "Safe 3": - assert "number of words" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__num_of_words") else: - assert "Enter any share" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__enter_any_share") self.debug.press_no() yield - assert "cancel the recovery" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") if self.debug.model == "Safe 3": self.debug.press_right() if confirm: @@ -121,105 +129,102 @@ class RecoveryFlow: br = yield assert br.code == B.MnemonicWordCount if self.debug.model == "Safe 3": - assert "NUMBER OF WORDS" in self.debug.wait_layout().title() + TR.assert_in(self.debug.wait_layout().title(), "word_count__title") else: - assert "number of words" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__num_of_words") self.debug.input(str(num_words)) def warning_invalid_recovery_seed(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - assert "Invalid recovery seed" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__invalid_seed_entered") self.debug.press_yes() def warning_invalid_recovery_share(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - assert "Invalid recovery share" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__invalid_share_entered") self.debug.press_yes() def warning_group_threshold_reached(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - assert "Group threshold reached" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__group_threshold_reached") self.debug.press_yes() def warning_share_already_entered(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - assert "Share already entered" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__share_already_entered") self.debug.press_yes() def warning_share_from_another_shamir(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - assert ( - "You have entered a share from another Shamir Backup" - in self.debug.wait_layout().text_content() - ) + TR.assert_in(self._text_content(), "recovery__share_from_another_shamir") self.debug.press_yes() def success_share_group_entered(self) -> BRGeneratorType: yield - assert "You have entered" in self.debug.wait_layout().text_content() - assert "Group" in self.debug.wait_layout().text_content() + TR.assert_in(self._text_content(), "recovery__you_have_entered") self.debug.press_yes() def success_wallet_recovered(self) -> BRGeneratorType: br = yield assert br.code == B.Success - assert ( - "Wallet recovered successfully" in self.debug.wait_layout().text_content() - ) + TR.assert_in(self._text_content(), "recovery__wallet_recovered") self.debug.press_yes() def success_bip39_dry_run_valid(self) -> BRGeneratorType: br = yield assert br.code == B.Success - assert "recovery seed is valid" in self.debug.wait_layout().text_content() + text = get_text_possible_pagination(self.debug, br) + # TODO: make sure the translations fit on one page + if self.client.debug.model != "T": + TR.assert_in(text, "recovery__dry_run_bip39_valid_match") self.debug.press_yes() def success_slip39_dryrun_valid(self) -> BRGeneratorType: br = yield assert br.code == B.Success - assert "recovery shares are valid" in self.debug.wait_layout().text_content() + text = get_text_possible_pagination(self.debug, br) + # TODO: make sure the translations fit on one page + if self.client.debug.model != "T": + TR.assert_in(text, "recovery__dry_run_slip39_valid_match") self.debug.press_yes() def warning_slip39_dryrun_mismatch(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - assert "do not match" in self.debug.wait_layout().text_content() + text = get_text_possible_pagination(self.debug, br) + # TODO: make sure the translations fit on one page on TT + if self.client.debug.model != "T": + TR.assert_in(text, "recovery__dry_run_slip39_valid_mismatch") self.debug.press_yes() def warning_bip39_dryrun_mismatch(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - assert "does not match" in self.debug.wait_layout().text_content() + text = get_text_possible_pagination(self.debug, br) + # TODO: make sure the translations fit on one page + if self.client.debug.model != "T": + TR.assert_in(text, "recovery__dry_run_bip39_valid_mismatch") self.debug.press_yes() def success_more_shares_needed( self, count_needed: int | None = None ) -> BRGeneratorType: - yield - assert ( - "1 more share needed" in self.debug.wait_layout().text_content().lower() - or "more shares needed" in self.debug.wait_layout().text_content().lower() - ) + br = yield + text = get_text_possible_pagination(self.debug, br) if count_needed is not None: - assert str(count_needed) in self.debug.wait_layout().text_content() + assert str(count_needed) in text self.debug.press_yes() def input_mnemonic(self, mnemonic: list[str]) -> BRGeneratorType: br = yield assert br.code == B.MnemonicInput assert "MnemonicKeyboard" in self.debug.wait_layout().all_components() - for index, word in enumerate(mnemonic): - if self.debug.model == "Safe 3": - assert f"WORD {index + 1}" in self.debug.wait_layout().title() - else: - assert ( - f"Type word {index + 1}" in self.debug.wait_layout().text_content() - ) + for _, word in enumerate(mnemonic): self.debug.input(word) def input_all_slip39_shares( @@ -258,8 +263,9 @@ class EthereumFlow: def confirm_data(self, info: bool = False, cancel: bool = False) -> BRGeneratorType: yield - assert self.debug.wait_layout().title() == "CONFIRM DATA" - assert "Size:" in self.debug.wait_layout().text_content() + TR.assert_equals( + self.debug.wait_layout().title(), "ethereum__title_confirm_data" + ) if info: self.debug.press_info() elif cancel: @@ -269,7 +275,9 @@ class EthereumFlow: def paginate_data(self) -> BRGeneratorType: br = yield - assert self.debug.wait_layout().title() == "CONFIRM DATA" + TR.assert_equals( + self.debug.wait_layout().title(), "ethereum__title_confirm_data" + ) assert br.pages is not None for i in range(br.pages): self.debug.wait_layout() @@ -279,7 +287,9 @@ class EthereumFlow: def paginate_data_go_back(self) -> BRGeneratorType: br = yield - assert self.debug.wait_layout().title() == "CONFIRM DATA" + TR.assert_equals( + self.debug.wait_layout().title(), "ethereum__title_confirm_data" + ) assert br.pages is not None assert br.pages > 2 if self.debug.model == "T": @@ -300,7 +310,7 @@ class EthereumFlow: go_back_from_summary: bool = False, ) -> BRGeneratorType: yield - assert self.debug.wait_layout().title() == "RECIPIENT" + TR.assert_equals(self.debug.wait_layout().title(), "words__recipient") if self.debug.model == "T": if cancel: @@ -308,8 +318,12 @@ class EthereumFlow: else: self.debug.press_yes() yield - assert self.debug.wait_layout().title() == "SUMMARY" - assert "Maximum fee:" in self.debug.wait_layout().text_content() + TR.assert_equals( + self.debug.wait_layout().title(), "words__title_summary" + ) + TR.assert_in( + self.debug.wait_layout().text_content(), "send__maximum_fee" + ) if go_back_from_summary: self.debug.press_no() yield @@ -317,8 +331,12 @@ class EthereumFlow: yield if info: self.debug.press_info(wait=True) - assert "Gas limit:" in self.debug.wait_layout().text_content() - assert "Gas price:" in self.debug.wait_layout().text_content() + TR.assert_in( + self.debug.wait_layout().text_content(), "ethereum__gas_limit" + ) + TR.assert_in( + self.debug.wait_layout().text_content(), "ethereum__gas_price" + ) self.debug.press_no(wait=True) self.debug.press_yes() else: @@ -327,7 +345,9 @@ class EthereumFlow: else: self.debug.press_right() yield - assert "Maximum fee:" in self.debug.wait_layout().text_content() + TR.assert_in( + self.debug.wait_layout().text_content(), "send__maximum_fee" + ) if go_back_from_summary: self.debug.press_left() yield @@ -335,9 +355,13 @@ class EthereumFlow: yield if info: self.debug.press_right(wait=True) - assert "Gas limit:" in self.debug.wait_layout().text_content() + TR.assert_in( + self.debug.wait_layout().text_content(), "ethereum__gas_limit" + ) self.debug.press_right(wait=True) - assert "Gas price:" in self.debug.wait_layout().text_content() + TR.assert_in( + self.debug.wait_layout().text_content(), "ethereum__gas_price" + ) self.debug.press_left(wait=True) self.debug.press_left(wait=True) self.debug.press_middle() diff --git a/tests/translations.py b/tests/translations.py new file mode 100644 index 000000000..358a3c6b6 --- /dev/null +++ b/tests/translations.py @@ -0,0 +1,138 @@ +import json +import typing as t +from hashlib import sha256 +from pathlib import Path + +from trezorlib import cosi, device, models +from trezorlib._internal import translations +from trezorlib.debuglink import TrezorClientDebugLink as Client + +from . import common + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parent + +TRANSLATIONS = ROOT / "core" / "translations" +FONTS_DIR = TRANSLATIONS / "fonts" +ORDER_FILE = TRANSLATIONS / "order.json" + +LANGUAGES = [file.stem for file in TRANSLATIONS.glob("??.json")] + + +def build_and_sign_blob( + lang_or_def: translations.JsonDef | Path | str, + model: models.TrezorModel, +) -> bytes: + order = translations.order_from_json(json.loads(ORDER_FILE.read_text())) + if isinstance(lang_or_def, str): + lang_or_def = get_lang_json(lang_or_def) + if isinstance(lang_or_def, Path): + lang_or_def = t.cast(translations.JsonDef, json.loads(lang_or_def.read_text())) + + # generate raw blob + version = translations.version_from_json(lang_or_def["header"]["version"]) + blob = translations.blob_from_defs(lang_or_def, order, model, version, FONTS_DIR) + + # build 0-item Merkle proof + digest = sha256(b"\x00" + blob.header_bytes).digest() + signature = cosi.sign_with_privkeys(digest, common.PRIVATE_KEYS_DEV) + blob.proof = translations.Proof( + merkle_proof=[], + sigmask=0b111, + signature=signature, + ) + return blob.build() + + +def set_language(client: Client, lang: str): + if lang.startswith("en"): + language_data = b"" + else: + language_data = build_and_sign_blob(lang, client.model) + with client: + device.change_language(client, language_data) # type: ignore + + +def get_lang_json(lang: str) -> translations.JsonDef: + assert lang in LANGUAGES + return json.loads((TRANSLATIONS / f"{lang}.json").read_text()) + + +def _get_all_language_data() -> list[dict[str, str]]: + return [_get_language_data(language) for language in LANGUAGES] + + +def _get_language_data(lang: str) -> dict[str, str]: + return get_lang_json(lang)["translations"] + + +all_language_data = _get_all_language_data() + + +def _resolve_path_to_texts( + path: str, template: t.Iterable[t.Any] = (), lower: bool = True +) -> list[str]: + texts: list[str] = [] + lookups = path.split(".") + for language_data in all_language_data: + data: dict[str, t.Any] | str = language_data + for lookup in lookups: + assert isinstance(data, dict), f"{lookup} is not a dict" + data = data[lookup] + assert isinstance(data, str), f"{path} is not a string" + if template: + data = data.format(*template) + texts.append(data) + + if lower: + texts = [t.lower() for t in texts] + texts = [t.strip() for t in texts] + return texts + + +def assert_equals(text: str, path: str, template: t.Iterable[t.Any] = ()) -> None: + # TODO: we can directly pass in the current device language + texts = _resolve_path_to_texts(path, template) + assert text.lower() in texts, f"{text} not found in {texts}" + + +def assert_equals_multiple( + text: str, paths: list[str], template: t.Iterable[t.Any] = () +) -> None: + texts: list[str] = [] + for path in paths: + texts += _resolve_path_to_texts(path, template) + assert text.lower() in texts, f"{text} not found in {texts}" + + +def assert_in(text: str, path: str, template: t.Iterable[t.Any] = ()) -> None: + texts = _resolve_path_to_texts(path, template) + for tt in texts: + if tt in text.lower(): + return + assert False, f"{text} not found in {texts}" + + +def assert_startswith(text: str, path: str, template: t.Iterable[t.Any] = ()) -> None: + texts = _resolve_path_to_texts(path, template) + for tt in texts: + if text.lower().startswith(tt): + return + assert False, f"{text} not found in {texts}" + + +def assert_template(text: str, template_path: str) -> None: + templates = _resolve_path_to_texts(template_path) + for tt in templates: + # Checking at least the first part + first_part = tt.split("{")[0] + if text.lower().startswith(first_part): + return + assert False, f"{text} not found in {templates}" + + +def translate( + path: str, template: t.Iterable[t.Any] = (), lower: bool = False +) -> list[str]: + # Do not converting to lowercase, we want the exact value + return _resolve_path_to_texts(path, template, lower=lower) diff --git a/tests/ui_tests/common.py b/tests/ui_tests/common.py index f71dfc0dd..ab60c11b4 100644 --- a/tests/ui_tests/common.py +++ b/tests/ui_tests/common.py @@ -17,8 +17,11 @@ import pytest from PIL import Image from typing_extensions import Self +from trezorlib import models from trezorlib.debuglink import TrezorClientDebugLink as Client +LANGUAGES = ["cs", "de", "en", "es", "fr"] + UI_TESTS_DIR = Path(__file__).resolve().parent SCREENS_DIR = UI_TESTS_DIR / "screens" IMAGES_DIR = SCREENS_DIR / "all_images" @@ -51,9 +54,9 @@ def prepare_fixtures( ) -> tuple[FixturesType, set[TestCase]]: """Prepare contents of fixtures.json""" # set up brand new contents - grouped_tests: dict[tuple[str, str], dict[str, str]] = {} + grouped_tests: dict[tuple[str, str, str], dict[str, str]] = {} for result in results: - idx = result.test.model, result.test.group + idx = result.test.model, result.test.group, result.test.language group = grouped_tests.setdefault(idx, {}) group[result.test.fixtures_name] = result.actual_hash @@ -61,16 +64,23 @@ def prepare_fixtures( # merge with previous fixtures fixtures = deepcopy(get_current_fixtures()) - for (model, group), new_content in grouped_tests.items(): + for (model, group, language), new_content in grouped_tests.items(): # for every model/group, update the data with the new content current_content = fixtures.setdefault(model, {}).setdefault(group, {}) if remove_missing: + # Need to preserve all the languages except the current one + diff_languages: dict[str, str] = {} + for key in list(current_content.keys()): + if TestCase.get_language_from_fixture_name(key) != language: + diff_languages[key] = current_content.pop(key) + new_tests = set(new_content.keys()) old_tests = set(current_content.keys()) missing_tests |= { - TestCase(model, group, test) for test in old_tests - new_tests + TestCase(model, group, test, language) for test in old_tests - new_tests } current_content.clear() + current_content.update(diff_languages) current_content.update(new_content) @@ -220,27 +230,37 @@ class TestCase: model: str group: str name: str + language: str @classmethod def build(cls, client: Client, request: pytest.FixtureRequest) -> Self: - model = client.features.model # FIXME - if model == "Safe 3": - model = "R" + if client.model is models.T2B1: + model_name = "R" + else: + model_name = client.model.name name, group = _get_test_name_and_group(request.node.nodeid) + full_language = client.features.language + assert full_language + language = full_language[:2] return cls( - model=f"T{model}", + model=f"T{model_name}", name=name, group=group, + language=language, ) + @staticmethod + def get_language_from_fixture_name(fixture_name: str) -> str: + return fixture_name.split("_")[1] + @property def id(self) -> str: - return f"{self.model}-{self.group}-{self.name}" + return f"{self.model}_{self.language}-{self.group}-{self.name}" @property def fixtures_name(self) -> str: - return f"{self.model}_{self.name}" + return f"{self.model}_{self.language}_{self.name}" @property def dir(self) -> Path: @@ -312,6 +332,7 @@ class TestResult: model=metadata["test"]["model"], group=metadata["test"]["group"], name=metadata["test"]["name"], + language=metadata["test"]["language"], ) return cls( test=test, diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 4debaf0a5..bd1beea65 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -1,2952 +1,11917 @@ { "T1": { "device_tests": { -"T1_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "84d5223f94a7a31dc23d278121c4829f446611582065a67673be3b7d6a5b1274", -"T1_bitcoin-test_authorize_coinjoin.py::test_get_address": "098f8204516ea6e563b1ff07ef645db5df81dacd6985dc5cdfbd495846cd3683", -"T1_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1257ec89d4620ed9f34c986cd925717676c9b1e9e143e040c33f1a88d1f8c8a7", -"T1_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5628b8419edd4c5211aab8af46f146542c605e8e24e6cd79ef0d3b378c98982a", -"T1_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "0ffc9ee5242b69975c12aa901d47dc80e44c2bbc42f98e12bf35d36adbca70b7", -"T1_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "0ffc9ee5242b69975c12aa901d47dc80e44c2bbc42f98e12bf35d36adbca70b7", -"T1_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "39ce1d721b7516f90c027c8abf28ebad28dce18b82618764624c93a5e2bf1736", -"T1_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "3560ac3e7258a710c75827cf6eb0bdf2456d448c3c270b7971eaa0ea94670d3f", -"T1_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "dd06d17f855486ae857c7d26e19f738e0743cabd2c88d6aad23e5aead1e51ba8", -"T1_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "84d5223f94a7a31dc23d278121c4829f446611582065a67673be3b7d6a5b1274", -"T1_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "84d5223f94a7a31dc23d278121c4829f446611582065a67673be3b7d6a5b1274", -"T1_bitcoin-test_bcash.py::test_attack_change_input": "6111e313995d38c3970c92e48047fe4088c83666c64c6c859f69a232ad62829b", -"T1_bitcoin-test_bcash.py::test_send_bch_change": "6111e313995d38c3970c92e48047fe4088c83666c64c6c859f69a232ad62829b", -"T1_bitcoin-test_bcash.py::test_send_bch_multisig_change": "0962a2e630e06b6d20282cc241be40f41bc1648d0a26247c7c008f32a197d0cb", -"T1_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "74f59c00237ae5d30f0c86095b4f919cfd9fa7bb3f529a0cc66b44623b34aeaf", -"T1_bitcoin-test_bcash.py::test_send_bch_nochange": "65698625fa35a8abf9c204f0f9eeefe2fc95676257a6eea82e66f9bef40342e2", -"T1_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8da5d660220623694342423de18cdc0ed4e9938a140a2592e53e9f71eef5923a", -"T1_bitcoin-test_bgold.py::test_attack_change_input": "c600bad21f706e280f2135ca08ff870ff9c3ff2f32ede8b6fe6a786b25aabb91", -"T1_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "c600bad21f706e280f2135ca08ff870ff9c3ff2f32ede8b6fe6a786b25aabb91", -"T1_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "ae8a974d960e31276541bceaf64a6885777b4d3c0505c13e28c8386ad5dcf98a", -"T1_bitcoin-test_bgold.py::test_send_btg_multisig_change": "8f287a145104e8c3a468c59b422acf13675b420b6b42a398052a6855c9794e6d", -"T1_bitcoin-test_bgold.py::test_send_mixed_inputs": "467f81d00bed287acb84c71c885cb881b54838b07d704af7051c10bc1637442a", -"T1_bitcoin-test_bgold.py::test_send_multisig_1": "6b858a4f7621623d93a8c9cbe3d60a1cfedd2b6f113c769f8ad4a78435850bee", -"T1_bitcoin-test_bgold.py::test_send_p2sh": "0f0acfcedc3cf9068cb7a76e56907445064382af2ca72172f40f4c8977e4973e", -"T1_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "28bc409d7db15519b0ec036704b3e604e1c3358c807b350085babeebc813b2b5", -"T1_bitcoin-test_dash.py::test_send_dash": "ca814c5cd05efd59147875367f4237b8e770a2562f4512333de072d64c31e3d2", -"T1_bitcoin-test_dash.py::test_send_dash_dip2_input": "8db12a4a38e39b305c4af996f5640236bd59dae98ca8aa3f954aca662fcf75c6", -"T1_bitcoin-test_decred.py::test_decred_multisig_change": "8f95b7d2e65a76068196ab46c8189ba5a137795b43e88699d85ad7e2c164d645", -"T1_bitcoin-test_decred.py::test_send_decred": "50fa7dc09dbf22fc4c1e62ee2870e9047e29dd050edbdcf34341a5483d52cdac", -"T1_bitcoin-test_decred.py::test_send_decred_change": "b27eb08c244e00f9a2c5fecad0a8efc65fa2eba15f72ad0eb3b42a3ac16d465d", -"T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "d1ac62d128ed78eef5947994e9c9d70194a203eadb5a50f9ca9af66b42ba333d", -"T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "9b30c98b35338d933fe992e4a47fb259a54f0f6f204610f63c6e6cbff427dbb9", -"T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "09d1f2688240677ac55f2677b62973ee7fe4ca788e9e139b9f6de5a1a66d6205", -"T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "565050e8908a69cd9866a8696cdc103c19d1299486c682211f608e63b6597648", -"T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "f71944d71edb2531faef0a177c2eda4f88bcb0ef77883db18f655d706759b5b0", -"T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "c7987e946ff4f7f80f2aef9acd226f50ab2439837a188c0601861d0f15ca14c3", -"T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "fd3a4f48f9ea6b02a88db9ec8ab21ad72a4aee1e983e4e626b420834b375e190", -"T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "0c3090e26ede1019969dee87ce0ea88d46e54ec587c54cf975e1947fe90b5a0e", -"T1_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c7a98dbc8fdf8b8a62d3ececef56e7ff2613a9491e6734b5683c1e2a5a074bed", -"T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "ec6aa625a688e2d54857aafca83b513d6509b13898b0fb79166e5d85c74a414b", -"T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "a03f1c3753c5a53e05ea9737c7f2583c2935a1a68684d37c0230a1a4d9453bea", -"T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "84ee5c5a45dbff7bb3d2d79b48e2323c84ff589540f6806b32b286f6bc5ce4e8", -"T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "f56e158c4fe862875dc4d655e0a5f203312a6509bf7c16bf462a237feaf78b7b", -"T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "5f990152867980f9b129e85f9fa1963006895c49a33045e2a9363cb9fa493f26", -"T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "bf7d2992e2732384f0e574732e36342b09ef6a8b50641a29c5d05a13c026fd7b", -"T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "a381684066de8a00048ab82491599140c8e36a8eed9b9c31284e76275b7d396c", -"T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "cd384fcf3379759dd5fc3f2737ddfb9185a55e506d9d0869f8a85ba31ed1d973", -"T1_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "f24b6c201efc2efbb174a48766df03f5964ea95908abca791714e22bcf9b635d", -"T1_bitcoin-test_firo.py::test_spend_lelantus": "cbb87e77f54c351584dd713a8eaabb99b65a515e57c30bfb9e7a38660ca6895b", -"T1_bitcoin-test_fujicoin.py::test_send_p2tr": "bfa5dc1a494ea17fd43d52a315a7f1abe9ad80d7fdaa8b3ec5f92c4118638d1e", -"T1_bitcoin-test_getaddress.py::test_bch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_bch_multisig": "730fd13c57131201223dd2f5a14f287ca3b43f5d3a526ac71a9f436b123de388", -"T1_bitcoin-test_getaddress.py::test_btc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_crw": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_elements": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_grs": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_invalid_path": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_ltc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_multisig": "09d812e81c04cef37608f181dcdefb6cd186eb5bb111d47ae0e62d1b3fdd64cf", -"T1_bitcoin-test_getaddress.py::test_multisig_missing[False]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_multisig_missing[True]": "ef912e3aed3113ed37f982568c0eca17c27feeb67e87e0f7e43cf8b3b3e8d199", -"T1_bitcoin-test_getaddress.py::test_public_ckd": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_tbtc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_tgrs": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress.py::test_unknown_path": "58c9bf03dfd3a4cbc618fe1e198058059efcdb05c9ed1d4889a029c335fc49e2", -"T1_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit.py::test_show_segwit": "22a1d378e9df57c9550660447ad80ff5551ffd2fc20f95124ac5a3c1d8327a1a", -"T1_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "3b96cab17c2093aa750ccf7d0c60df64da11a06928364c4c3173feb172ee465f", -"T1_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "9194aadede08e5a013bf91341b6422e63780f18f37e1489b5fc14d02685fc8cf", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "920090adf00433c753157b0b29abb358d07d0e1717030f347285a858df7fd6ed", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "8501c23ec8c2826224f48f0017c365571910bcce4aa80362288a32d5141a0f20", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "18fd9d3aefef5a0fcac1f2f1367efb40dbc34be2b374575f1ce589d33067aaf3", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "a4eced7042072f6a488d7badf9065eeac1633dde3a51b2e43d60e1108d3f1060", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "609455ce05260f274f9883d55ede382987daff163096003450653610b0fcf511", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "425b703b74c85729d7d02b70de9c928fe97823998b0a2cbacd7a2a5e46755c3e", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "ebcf873be9812d224dda96d0ba8c7b4624eb55bf40c0c85ac64ea0e881dd2d10", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "b496e4fc431fd4b6a2d81e8504213bdae67fc1ec2e3109f3e87206b65b8d0c78", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "45856174d447eef9f4f37e5bf27cd61181aeb3f3a4f5ae85ab38faa9e2eba15d", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "e6ec96816fdadb21c863bbbf5c2fd0e86a3ea2f86d34be80f5fc40dd032ff10f", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "d8011481696f6f8dbad3e8f9cc719fbab75ec35a90dd412bb96fcdfacfaaf1e5", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "322ab2afd0c9fd967b38b01f16eb09a949ec1e3421b44d1b2fb1ba66aa7def8c", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "506efd2adc5d5c62c850b0e38b31109171b5a7323bffd7fa8d246f5d5d7169c9", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "15c2003dc3816e73bc0673cc917301ca5b91f25cc3e2290c8d2add52e931399f", -"T1_bitcoin-test_getaddress_show.py::test_show_multisig_15": "40f652d0e899d528605f472f47ec6cb727ced8fe90588a8904b46ed39c2088e8", -"T1_bitcoin-test_getaddress_show.py::test_show_multisig_3": "05e4e5cd014bf96373788e4563a48f5cdb4c54d358a88e8a29247c2825c5669e", -"T1_bitcoin-test_getaddress_show.py::test_show_t1[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-d9618168": "9e7c7d751f82daaab09cdc499a41988d8519ffbc1efb6ef23a58e48fc4960787", -"T1_bitcoin-test_getaddress_show.py::test_show_t1[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-971f9f3c": "49058bad1db26efc3c7cdafcee64b0b0975ea7eab8de41994217d901c7e4f44c", -"T1_bitcoin-test_getaddress_show.py::test_show_t1[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-3a07ff66": "e2fa133ac77b590f7686e2af19483a67dd8354a59bcef78159ca6193eb9c6580", -"T1_bitcoin-test_getaddress_show.py::test_show_t1[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-1fa0d9c0": "9cd4081c30d19a596436ec730c6a79483aa1064244d12aa4ec51f4f608c10f49", -"T1_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "7e6fcf4df33bf876103f0f8b547c0bd7e5babd34cfe5be43d62c08fbc67f525b", -"T1_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "c0c6509ae54e7199cb457ababbc71cdb0ef1c53d535ba4b9fbf59db2cb5171cd", -"T1_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey.py::test_slip25_path": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_grs.py::test_legacy": "1c49d3e4ce2ac576ce7121eda45117ad58abda8e432fec10094e4982a45ef81f", -"T1_bitcoin-test_grs.py::test_legacy_change": "138bc552a4cebb01a4d1677a3be808c8bef97dfffc30815148bfdd7f97c41075", -"T1_bitcoin-test_grs.py::test_send_p2tr": "1fa04df5cb5469d025c332675abe04443cebbf2c45ed61c62b88b3b784d36bc5", -"T1_bitcoin-test_grs.py::test_send_segwit_native": "0e5b337a0e15a81a35edb4cb1351453fd8b90390e5b39b4ee63eb27aea07fff6", -"T1_bitcoin-test_grs.py::test_send_segwit_native_change": "a54846c41614885d5b30048199cd3cdcc3e8dde25f605f006a4626fa732c53c5", -"T1_bitcoin-test_grs.py::test_send_segwit_p2sh": "63704fef05757ba25a6a6781de9609b8464629a4c657654d2a0c2e6c0410761f", -"T1_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "7b296e3b16d4db0655b3f38cfe02f49ad900eaa751e4272aedfb37ed268ae2f5", -"T1_bitcoin-test_komodo.py::test_one_one_fee_sapling": "ec2dfb6deb2400f35d42c9f626a55eddc07cc34162b26f721113913d0b0e349c", -"T1_bitcoin-test_komodo.py::test_one_one_rewards_claim": "e623e85329341afa146fd5f4b93eef09eaecfcd66478b2a096c9930b5b6bede8", -"T1_bitcoin-test_multisig.py::test_15_of_15": "41c00a3dcdeec1120d72df9a16a6d38047cf60407f5b1116aa5ca892dfcde7c3", -"T1_bitcoin-test_multisig.py::test_2_of_3[False]": "ce96277e0a7b026144ee6cdd501c160c27a6d4a2ad8451d9f4de8114eebe0cde", -"T1_bitcoin-test_multisig.py::test_2_of_3[True]": "ce96277e0a7b026144ee6cdd501c160c27a6d4a2ad8451d9f4de8114eebe0cde", -"T1_bitcoin-test_multisig.py::test_attack_change_input": "d8731108a403d5853de526b27e506d00909603ec0c89d1c20f917ca2ef012ab3", -"T1_bitcoin-test_multisig.py::test_missing_pubkey": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_multisig_change.py::test_external_external": "e4a9c75e35046d5605d3663717ec025e7c7919ce757cdd9df66eba3bd7790d1d", -"T1_bitcoin-test_multisig_change.py::test_external_internal": "c3cc02dc9d002d8f392887248348fce3322f0fea2860d755a08fe5d9f7b21ffc", -"T1_bitcoin-test_multisig_change.py::test_internal_external": "7a3a1e10b1b14561e2afb63650c1a6273e05232e90bfba15fd0f1bdb131c7d51", -"T1_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "602f0669af9084a07900170c00699512d1cd4646aba7ddcebf6af05e36eb224b", -"T1_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "ee110f116e966f842ffc174e3ab55e951aec31b1f0433fc697c9d7aaed3d7060", -"T1_bitcoin-test_multisig_change.py::test_multisig_external_external": "0c398595da3162afee0f4734a155c0cf8d96b830350b58670b47aba40659e3cc", -"T1_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "25d6670f1a30d56fccf78d3119aaa876b5f31655b6901a3a4ef1838748045cae", -"T1_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "601dbfefbebf6dcf988a3c1c5508dc75c59df753b0788a2f017eb4346f3ab55c", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "c968d01488a358a7287c4e631996081bb490ff6e702b5ff84c3addba1c7b0974", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "c968d01488a358a7287c4e631996081bb490ff6e702b5ff84c3addba1c7b0974", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "814c415655b03a6757056456544852a7ec88f8e96fbc97728eba7874d03782f8", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "814c415655b03a6757056456544852a7ec88f8e96fbc97728eba7874d03782f8", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "f1d7f1ba4255576af0ffe4dd11dbc31dda17fec533495992a26bc1d22ade567a", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "f1d7f1ba4255576af0ffe4dd11dbc31dda17fec533495992a26bc1d22ade567a", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "df99b6bcfaf86d8ca67713ba64c085fb57b6fc6004494ef1cf83ccb4b57b8d4b", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "df99b6bcfaf86d8ca67713ba64c085fb57b6fc6004494ef1cf83ccb4b57b8d4b", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "670669469e2de75d1164e7a0d5c8ad9c96520b0bf9d7aef85e5796853a375cdd", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "670669469e2de75d1164e7a0d5c8ad9c96520b0bf9d7aef85e5796853a375cdd", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "3f11a25075140b6bb74d03d2eaf67559003cf5f46d07a778e2552bb281eaaaa8", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "7c888498d7a49466b2ec128d523f5b7a4af29beccab3e4da8fdf3de2cc3e0e1e", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "e8723bbbe5cb2484f3d1eda6fe19c48f23df6e96c36f6ff0d5d9d499ffc034a6", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "3ab904120014545ec65941dbaeb2c12c1659da2db495e62c5b3c4edd0dce3081", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "c245c47efa462d2e6d487d81f131d3ae561c0f30ad90e55b53b48ba8b46ebea1", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "81e4b1b39a135814413c96e9fa4e2639a8ab6b2cb9e945445ee12a99e994b523", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "5d57a31f47490c5738af8136bf9ec8ee9d0db980d1653b9eaedace9d60e74119", -"T1_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "a28c13fc59443f3745bf794c002718c22ff39815e8961d7af4fbbd90777783b7", -"T1_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "4f7ee19b4e43a709ba945eb24d6bd2a9fe4785e33d54be937d8e3a2551b8d397", -"T1_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "510797e3346491fc7b3eb6f32f05e6b03640ed5cc8f3d70e1d85b77273578972", -"T1_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "bec27ce6240d3be57e2815b00f66db2f3d0da60b3de8429772aed5ce5dc0263a", -"T1_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "8501aeef2b2494e3440d4da64f2d08d24284183c1813753e653039797ffe684f", -"T1_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "3f99e0c68e5fb612cb48b7d170a5f36a32e1fc5d8fe7d98f391ef4900411731d", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1a3a7cbfe22d241880b170b28fa9c6256119918cb02eaec303d161f90d92508e", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "1a3a7cbfe22d241880b170b28fa9c6256119918cb02eaec303d161f90d92508e", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "1b8d48f87223abd82f2e1dfd61d6202e416dd3cd95a155de0c3a5b4b8929784e", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "1b8d48f87223abd82f2e1dfd61d6202e416dd3cd95a155de0c3a5b4b8929784e", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "63c3cf59c82146f4c1266ba7be7dd83c635737e3b350d190dfdcfec0de66694f", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "62a17ca92dd8e4db55cd1f5fd7b1008864e040d65be4ab316e53ebc13201b008", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "62a17ca92dd8e4db55cd1f5fd7b1008864e040d65be4ab316e53ebc13201b008", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", -"T1_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", -"T1_bitcoin-test_op_return.py::test_nonzero_opreturn": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_op_return.py::test_opreturn": "d38174445b68e2119f9d141c071ae7a993f76597f4ca3c5fd8f6a2e1e89aebcf", -"T1_bitcoin-test_op_return.py::test_opreturn_address": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_peercoin.py::test_timestamp_included": "36459b469232b78c9d4183e3d0d57df680395bd5f8d10cabfd9b63d34a3b7037", -"T1_bitcoin-test_peercoin.py::test_timestamp_missing": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "e4b83679c3bcc49698a8398bc4e9f578e2026b0148250ee0c8fe7d9690f3d914", -"T1_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "73ea6c228f3552bc620d0d63b416046f9f245e4035c18cf04d2444de6999e720", -"T1_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "73ea6c228f3552bc620d0d63b416046f9f245e4035c18cf04d2444de6999e720", -"T1_bitcoin-test_signmessage.py::test_signmessage[bcash]": "52f71cb4a4fcbd2b8cc749df7ffb538a370fde1f69edf550e54ffe4040222c0a", -"T1_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "c2a760331e21fc83e5c9b8a6e727511aede0c6b2125d181af4f20d66fc07f231", -"T1_bitcoin-test_signmessage.py::test_signmessage[decred]": "2cd38c79699ee55857371bedb774a4c9f0edf02b5bee63c4ebdb4aac5d3e312e", -"T1_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "1b2c8571816b97515a99fc631b0c751f22eeb5a909d63bcac78d68980837bfbc", -"T1_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "5241f18de914867be1cb9d760127274b840e3889333d8aeb859650cbcbfab8ce", -"T1_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6dbd7ed209479603506fdf0f471ddc09125535c8b370a0cc344040fdfb03046e", -"T1_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "2dc5a706bcddf85e5d0d62edae2e539fc3728d70938a37beb22ce80704006dec", -"T1_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "ff835de978dd2caad3d6c43aebc2d9fdf6f3592c3650ce4c60628b2c23bef0f1", -"T1_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "ff835de978dd2caad3d6c43aebc2d9fdf6f3592c3650ce4c60628b2c23bef0f1", -"T1_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "47be210e47a0bfd9117bc14fb4d05cc50564ea37a2cd22db0381506814b163bc", -"T1_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "bbbc0bc8f1ffff0f44a453965ca6147eb856feb741c3107443abbe65da28cfba", -"T1_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "0c3cd18da80a2e5e7e2b592203e509277b394f1902e615279487052dd1e3ee19", -"T1_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "0c3cd18da80a2e5e7e2b592203e509277b394f1902e615279487052dd1e3ee19", -"T1_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "9cd2d7885b7d7cee80a48b8f0354240abf4dd329d5656c0efff7b61a8eaf046e", -"T1_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "a0bd4704ce81567adc148221d4b6c6a11691c2c5221de0b0cd6a0fe900c67730", -"T1_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "88457129c207139569d812a5dfb535b06d60105391ad73040c40579c47adfaa8", -"T1_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "88457129c207139569d812a5dfb535b06d60105391ad73040c40579c47adfaa8", -"T1_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "f5edfd3bd6d805c243b8a9776a2f8016da982fbb43bad084a9b9f4a5c06915a9", -"T1_bitcoin-test_signmessage.py::test_signmessage_path_warning": "d47bd497c13361aa741e92189154c2b557c4a7af3d52f61a6d32b7e9133d319f", -"T1_bitcoin-test_signtx.py::test_attack_change_input_address": "a0fde7774566436bd570e4fdcd07a5cc04d96c5177e8061c5e89259da45c9459", -"T1_bitcoin-test_signtx.py::test_attack_change_outputs": "347739330b633be6a836b0192eb183f02dd74520ae17f6c9405238588fa5fa95", -"T1_bitcoin-test_signtx.py::test_attack_modify_change_address": "5a309a1de343c16239ab822e0434afe0cee621c09c6b4aa882ca7bbd81f4c4a4", -"T1_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "5a309a1de343c16239ab822e0434afe0cee621c09c6b4aa882ca7bbd81f4c4a4", -"T1_bitcoin-test_signtx.py::test_fee_high_warning": "2521cfd56ed52e4705470aadd4760082d2cd145cabb9cb4abb53c611818148be", -"T1_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "c9599c90979cd53f76603dc18c9fd7e9ffd17c62ea21810cb93590431a59e680", -"T1_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "f928f9445cca66040777e53dd0d3b87a504b54b58d2698f8ea254df4dd50a517", -"T1_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "d0d7d9e0842ad1075c5d1177b5e1b79a9b124128ee5983b2fc993ccc7709a986", -"T1_bitcoin-test_signtx.py::test_lots_of_change": "97fb350409f5083e757c001b3ba6ad70ac3f8cde83aba002275cab6c802db43e", -"T1_bitcoin-test_signtx.py::test_lots_of_inputs": "23dbe1eb33e97fb7f6ce4369c1adc2c19db0ec71876a27ec4934d23d59742208", -"T1_bitcoin-test_signtx.py::test_lots_of_outputs": "354e58d76b40943329ca52196d93893d84cbead7c8d5df699de1e73510271feb", -"T1_bitcoin-test_signtx.py::test_not_enough_funds": "8d684112b826d1902e8a1a2106618b6a6f4983ce790e939fc3db476b20e30dea", -"T1_bitcoin-test_signtx.py::test_not_enough_vouts": "3413455a90c3e1dfb0c907c844fab0b82c6f5acabb013d0b5e7e843a3bfe76c2", -"T1_bitcoin-test_signtx.py::test_one_one_fee": "013ca83fd68c5b3d74b66b90a9485392543c95b792e97110142c34def21914ee", -"T1_bitcoin-test_signtx.py::test_one_three_fee[False]": "09f36a6d9e41309459ec4ff7ee075e5e8e227eb05f6b722c8e9f2898c6840678", -"T1_bitcoin-test_signtx.py::test_one_three_fee[True]": "09f36a6d9e41309459ec4ff7ee075e5e8e227eb05f6b722c8e9f2898c6840678", -"T1_bitcoin-test_signtx.py::test_one_two_fee": "a208d646da6116f842df4df320e2409f2ffbae88459916d9b094764501011ea8", -"T1_bitcoin-test_signtx.py::test_p2sh": "e1d834b1512fd9018a81313ce1aabebc8a61d45ae5d32992074029b93c5342ee", -"T1_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "56a27ac97a3af3279a1cbffc109658301a185f4fbd65654e4003419acb76934b", -"T1_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "56a27ac97a3af3279a1cbffc109658301a185f4fbd65654e4003419acb76934b", -"T1_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "56a27ac97a3af3279a1cbffc109658301a185f4fbd65654e4003419acb76934b", -"T1_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "56a27ac97a3af3279a1cbffc109658301a185f4fbd65654e4003419acb76934b", -"T1_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "56a27ac97a3af3279a1cbffc109658301a185f4fbd65654e4003419acb76934b", -"T1_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx.py::test_spend_coinbase": "88cdc1d295cf7cc63dcbe3c36ef8ac79bde2083af006ccb35ec69b8220b4676a", -"T1_bitcoin-test_signtx.py::test_testnet_big_amount": "2eaeb39ce6e86d3de8ed96981e1fe764875110b27681b68854dedcdfa5620907", -"T1_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "c36df6cfe6c693aedec447abbf6c2e78c306809a51054121ead28747dd16fb26", -"T1_bitcoin-test_signtx.py::test_testnet_one_two_fee": "5a309a1de343c16239ab822e0434afe0cee621c09c6b4aa882ca7bbd81f4c4a4", -"T1_bitcoin-test_signtx.py::test_two_changes": "61e8de6771877b747d58272920e47671d4cc6f0de0643c0932dba2d7a64aee31", -"T1_bitcoin-test_signtx.py::test_two_two": "b36dd56051cd48c8a94257f8973e0b29aeaf2a84044fb00b9286ff19ed63ea63", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "013ca83fd68c5b3d74b66b90a9485392543c95b792e97110142c34def21914ee", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "c428485bdad8a17add6fb43a9ab1958deb5aef57193e02a9e43f52017a4964a3", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "e347fc9f97f5c400600bb6031a52b5a1755b938ea5e91e2c17a1045e63c24be6", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "eda8047aeed75b8a47a46c74ada5498bbcdba84b1877ed12b687267ad1732e1d", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "013ca83fd68c5b3d74b66b90a9485392543c95b792e97110142c34def21914ee", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "f2be7c23251127b50596f1a772a9eb933e0b1cef4c30afbc912930d1413f8694", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "383c397a6d5aad1cc45e4883bfb314264161492a508de9e93c3cdb70c3975ed0", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "37ed5d570b29eef47131d1b1a48bc13173af15e499462077437dead863339691", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "177fd9048c7661977db228678f9be74b1e769deb4cec87aa146ef51d20c604a1", -"T1_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "f2be7c23251127b50596f1a772a9eb933e0b1cef4c30afbc912930d1413f8694", -"T1_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "19e56e826e17f0b5cb5ab26d684dd4d1ef73da2711edc8bef2a086962c1382b0", -"T1_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "5c2f96acb6e23f1e5698276e697c7afa299454fa12f1b2f6eae8b35490d69f6c", -"T1_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "6695ba71c171c82c4335db3f70dbb5f861c44141ea0eeea98e295ab6b51da3bb", -"T1_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "8f55fbd32b618e6373ed0c68dee2b3e275e0fce6ff7502bbb34ab4702238dae7", -"T1_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ee152e7534c4dd60f939b7403a8169eb7d1703e3bdab819a575bc80f261212a9", -"T1_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "715e852eb84decdecdbae64a142dbe5277ce5a717522a64b0ec7acd0c010da94", -"T1_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "ca2c0db34a1cc2e354b5eceaee0c85fda2103ff74909ba2cd721ef4430247b91", -"T1_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "7a03bc65b666015135bee51e3c54a1ca7b48b2dd1a276e0ddeeea970e7d01d0a", -"T1_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "4b95ff0e4b04bace41ac30a781c66e99838f654c2cb0df138c97a5e963b4ce5e", -"T1_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "7a03bc65b666015135bee51e3c54a1ca7b48b2dd1a276e0ddeeea970e7d01d0a", -"T1_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "58e94b81fbe4879ef37133a4014b9dcc855fb075a52661b4197ae7f21b5a2337", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "a4fde273e063d0ba7bf17fdecba0633f4d32bc1b8400789d39545cdbfe8c36fe", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "a4fde273e063d0ba7bf17fdecba0633f4d32bc1b8400789d39545cdbfe8c36fe", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "a4fde273e063d0ba7bf17fdecba0633f4d32bc1b8400789d39545cdbfe8c36fe", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a4fde273e063d0ba7bf17fdecba0633f4d32bc1b8400789d39545cdbfe8c36fe", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "1f8e0bd62be3e6bccbe83fb0589760364f90de7eef7e718d1741fb2591462d75", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "1f8e0bd62be3e6bccbe83fb0589760364f90de7eef7e718d1741fb2591462d75", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "1f8e0bd62be3e6bccbe83fb0589760364f90de7eef7e718d1741fb2591462d75", -"T1_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1f8e0bd62be3e6bccbe83fb0589760364f90de7eef7e718d1741fb2591462d75", -"T1_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "3a79850fe95abbd2ca342fc62ba7f6404c4f437977764839a8146789ac811fce", -"T1_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "6ce87a239e06fef8eafc8b3e2ae7212c000c648d40c77da0667d95db23770f9a", -"T1_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "10bad1ccf61c18d7b6157b26fa02e44962f5540852a04987f8059931e2315086", -"T1_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "10bad1ccf61c18d7b6157b26fa02e44962f5540852a04987f8059931e2315086", -"T1_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "071c96658afcaecddc21aefea47e689d798a82c37600e02a95f6ecb15de269ce", -"T1_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "807ab01362899bbfe2f557faca14b6c7317715021f8dd3dc1deedd20e14e3b80", -"T1_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "50423223ee864ad5d3fd00c91774ea5b437ecfa61538a32f24f4f937419b213b", -"T1_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "071c96658afcaecddc21aefea47e689d798a82c37600e02a95f6ecb15de269ce", -"T1_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "05b9b5f506ef984d798aed1c51299181431881d6098a595bc0a886f22b4422fb", -"T1_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "ddd46015ad9e958929a0fe9ad37a5aa07944807f08be6d3f9c3086c4876f6af4", -"T1_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "05fba4bc7c52f1ae8154b8d55d52795900b7e1598a1d965200d36b5f44f93ccd", -"T1_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "4799cbd3de2dad5255880a807f15d9d0d857b2ca0bb1afb287a4810964144833", -"T1_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "4d0e5e5699cf3173fa6361dee03b9c51cfad6e21f5937ac899719ac63602c60c", -"T1_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "4d0e5e5699cf3173fa6361dee03b9c51cfad6e21f5937ac899719ac63602c60c", -"T1_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "26ce46c162932aab4a51fe6ab40b60e061d33c9cefac85db857ca6a1b1edb047", -"T1_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "32f4561974abff85a6569299f3fadbd88eadf1669e6159f42143553f9eaa9192", -"T1_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "d2090fa198da39a988f8f6c6469dcc449c4763a0cde0b795117ed35efbacff79", -"T1_bitcoin-test_signtx_segwit_native.py::test_send_both": "6634ded2c8af78bba59dd7ff2206d15b47f8637471e5b27f47b96df122239509", -"T1_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "b546ea334d8cbf87ea09f44b502a7cbb1be5a6db6180c6fd2046ee413e4ff4bb", -"T1_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "c5827829de525396d4f2e089f08a215a7cffd94883fa5a39fc55fc3f88a81e28", -"T1_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "82b3602530533c35f4e2bdd2af5e6795e4bb75667efcccd13270292c3eb75669", -"T1_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "e147ba0984c8ee2d74ce76293315529db61dffd148cf83bf5b50eb0a95fc3e6d", -"T1_bitcoin-test_signtx_segwit_native.py::test_send_native": "f2be7c23251127b50596f1a772a9eb933e0b1cef4c30afbc912930d1413f8694", -"T1_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "e84023fa44000c99018eb95e4fd29a423c140f44d3ac9918be0b2854baffc93c", -"T1_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a4177cc812c88b18a3bec937adb2d286107833dcb52096a1bb26652975f93276", -"T1_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5a203183e002689d3d0b5a9e1ed9d495022469cc138122b2e107a82d47964d6f", -"T1_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "aef56cf625d6c2b621eeace6371111b1b2d5fa269878327ee603802d603f8eed", -"T1_bitcoin-test_signtx_taproot.py::test_attack_script_type": "ee0df84fb7a48e8a9c7de298b28b16068a6601f0c8ea4528a0f187b07a9707b2", -"T1_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_signtx_taproot.py::test_send_mixed": "3f94ff30dff867fd58667cd1f26025939856212f8cf3eefee4eafbfa5f2c6003", -"T1_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "0367ba2a029f686d2313ab464ffa5199727d9ade4e715a9c69963e208c648f51", -"T1_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "0367ba2a029f686d2313ab464ffa5199727d9ade4e715a9c69963e208c648f51", -"T1_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "6e32c316b41ad35dbc46a10713ad569b832651dc54efa935dbdc0a05f5ccf990", -"T1_bitcoin-test_verifymessage.py::test_message_grs": "3a99e790a5d48dbaf76e15d314b46113f10daba5ad4cbb652d162033b0d3b02e", -"T1_bitcoin-test_verifymessage.py::test_message_long": "ed4a40daa108bb66f076da8c3b30e905c54a0917d0b9fab12ea381bf6f5a2036", -"T1_bitcoin-test_verifymessage.py::test_message_testnet": "d46dbcc225a2b01433bb80af1a0983d6b8c157cc6004c0dce0e895d59b040601", -"T1_bitcoin-test_verifymessage.py::test_message_verify": "320e01a4b885943a54fe1645f5620c4b1e30426bb99aa3f65f86359417bfada2", -"T1_bitcoin-test_verifymessage.py::test_message_verify_bcash": "985357efe56878db61c44dcb24000b8674bcde01503cb199e5f6618fd700523d", -"T1_bitcoin-test_verifymessage.py::test_verify_bitcoind": "138d7ed85bf5afa7ab1414e9dee9b44f4b738a90bdd102afdb235373c2209015", -"T1_bitcoin-test_verifymessage.py::test_verify_utf": "ab5a72257d026dc51258cc84f78a9beb104cf2695ccd5e4da217ee99766f04a1", -"T1_bitcoin-test_verifymessage_segwit.py::test_message_long": "b8efeb08de9067d3f66a941b2c022f31b2652052d71395f5e3876972b6f3c2ee", -"T1_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "50be4a401cd033ab95d5f3a2a7196cb9292961783d3940b07b00724a0036ffce", -"T1_bitcoin-test_verifymessage_segwit.py::test_message_verify": "f0dd1999c4e3775bbce14db0cf307176de5c284a4e488ef59063b3512bfbeab2", -"T1_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "96abadc9e4b81ae4f3554453091f023b4f81683779abb40f40fa44fed8c5147f", -"T1_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "e3d23212f0ff2a1dd5a52575c3e77553f4b960b40481a7bf94503203ea0fd9dd", -"T1_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "ef5ddd814807615cb28e60aa67c53c768b871f02ed75d86ff9cde22a63db9ceb", -"T1_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "f0db374f9264968c3ac8257227403eaeb06196ed53b9a6652e2cd0615a5ac43a", -"T1_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "550602a4230f3cbf01b7af22018947ef6ae8706983af18164810f28c8f519256", -"T1_bitcoin-test_zcash.py::test_one_one_fee_sapling": "e741a0c6712681bb767649105f3f2388a63ce55cee6ef62fd26b5acf2bf3e4ac", -"T1_bitcoin-test_zcash.py::test_spend_old_versions": "d86d753fa98cc9a99fd635bb57e14e0cae500cab6199b0ba1d501fa4eca6a63e", -"T1_bitcoin-test_zcash.py::test_v3_not_supported": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_bitcoin-test_zcash.py::test_version_group_id_missing": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_builtin": "d88cf848ef5ba25c4545f817db565b5a020f47cfd56453c930f62a3b2721cd2f", -"T1_ethereum-test_definitions.py::test_builtin_token": "918bc7c30de63b9778e9a97cd3e84424f85f777216285dc8d624d5d56497a954", -"T1_ethereum-test_definitions.py::test_chain_id_allowed": "cd3c38d2f2b1158846a646a3a589d651b8b81ad05018909b3bd9607e9a272de4", -"T1_ethereum-test_definitions.py::test_chain_id_mismatch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_external_chain_token_mismatch": "3dbb91414205db65140c6cf9b347c5a17fcc72207da62027ed1781c2142433ac", -"T1_ethereum-test_definitions.py::test_external_chain_token_ok": "98e80bde52f40cefe33b8e16db3f38942035614913362168cb0e946a9ab5c856", -"T1_ethereum-test_definitions.py::test_external_chain_without_token": "3dbb91414205db65140c6cf9b347c5a17fcc72207da62027ed1781c2142433ac", -"T1_ethereum-test_definitions.py::test_external_token": "b224ca172240ccb336fadaff42dbee3985afc865111ac25d2d89ac51f4e7f9fe", -"T1_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data_hash]": "306b42e936a0c6c48f5ae556fe4d7612c63c45b73dc6a3830f12922b70c50330", -"T1_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "59aaee443a05ad617bd7d112e9a8e75379e5464bb4238f9253d6f1e7e4f097dc", -"T1_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data_hash]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data_hash]": "8f7b33550d98bb2abf54271e9a435dd3d8371d4aaf03194a9dad8162ecfcb832", -"T1_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "0b690024cdc6bc88d2eacf70a91287b691ef9ac7d8a9555281a9fa5155397a0a", -"T1_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data_hash]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_slip44_disallowed": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions.py::test_slip44_external": "ee68e40f34c86d20860b593d5551d4826cadb3d6c1f26d3c2bd53952595463fe", -"T1_ethereum-test_definitions.py::test_slip44_external_disallowed": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_bad_prefix": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_bad_proof": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_bad_type": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_malformed_protobuf": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_mangled_payload": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_mangled_signature": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_missing_signature": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_not_enough_signatures": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_outdated": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_short_message": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_trailing_garbage": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_definitions_bad.py::test_trimmed_proof": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_getaddress.py::test_getaddress[ETC]": "efe11a5e9959ba001e33298ec4e00c4f224e325bd41fd713cf01192ac4dfb01a", -"T1_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "16ccd6cf4421b1002d479f9ca633ac1ee8dca0fa3f1339fa66380d14e5109e2a", -"T1_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "a229f91ee8c13470faa74e086d582032072f8f2e3a38cf5e9941bef634abb626", -"T1_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5eaa807f7ac37df989696049a1a5e19751f0c32b7541167e88f56a7aff353f42", -"T1_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "d2f4a0194a0dfeb082daec10639c0489ebe30389d7baf1a26dfe20538421592a", -"T1_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "c6323cb37b60ce8effa98da2fbeee0a734d8d3566fe7f2932b55ffee6d146f45", -"T1_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2", -"T1_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2", -"T1_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2", -"T1_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2", -"T1_ethereum-test_getpublickey.py::test_legacy_restrictions": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_getpublickey.py::test_slip25_disallowed": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[array_of_structs]": "04b94ca842aa77fdc6b75b07bbe178c4ea99c35e6dae630588fa5d9cb67b9090", -"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[bare_minimum]": "730a5d3bf1389ac14aec7ee9f65e2cbf516957e5077acc0e07a7541f667e2f0b", -"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[basic_data]": "fd99dc685a4a125db0f3f8d2a16ffa242bd57e4ff714d66cc9c4161c486f53be", -"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[complex_data]": "24957177a20a1aacba25207e210ee3d97a9ca0b62b19e2fa9598d77bd27f3cde", -"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[full_domain_empty_message]": "68d748b8407f9d9005d293b5c6c122051f7376761c3628ea4968255ecbc1df39", -"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[injective_testcase]": "586a48367b619266abb0ddd39ae825156fcc1945ae01170e5f4ee7ba66c83360", -"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[struct_list_non_v4]": "eb17b48c8495ae235345920089c1662f5aa36fbb6e90f0c0c4b270c7bb2f2ea8", -"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[struct_list_v4]": "b0ce2ac7326df63ae12badf47a58db955fe2b17a327fcdc6eee1fd06375a25f7", -"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[structs_arrays_v4]": "a38f3ef2571424b460cd7351cd7263c8fc19684041d57f32f5599588c89046bf", -"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "0f1e81d57996381781e8e3c5865875e6d48c29128d2de78f33556d96f29c2785", -"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b56508b17391e12992ce21c04f0ae096ee9b2cd4e1dd2912e75b55a634158976", -"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "a8ec598be6255799e7f01e84343cc7e5e02d84cee5c3cb909457304390d6fc9b", -"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "c6e541efccc6d50fe6e2d590bd48c5d89fdd3defda6088d11c771827b48e2656", -"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "06a642eaad886c01421973efa714c59eb6da8e60d06fc44cc42a5f959ec3dd27", -"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "a6b54a1244c1c457de732c2d27371475c02e451a4820f283912a5e3c62fe2842", -"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "858c5f14ecf61cbc85acb7d11f85b65a88c3d14f2591f185e1925092a977a7d6", -"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "72795258943a821df0fca67a6e1d915883c414e5066cff8f93d4a5735c0ba45b", -"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "76c51c49c1ae5c4f77e15b9f053d8f27665d25a9866487b69d6eebb6386bf855", -"T1_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "cdec0f79f2abbd90f4346494037f7bb4dd4dccc7c6739b497873d0c5603f2a26", -"T1_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "9e51345ff0d3736f81a5c169768f9a80c555187eef2db3046f5ad12262990466", -"T1_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "e2aff8a36dffd76b0e48256a5012ff191d0ce877a42cf31e1f25f7c3cd786d64", -"T1_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "ca3a682509adc512a66da84881bee7a41914f37f4b33a6749c3b2de4672a9142", -"T1_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "9629b7a3b76f8e4279b7e9e754314b13dfc3e33e87406540b2b8fcdcc17acb26", -"T1_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "0731707804115376996c8a545834c3fc08838497e5a4cee065648de501cd0839", -"T1_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "0f79aea15b09e207f7e2bb226421549a0446a4722dde3000c31c3c66ec2059d1", -"T1_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "22daa96dbdd3aeeec11f1134baa29c0ccecbadf032a47aaa355f30c994897907", -"T1_ethereum-test_sign_verify_message.py::test_verify_invalid": "cdec0f79f2abbd90f4346494037f7bb4dd4dccc7c6739b497873d0c5603f2a26", -"T1_ethereum-test_signtx.py::test_data_streaming": "058a66e82bb733d5c5c687b5537887022acfd7401bb0b5aa4a12f6f35b209239", -"T1_ethereum-test_signtx.py::test_sanity_checks": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[False-ETC]": "05b7842c03625104ae3459a55097bc96e878eca465bf69ea2691407868e5dd4b", -"T1_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "90feef1fdcd162209a948c127df638c09bee0444fee40f2d30dbff21658d83ef", -"T1_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "37aa64fbab44b89757833df6ee78e302c97fe24c4cb74175f1843f635cb2dbec", -"T1_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "90feef1fdcd162209a948c127df638c09bee0444fee40f2d30dbff21658d83ef", -"T1_ethereum-test_signtx.py::test_signtx[False-Palm]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[False-Pirl]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", -"T1_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", -"T1_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[False-data_1]": "8b432aba21bc4344814cceaf693e114b9d3e3d6ceb83c3a6af7c3ed0f9b37449", -"T1_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "445286b7501ca67dd16dafd7ea09c57cc4a37a642ae50f0c812d74353c37c017", -"T1_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "d797c970429f1e974a69b9f5bd814a4f13f15b1b5d6ab1c117e65b919a434cf9", -"T1_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b", -"T1_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a7efa7f690d1448dc48f642f69688e8b266417901cc014e5930c94c9087b3e08", -"T1_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "6bd90f2c98122de19159e60fd4dcf9f4b16a600407ac84ea1e447d561ea9decb", -"T1_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "538f7be885ce6ea3a6dc842ef10797fa45184d7737f6f179c42d36fe92fadd45", -"T1_ethereum-test_signtx.py::test_signtx[False-wanchain]": "37aa64fbab44b89757833df6ee78e302c97fe24c4cb74175f1843f635cb2dbec", -"T1_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[True-ETC]": "05b7842c03625104ae3459a55097bc96e878eca465bf69ea2691407868e5dd4b", -"T1_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "90feef1fdcd162209a948c127df638c09bee0444fee40f2d30dbff21658d83ef", -"T1_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "37aa64fbab44b89757833df6ee78e302c97fe24c4cb74175f1843f635cb2dbec", -"T1_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "90feef1fdcd162209a948c127df638c09bee0444fee40f2d30dbff21658d83ef", -"T1_ethereum-test_signtx.py::test_signtx[True-Palm]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[True-Pirl]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", -"T1_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", -"T1_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[True-data_1]": "8b432aba21bc4344814cceaf693e114b9d3e3d6ceb83c3a6af7c3ed0f9b37449", -"T1_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "445286b7501ca67dd16dafd7ea09c57cc4a37a642ae50f0c812d74353c37c017", -"T1_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "d797c970429f1e974a69b9f5bd814a4f13f15b1b5d6ab1c117e65b919a434cf9", -"T1_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b", -"T1_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a7efa7f690d1448dc48f642f69688e8b266417901cc014e5930c94c9087b3e08", -"T1_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "6bd90f2c98122de19159e60fd4dcf9f4b16a600407ac84ea1e447d561ea9decb", -"T1_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "538f7be885ce6ea3a6dc842ef10797fa45184d7737f6f179c42d36fe92fadd45", -"T1_ethereum-test_signtx.py::test_signtx[True-wanchain]": "37aa64fbab44b89757833df6ee78e302c97fe24c4cb74175f1843f635cb2dbec", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "171ffadf61a2520274bedf6a8543127f23a8948c2689e034f996e170289b1822", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "28d2a0d397b4e9865ca8286cc1a3669c3a7d34bb31b430662354bf3ec69d1cc5", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4b97bba97b14f40c36a793e8a842d5c6fd13c4465b4d3b47b96bab943eb649f3", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "cdeaa7c3e562acc91e061b867ab8d3b2fe9902375505d9d75e9a221e17aa40e8", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "171ffadf61a2520274bedf6a8543127f23a8948c2689e034f996e170289b1822", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "28d2a0d397b4e9865ca8286cc1a3669c3a7d34bb31b430662354bf3ec69d1cc5", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4b97bba97b14f40c36a793e8a842d5c6fd13c4465b4d3b47b96bab943eb649f3", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "cdeaa7c3e562acc91e061b867ab8d3b2fe9902375505d9d75e9a221e17aa40e8", -"T1_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", -"T1_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "f6c5f398d4e80fc8f93cf70e9b10de24b9a968db04dc6ea21b28d1a273f04ca1", -"T1_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "f6c5f398d4e80fc8f93cf70e9b10de24b9a968db04dc6ea21b28d1a273f04ca1", -"T1_misc-test_cosi.py::test_cosi_nonce": "6990c238036b79368fea1dc1e3e8871d7788322bbee7425d14c53623bc8182e8", -"T1_misc-test_cosi.py::test_cosi_pubkey": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_misc-test_cosi.py::test_cosi_sign1": "6990c238036b79368fea1dc1e3e8871d7788322bbee7425d14c53623bc8182e8", -"T1_misc-test_cosi.py::test_cosi_sign2": "0852e7433ec54a0ace301b683417107a9805095acd954010b665266503a79f36", -"T1_misc-test_cosi.py::test_cosi_sign3": "d04fca2d97f7117ffc79ae52d192086aba2f9c64e89db27e20a930e9048f1d81", -"T1_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_misc-test_cosi.py::test_invalid_path[m-1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a849d9e11e222d1348ce3135680a2a61ed265692adeba4bd48af2fdc65207e61", -"T1_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_misc-test_msg_cipherkeyvalue.py::test_encrypt": "e36d5b5db4b3733c9f484b149c0f966b3dd66e8b54e1b5bccf9da5cca7abed91", -"T1_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1fb589a68cc75f8c612ccb8fad53241eced92aa396ae1dba282919c0d0786211", -"T1_misc-test_msg_getentropy.py::test_entropy[128]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[129]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[16]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[17]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[1]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[20]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[21]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[256]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[257]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[32]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[33]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[3]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[4]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[512]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[513]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[5]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[64]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[65]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[8]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_getentropy.py::test_entropy[9]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1_misc-test_msg_signidentity.py::test_sign": "237d6575385f61c32b574a23168330e40025eb9351202698f2d115db0e146934", -"T1_nem-test_getaddress.py::test_nem_getaddress[False]": "647dbd437bc7d5913ca7cbc8027d0230c3617e8b266f2c89e63c2d1342313557", -"T1_nem-test_getaddress.py::test_nem_getaddress[True]": "647dbd437bc7d5913ca7cbc8027d0230c3617e8b266f2c89e63c2d1342313557", -"T1_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "74f2ed8d59e1aa1185ef7f06fe63e49380dfb185faa0e0d01656bc2bc8ff8c0c", -"T1_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "d782d6c77ea579238f6c5fc81adef34e0a47b4006ee4cf4556747ddc4afa998b", -"T1_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "014cdfbc54f7e6861fbc74e2c5729d6d5ce75b9774130d2cc62de413a96d05c9", -"T1_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "804dc7f0619837962a318c1971a411cc83da0a3ba1a061cf478785991fc26e01", -"T1_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "4655d97cd5babce071cf8fd46ed5c9de91d0b60cccaee31a5507cf8f6ab7326f", -"T1_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "6bd7137199fd3aa938a8e2032a35fe36bd31110e0aad78c2ae15f92e903c09e7", -"T1_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "9217aaa55dd22fb716e26c16aafda86d8f068f910c28c6c88881ed80c4204d94", -"T1_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "7a63646daa836594fc56ba6f4d1af5deb0f1ea50c4e931a084ab1636a11546d8", -"T1_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "11bb4a8dc8991471d8ed896691ebaecd0023b29432976ad519e92ece8f91a96a", -"T1_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "b1fd9c5250032b2decce6ef18cb1c6e06e9daea279039b58e01cc28a3f4dc765", -"T1_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "4de1af57a9f25b81ab5d29a6c96e2cd117145aae6cba3fedd083cac7f8cff1d7", -"T1_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "ebc2635064a4469a98c2a4db2608ec3d006a69386d47e78bbbb8800bb0e7dc2a", -"T1_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "ac772c16bacef88ec59bc4e1561520ed57e8d0ac74045136f5849a665b92978f", -"T1_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "3dac9a2abaab139be3b670d6f8e22d34db0171d09101b447c9de7011ad59b465", -"T1_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "3dac9a2abaab139be3b670d6f8e22d34db0171d09101b447c9de7011ad59b465", -"T1_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "df352a677aa8f591effe241d0a384cea282934d5735c4bf34734616237fb96ca", -"T1_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "9cc4d7978b6296e0d107a20912e4dedcc9ed6eb3229749a7fb515827c85f18ee", -"T1_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[language-test]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "19107fcdec9d88bb254164797b3e959c14c34138ca792e061312324f047f8868", -"T1_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_t1": "5cbdd2bbb62db19c2dd8a2209c18c803fca6754d5452f6bafa4a32d4aeee2300", -"T1_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1de2c1b0e785fd429d886f6912e99380e9d2607d5741db4437ed0b2ba2156aa4", -"T1_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_recovery_bip39_t1.py::test_already_initialized": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_recovery_bip39_t1.py::test_nopin_nopassphrase": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_recovery_bip39_t1.py::test_pin_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_recovery_bip39_t1.py::test_pin_passphrase": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_recovery_bip39_t1.py::test_word_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_reset_bip39_skipbackup.py::test_initialized_device_backup_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_reset_bip39_skipbackup.py::test_reset_device_skip_backup": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_reset_bip39_skipbackup.py::test_reset_device_skip_backup_break": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_reset_bip39_skipbackup.py::test_reset_device_skip_backup_show_entropy_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_reset_bip39_t1.py::test_already_initialized": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_reset_bip39_t1.py::test_failed_pin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_reset_bip39_t1.py::test_reset_device_128": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_reset_bip39_t1.py::test_reset_device_192": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_reset_recovery-test_reset_bip39_t1.py::test_reset_device_256_pin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_stellar-test_stellar.py::test_get_address[parameters0-result0]": "b004cb1a815072ae3ba9f4aadeeb9d37d3309513e973f7ddeb2ee23a056db726", -"T1_stellar-test_stellar.py::test_get_address[parameters1-result1]": "101692e06782269486e3f1093fdf03200e0cdce4b4ffc7cc5fc779b80f69d1fc", -"T1_stellar-test_stellar.py::test_get_address[parameters2-result2]": "508bbd5285d2f3087fa3b872ff053a286630b80beacd0b8b30c8577aa5396c86", -"T1_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a2b19a4e0337cb47b02c4d79f571a7297ac273f3bd95d3d5886d908fa8313c8c", -"T1_stellar-test_stellar.py::test_get_address[parameters4-result4]": "0d855560df510dfbb5cdb668fa84e3c6ba10b306c65929a6138d8c07d52f9087", -"T1_stellar-test_stellar.py::test_get_address[parameters5-result5]": "953bd04ca03df48a1635b944044914676e3d397080d1f86c25a5605ba4c103c2", -"T1_stellar-test_stellar.py::test_get_address[parameters6-result6]": "42b9120cba355febf542b6f6162c2ef2fe0265270f680802ce0aff1833c152aa", -"T1_stellar-test_stellar.py::test_get_address[parameters7-result7]": "bd662518d9e136e5eae64e507994f7b74075294634317a38669dd2671001a188", -"T1_stellar-test_stellar.py::test_get_address[parameters8-result8]": "c03fc37c6a4d2341b0081900b90ffc2faf09a228607d9d6c807efaff8ecc8fde", -"T1_stellar-test_stellar.py::test_get_address[parameters9-result9]": "9f1f4cae47cb5e9602450d110fd1945dbdb059996955d74067204966c0cc1702", -"T1_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "3f55b35c47b3f0cf896793263006d9bc4089227f21e46e4e68f67386c1c85040", -"T1_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "8fd4d210bda197e57ee660e71158b295dd3f51f8df9a235e245d5a72f54c68e8", -"T1_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "0834c3ffb6c8a792cfa8146de3641e3a4b95276b9583cd729350aca372528ed8", -"T1_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "9504677a06c0da6f339a5313bdff39f7fd90c037a944cf9c3c0a4f4b40e787cf", -"T1_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "c0dd9ef3c1635dcceca33d68af85aeb2b544c2141e021b2296b17511fb111dec", -"T1_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "52c9140b474f32678d2e0e3e6bffa255c14a82b7949f382da4e540f07d47383d", -"T1_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "8b65a55dddbdab0724f551b95b8243467fa8aa1e24b70f11c11c948fdbc1ade8", -"T1_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "f7663936ab2dbc3c11874a9f6e9e380c263041d38a147321da5570c3ecc3a214", -"T1_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1ec10003113ac613a28c37ae8ec3ee67f793ad5edd61b2c17e1c8282e2839273", -"T1_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "a19740a14fdb9e8f8fb2d48fbf695015d575212e5fb5feb58ce5866f56fb5e0f", -"T1_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "cb39bbb78f12de2bdf95bc053897b3bfa41adcf3aacab61522852d358f112656", -"T1_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "713fcd90a54a10399390e649b799b33167bae37b62ab7fa1437b960c69b40cd5", -"T1_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b4683e95a636be05965b43705f953a1c02d475c8b2ca516c51b840e7aa737680", -"T1_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "d16f43f49d8bd5c07b21a1ee7684d831b7a15800bf9770973399c8cd89f6dfc3", -"T1_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "21f7f9222e0d4b9fb52e07a2e697d64a3b221b425364842d495eb30415952f08", -"T1_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "1c8218b025efff40431aa5e468f33475360d40d99fbfe5f4fd8d4607f5857b53", -"T1_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "26251a7bb59b8aaee82ef9cf1f373514bb928e14746b610eb3ee678b52c7141f", -"T1_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "9dd8f325286fb29d558541586781818079b09d75d8d2cc734ccea4b80b95c876", -"T1_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "2467d2ac824a5b01e1d0be8a8ddec5cc554479a66916511eec67fdcbbd18b82d", -"T1_stellar-test_stellar.py::test_sign_tx[memo_hash]": "04d407ec2ac218be58e850de413cf2dbd1e6006f1fbc84792108484c4e8e9e7f", -"T1_stellar-test_stellar.py::test_sign_tx[memo_id]": "288fd25b505a374900b0de9caed38a01bacee862a83bb043f350348e4949f1ad", -"T1_stellar-test_stellar.py::test_sign_tx[memo_return]": "542f7eb47c0007810de6c43b20c9a9e3f3c64bb695e375137154e5bdda3b2f50", -"T1_stellar-test_stellar.py::test_sign_tx[memo_text]": "43ec6d06d403c3d0a7f6ce3c3df48b3611094db491a8b382165d1412e4704331", -"T1_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "1bd531cd757b8ca295201f9dcfa9e19e56f0ba697b6200819ab06d041563247d", -"T1_stellar-test_stellar.py::test_sign_tx[source_account]": "9eeaa72b46decd6e881b571ba534e5006f9f11f4d2f60c97e817d6467e9b1742", -"T1_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "57105ad361869c1adeec5d3846003659c6b1fe5d8d38b7d6f23ec6bd8e01b972", -"T1_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "a92beafd4711e0768f9453c3cf7958882f4f3439d9e14ca1e69db617e00bd790", -"T1_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "da273d8bb839bc1f80ff5af65d4c7f4d67ccc5be41a0a5f7a24452f12f7975d7", -"T1_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "1c8218b025efff40431aa5e468f33475360d40d99fbfe5f4fd8d4607f5857b53", -"T1_test_autolock.py::test_apply_auto_lock_delay": "f7bfdce7fa7579fe43beb0afd9b123114ea873f28da530abe3df8802570012bb", -"T1_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", -"T1_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", -"T1_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", -"T1_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", -"T1_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", -"T1_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "4f24424b5a55618ecc6d3e57a96071a222892dcef874428c3914ab86eca98c77", -"T1_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "2f625e2e17e14195d189eb0f2dc22a4a27d3eb8c0a0d8fcb464f3227950cced4", -"T1_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "734582a62c95e86d8769347b1dfa92db75fd7d65fb29b757e8c202f7367c1108", -"T1_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "4c6d0f3b2586de622e6de5be2bbdf718f5c674595c85ea51fedd6f384dbc4c76", -"T1_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "186dc5f99a14566f8c8985d157e90721f186e6edc4b743a910590b008794164b", -"T1_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "811357fd9acb0de12cb31acf96bee107cd0de53b78326fee5b962bbc1bc17662", -"T1_test_autolock.py::test_autolock_default_value": "cde0dd7c453463cbfbb6bb35289fca350efd43511f2701b634c0fbb81f7d9dec", -"T1_test_autolock.py::test_autolock_ignores_getaddress": "4f24424b5a55618ecc6d3e57a96071a222892dcef874428c3914ab86eca98c77", -"T1_test_autolock.py::test_autolock_ignores_initialize": "4f24424b5a55618ecc6d3e57a96071a222892dcef874428c3914ab86eca98c77", -"T1_test_basic.py::test_device_id_different": "aac15a6d12d21966c77572aeebd56ebc2a47ecba3a508f5a421af2a5da2919e7", -"T1_test_basic.py::test_device_id_same": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_basic.py::test_features": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_basic.py::test_ping": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_bip32_speed.py::test_cache": "55f043b3e286b778a02baea8f7c3547208849e2e18f90837bd9374a4a14c5c0b", -"T1_test_bip32_speed.py::test_private_ckd": "55f043b3e286b778a02baea8f7c3547208849e2e18f90837bd9374a4a14c5c0b", -"T1_test_bip32_speed.py::test_public_ckd": "55f043b3e286b778a02baea8f7c3547208849e2e18f90837bd9374a4a14c5c0b", -"T1_test_busy_state.py::test_busy_expiry": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_busy_state.py::test_busy_state": "fe7e762884268cf79e211eeb7c7ed7f85b8364e8bac27bd6790fc300f9a1429c", -"T1_test_cancel.py::test_cancel_message_via_cancel[message0]": "de7fc40b2f35e82fa486f1b97ee3e34a96d0a67412537e8a0fddacc0b0b1649d", -"T1_test_cancel.py::test_cancel_message_via_cancel[message1]": "af93b5d0a8ae6b297391a43ff3f6382d0bea1109f4f411f5b306e2e7ced6e814", -"T1_test_cancel.py::test_cancel_message_via_initialize[message0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_cancel.py::test_cancel_message_via_initialize[message1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_debuglink.py::test_layout": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_debuglink.py::test_mnemonic": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_debuglink.py::test_pin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_firmware_hash.py::test_firmware_hash_emu": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_firmware_hash.py::test_firmware_hash_hw": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_applysettings.py::test_apply_homescreen": "d85a5591a0a433741fcc897fa6941bf0b8475de957375e3811fe710b3d40a053", -"T1_test_msg_applysettings.py::test_apply_settings": "fb962820965916d494e44bd5aebd25c4f80095ca3d468d3ed212e04a9e0ef9e0", -"T1_test_msg_applysettings.py::test_apply_settings_passphrase": "1f948e87ea82a0224190d3e552e506d5d4579503905526160c7a527c5a88b729", -"T1_test_msg_applysettings.py::test_invalid_language": "510e443e4cecab8b75bbf0d6edb06e2e193b7d05d8e527931a57e8ebbbad7c65", -"T1_test_msg_applysettings.py::test_label_too_long": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_applysettings.py::test_safety_checks": "f69025c134e99a8d390d01fd29a8373d8cbd8c47819d97ec351bedf55187441d", -"T1_test_msg_backup_device.py::test_interrupt_backup_fails": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_backup_device.py::test_no_backup_fails": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_change_wipe_code_t1.py::test_set_pin_to_wipe_code": "5e5b3aab138a323a90e75db03e70d2c40e4e56fdc8a1b393b9f38d6501ed8589", -"T1_test_msg_change_wipe_code_t1.py::test_set_remove_wipe_code": "6a14202a03bd09b55edfe56bca02f6a1ab03fbbcd25983dc4c4a83e34f05c9da", -"T1_test_msg_change_wipe_code_t1.py::test_set_wipe_code_invalid[1204]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_change_wipe_code_t1.py::test_set_wipe_code_invalid[1234567891234567891234567891234-943f94d5": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_change_wipe_code_t1.py::test_set_wipe_code_invalid[]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_change_wipe_code_t1.py::test_set_wipe_code_mismatch": "e64e729d09f856e446c532f24fcb7127af04bee015c5f2636dbd30c7435b9c48", -"T1_test_msg_change_wipe_code_t1.py::test_set_wipe_code_to_pin": "2e9a43e4c73ab5a4c013de17effb531bbc3f2eb4c2ef584717cbbb3b66a94e2a", -"T1_test_msg_changepin_t1.py::test_change_mismatch": "8f9a0177ef2b66b43e6940c7820809dc1d135d9d410db1898a0e4cbbca5ceb0b", -"T1_test_msg_changepin_t1.py::test_change_pin": "8809c4ec33f71e5baa68387d22e2d8516cc645d4db26ab2653e58e0147cbab0a", -"T1_test_msg_changepin_t1.py::test_enter_invalid[1204]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_changepin_t1.py::test_enter_invalid[123456789123456789123456789123456789123456789123451]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_changepin_t1.py::test_enter_invalid[]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_changepin_t1.py::test_remove_pin": "bd74cf9520e364d895b59dfe766e53825be8178274fc222750326b4c603b8b3e", -"T1_test_msg_changepin_t1.py::test_set_invalid[1204]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_changepin_t1.py::test_set_invalid[123456789123456789123456789123456789123456789123451]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_changepin_t1.py::test_set_invalid[]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_msg_changepin_t1.py::test_set_mismatch": "9ac8ffe75bd7a8b7cd56198b0112dda1cba925c1109acaa306f864b4b9e276ad", -"T1_test_msg_changepin_t1.py::test_set_pin": "a1a9bb1a5035ff8277120ccdff9cdee1b8875fcaac2a2d279e5a54bfdc38fa81", -"T1_test_msg_loaddevice.py::test_load_device_1": "0e92c294292142cbb286b613d40d2fdee8977f18285823ce896f40c2269a3ecd", -"T1_test_msg_loaddevice.py::test_load_device_2": "f89f8fcecf250b76dcca3e52a5a678e14ca5eeae105fa59848db41ab514d6614", -"T1_test_msg_loaddevice.py::test_load_device_utf": "9523984b9cd124422558fe14ae20aab35338f86f08756d11919db7b2d3b86781", -"T1_test_msg_ping.py::test_ping": "de7fc40b2f35e82fa486f1b97ee3e34a96d0a67412537e8a0fddacc0b0b1649d", -"T1_test_msg_wipedevice.py::test_autolock_not_retained": "ec72184a9763603df32632001bf5502925516177ecdc7ef74896faf288eb1e58", -"T1_test_msg_wipedevice.py::test_wipe_device": "aac15a6d12d21966c77572aeebd56ebc2a47ecba3a508f5a421af2a5da2919e7", -"T1_test_pin.py::test_correct_pin": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", -"T1_test_pin.py::test_exponential_backoff_t1": "b8e1017505578b2ee34dd13c607d65a2a0d259878b04869dfb1be5b3622d58c7", -"T1_test_pin.py::test_incorrect_pin_t1": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", -"T1_test_pin.py::test_no_protection": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_protection_levels.py::test_apply_settings": "0f02ea5b45c4d7337ae59eedf0c91f42fae18f657ebe7f121ffb8160d532a25d", -"T1_test_protection_levels.py::test_change_pin_t1": "f6e681d7987267465a082dbe914491004dd2eb517cb1cc8efb14650f5df5ceee", -"T1_test_protection_levels.py::test_get_address": "33bc46d7179663c1b72d116b8c0dd1768e89d58c4154bb6a21e750fea83b90dd", -"T1_test_protection_levels.py::test_get_entropy": "076d586a9a24e375f970cedc1b9f01a12e97b92bec04652cc5a86d7c50e7c552", -"T1_test_protection_levels.py::test_get_public_key": "33bc46d7179663c1b72d116b8c0dd1768e89d58c4154bb6a21e750fea83b90dd", -"T1_test_protection_levels.py::test_initialize": "3f4bd58ada8b2be88ceaf45b3653e940bd52f48eb42bd5ee43c0a8c7dd392139", -"T1_test_protection_levels.py::test_passphrase_cached": "79a607736c6833a04561231c8db1df8cf6ac186715fc3798be9cc3456a588e24", -"T1_test_protection_levels.py::test_ping": "de7fc40b2f35e82fa486f1b97ee3e34a96d0a67412537e8a0fddacc0b0b1649d", -"T1_test_protection_levels.py::test_recovery_device": "9bcc413cf3e44af03f2dbb038c4df43bf503805447b71dd5713ab34335f9341b", -"T1_test_protection_levels.py::test_reset_device": "b76ab8da407423d61c605a6c1a5851885ea0aa0fe81b23a7bdb6f9f39492aed0", -"T1_test_protection_levels.py::test_sign_message": "c2303075f8b908d6e990b5f00599a4eecfbf0d8725804a48a94a6c18e4b92e10", -"T1_test_protection_levels.py::test_signtx": "72f219caffe32ce9db298e62f69bdeb8f51c21deb87d5e543193faa09c265311", -"T1_test_protection_levels.py::test_unlocked": "7ebd713447825d40e120916a78439aa4e3fc19ad9e54b4fe622f95a3e669fbd4", -"T1_test_protection_levels.py::test_verify_message_t1": "d4f8be1019f13604e2ceec12e65a0eccc8825ed07072479b355dd30e2ea83219", -"T1_test_protection_levels.py::test_wipe_device": "71f454265675d5884e5419569ea85cc5fcb579de2dae23630fc3c9877b7e00be", -"T1_test_session.py::test_cannot_resume_ended_session": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_session.py::test_clear_session": "c3fb7fced363b08b233802db7145a6a69045518265c02c7cd46342d255c7622a", -"T1_test_session.py::test_end_session": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_session.py::test_end_session_only_current": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_session.py::test_session_recycling": "d27ed7ff7933fe20c1c40b1d2774f855672b3b5c65e5f11a23f27f6c645820ae", -"T1_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "e265673e79f60c7d1c5a77099be98f532c1c51bd46f5f80a9739d6a7bf946319", -"T1_test_session_id_and_passphrase.py::test_multiple_passphrases": "9c1cc49e9620db8df760a007d1407885daa649312299df64fa6400101070136b", -"T1_test_session_id_and_passphrase.py::test_multiple_sessions": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_session_id_and_passphrase.py::test_passphrase_length": "9bb100ab7c89def6015819922b5c4ffdb95ffd2abc7d0c8ecb5f502df68a8bad", -"T1_test_session_id_and_passphrase.py::test_passphrase_missing": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_session_id_and_passphrase.py::test_passphrase_on_device_not_possible_on_t1": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_test_session_id_and_passphrase.py::test_session_enable_passphrase": "a3c4b11a1e0086e2e364013391188cd19aaa5e5893372249eb7a7e3217c91e96", -"T1_test_session_id_and_passphrase.py::test_session_with_passphrase": "65a57f452581e8dd73d0f044a11abd81610cff1ea4e6f93883b1915f7a534b35", -"T1_webauthn-test_u2f_counter.py::test_u2f_counter": "7aa71ff8b3d16c8288c9ac826f95f45a0e09d395355e94c96b98b32137dedd62", -"T1_zcash-test_sign_tx.py::test_one_two": "a3c646f091503c78d7cef7c3874813e6c6179e85b59731d647a300c9e9c31e32", -"T1_zcash-test_sign_tx.py::test_refuse_replacement_tx": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1_zcash-test_sign_tx.py::test_send_to_multisig": "58bcc1ea146fd1bde9549c52c824c927abeabd8e80a6e25f1a56c7cbdc081882", -"T1_zcash-test_sign_tx.py::test_spend_multisig": "65533f5073ebf67927f3e14810708650236236cc50aa4078494fc02c5f91ac53", -"T1_zcash-test_sign_tx.py::test_spend_v4_input": "436b7a43b7fc7fe0615340c6aa73d46a18e5a0d804469702941cea9c8fd9e390", -"T1_zcash-test_sign_tx.py::test_spend_v5_input": "6d29a8023d4b8b9fa4d170afbbaeb7cf1895906ab74f75c9fcb12a601154b9d5", -"T1_zcash-test_sign_tx.py::test_version_group_id_missing": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +"T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "84d5223f94a7a31dc23d278121c4829f446611582065a67673be3b7d6a5b1274", +"T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "098f8204516ea6e563b1ff07ef645db5df81dacd6985dc5cdfbd495846cd3683", +"T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1257ec89d4620ed9f34c986cd925717676c9b1e9e143e040c33f1a88d1f8c8a7", +"T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5628b8419edd4c5211aab8af46f146542c605e8e24e6cd79ef0d3b378c98982a", +"T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "0ffc9ee5242b69975c12aa901d47dc80e44c2bbc42f98e12bf35d36adbca70b7", +"T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "0ffc9ee5242b69975c12aa901d47dc80e44c2bbc42f98e12bf35d36adbca70b7", +"T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "39ce1d721b7516f90c027c8abf28ebad28dce18b82618764624c93a5e2bf1736", +"T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "3560ac3e7258a710c75827cf6eb0bdf2456d448c3c270b7971eaa0ea94670d3f", +"T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "dd06d17f855486ae857c7d26e19f738e0743cabd2c88d6aad23e5aead1e51ba8", +"T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "84d5223f94a7a31dc23d278121c4829f446611582065a67673be3b7d6a5b1274", +"T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "84d5223f94a7a31dc23d278121c4829f446611582065a67673be3b7d6a5b1274", +"T1_en_bitcoin-test_bcash.py::test_attack_change_input": "6111e313995d38c3970c92e48047fe4088c83666c64c6c859f69a232ad62829b", +"T1_en_bitcoin-test_bcash.py::test_send_bch_change": "6111e313995d38c3970c92e48047fe4088c83666c64c6c859f69a232ad62829b", +"T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "0962a2e630e06b6d20282cc241be40f41bc1648d0a26247c7c008f32a197d0cb", +"T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "74f59c00237ae5d30f0c86095b4f919cfd9fa7bb3f529a0cc66b44623b34aeaf", +"T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "65698625fa35a8abf9c204f0f9eeefe2fc95676257a6eea82e66f9bef40342e2", +"T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8da5d660220623694342423de18cdc0ed4e9938a140a2592e53e9f71eef5923a", +"T1_en_bitcoin-test_bgold.py::test_attack_change_input": "c600bad21f706e280f2135ca08ff870ff9c3ff2f32ede8b6fe6a786b25aabb91", +"T1_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "c600bad21f706e280f2135ca08ff870ff9c3ff2f32ede8b6fe6a786b25aabb91", +"T1_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "ae8a974d960e31276541bceaf64a6885777b4d3c0505c13e28c8386ad5dcf98a", +"T1_en_bitcoin-test_bgold.py::test_send_btg_multisig_change": "8f287a145104e8c3a468c59b422acf13675b420b6b42a398052a6855c9794e6d", +"T1_en_bitcoin-test_bgold.py::test_send_mixed_inputs": "467f81d00bed287acb84c71c885cb881b54838b07d704af7051c10bc1637442a", +"T1_en_bitcoin-test_bgold.py::test_send_multisig_1": "6b858a4f7621623d93a8c9cbe3d60a1cfedd2b6f113c769f8ad4a78435850bee", +"T1_en_bitcoin-test_bgold.py::test_send_p2sh": "0f0acfcedc3cf9068cb7a76e56907445064382af2ca72172f40f4c8977e4973e", +"T1_en_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "28bc409d7db15519b0ec036704b3e604e1c3358c807b350085babeebc813b2b5", +"T1_en_bitcoin-test_dash.py::test_send_dash": "ca814c5cd05efd59147875367f4237b8e770a2562f4512333de072d64c31e3d2", +"T1_en_bitcoin-test_dash.py::test_send_dash_dip2_input": "8db12a4a38e39b305c4af996f5640236bd59dae98ca8aa3f954aca662fcf75c6", +"T1_en_bitcoin-test_decred.py::test_decred_multisig_change": "8f95b7d2e65a76068196ab46c8189ba5a137795b43e88699d85ad7e2c164d645", +"T1_en_bitcoin-test_decred.py::test_send_decred": "50fa7dc09dbf22fc4c1e62ee2870e9047e29dd050edbdcf34341a5483d52cdac", +"T1_en_bitcoin-test_decred.py::test_send_decred_change": "b27eb08c244e00f9a2c5fecad0a8efc65fa2eba15f72ad0eb3b42a3ac16d465d", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "d1ac62d128ed78eef5947994e9c9d70194a203eadb5a50f9ca9af66b42ba333d", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "9b30c98b35338d933fe992e4a47fb259a54f0f6f204610f63c6e6cbff427dbb9", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "09d1f2688240677ac55f2677b62973ee7fe4ca788e9e139b9f6de5a1a66d6205", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "565050e8908a69cd9866a8696cdc103c19d1299486c682211f608e63b6597648", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "f71944d71edb2531faef0a177c2eda4f88bcb0ef77883db18f655d706759b5b0", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "c7987e946ff4f7f80f2aef9acd226f50ab2439837a188c0601861d0f15ca14c3", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "fd3a4f48f9ea6b02a88db9ec8ab21ad72a4aee1e983e4e626b420834b375e190", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "0c3090e26ede1019969dee87ce0ea88d46e54ec587c54cf975e1947fe90b5a0e", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c7a98dbc8fdf8b8a62d3ececef56e7ff2613a9491e6734b5683c1e2a5a074bed", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "ec6aa625a688e2d54857aafca83b513d6509b13898b0fb79166e5d85c74a414b", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "a03f1c3753c5a53e05ea9737c7f2583c2935a1a68684d37c0230a1a4d9453bea", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "84ee5c5a45dbff7bb3d2d79b48e2323c84ff589540f6806b32b286f6bc5ce4e8", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "f56e158c4fe862875dc4d655e0a5f203312a6509bf7c16bf462a237feaf78b7b", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "5f990152867980f9b129e85f9fa1963006895c49a33045e2a9363cb9fa493f26", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "bf7d2992e2732384f0e574732e36342b09ef6a8b50641a29c5d05a13c026fd7b", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "a381684066de8a00048ab82491599140c8e36a8eed9b9c31284e76275b7d396c", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "cd384fcf3379759dd5fc3f2737ddfb9185a55e506d9d0869f8a85ba31ed1d973", +"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "f24b6c201efc2efbb174a48766df03f5964ea95908abca791714e22bcf9b635d", +"T1_en_bitcoin-test_firo.py::test_spend_lelantus": "cbb87e77f54c351584dd713a8eaabb99b65a515e57c30bfb9e7a38660ca6895b", +"T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "bfa5dc1a494ea17fd43d52a315a7f1abe9ad80d7fdaa8b3ec5f92c4118638d1e", +"T1_en_bitcoin-test_getaddress.py::test_bch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "730fd13c57131201223dd2f5a14f287ca3b43f5d3a526ac71a9f436b123de388", +"T1_en_bitcoin-test_getaddress.py::test_btc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_crw": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_elements": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_grs": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_invalid_path": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_ltc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_multisig": "09d812e81c04cef37608f181dcdefb6cd186eb5bb111d47ae0e62d1b3fdd64cf", +"T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "ef912e3aed3113ed37f982568c0eca17c27feeb67e87e0f7e43cf8b3b3e8d199", +"T1_en_bitcoin-test_getaddress.py::test_public_ckd": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_tbtc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_tgrs": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress.py::test_unknown_path": "58c9bf03dfd3a4cbc618fe1e198058059efcdb05c9ed1d4889a029c335fc49e2", +"T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "22a1d378e9df57c9550660447ad80ff5551ffd2fc20f95124ac5a3c1d8327a1a", +"T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "3b96cab17c2093aa750ccf7d0c60df64da11a06928364c4c3173feb172ee465f", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "9194aadede08e5a013bf91341b6422e63780f18f37e1489b5fc14d02685fc8cf", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "920090adf00433c753157b0b29abb358d07d0e1717030f347285a858df7fd6ed", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "8501c23ec8c2826224f48f0017c365571910bcce4aa80362288a32d5141a0f20", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "18fd9d3aefef5a0fcac1f2f1367efb40dbc34be2b374575f1ce589d33067aaf3", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "a4eced7042072f6a488d7badf9065eeac1633dde3a51b2e43d60e1108d3f1060", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "609455ce05260f274f9883d55ede382987daff163096003450653610b0fcf511", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "425b703b74c85729d7d02b70de9c928fe97823998b0a2cbacd7a2a5e46755c3e", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "ebcf873be9812d224dda96d0ba8c7b4624eb55bf40c0c85ac64ea0e881dd2d10", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "b496e4fc431fd4b6a2d81e8504213bdae67fc1ec2e3109f3e87206b65b8d0c78", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "45856174d447eef9f4f37e5bf27cd61181aeb3f3a4f5ae85ab38faa9e2eba15d", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "e6ec96816fdadb21c863bbbf5c2fd0e86a3ea2f86d34be80f5fc40dd032ff10f", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "d8011481696f6f8dbad3e8f9cc719fbab75ec35a90dd412bb96fcdfacfaaf1e5", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "322ab2afd0c9fd967b38b01f16eb09a949ec1e3421b44d1b2fb1ba66aa7def8c", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "506efd2adc5d5c62c850b0e38b31109171b5a7323bffd7fa8d246f5d5d7169c9", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "15c2003dc3816e73bc0673cc917301ca5b91f25cc3e2290c8d2add52e931399f", +"T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "40f652d0e899d528605f472f47ec6cb727ced8fe90588a8904b46ed39c2088e8", +"T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "05e4e5cd014bf96373788e4563a48f5cdb4c54d358a88e8a29247c2825c5669e", +"T1_en_bitcoin-test_getaddress_show.py::test_show_t1[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-d9618168": "9e7c7d751f82daaab09cdc499a41988d8519ffbc1efb6ef23a58e48fc4960787", +"T1_en_bitcoin-test_getaddress_show.py::test_show_t1[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-971f9f3c": "49058bad1db26efc3c7cdafcee64b0b0975ea7eab8de41994217d901c7e4f44c", +"T1_en_bitcoin-test_getaddress_show.py::test_show_t1[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-3a07ff66": "e2fa133ac77b590f7686e2af19483a67dd8354a59bcef78159ca6193eb9c6580", +"T1_en_bitcoin-test_getaddress_show.py::test_show_t1[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-1fa0d9c0": "9cd4081c30d19a596436ec730c6a79483aa1064244d12aa4ec51f4f608c10f49", +"T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "7e6fcf4df33bf876103f0f8b547c0bd7e5babd34cfe5be43d62c08fbc67f525b", +"T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "c0c6509ae54e7199cb457ababbc71cdb0ef1c53d535ba4b9fbf59db2cb5171cd", +"T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_grs.py::test_legacy": "1c49d3e4ce2ac576ce7121eda45117ad58abda8e432fec10094e4982a45ef81f", +"T1_en_bitcoin-test_grs.py::test_legacy_change": "138bc552a4cebb01a4d1677a3be808c8bef97dfffc30815148bfdd7f97c41075", +"T1_en_bitcoin-test_grs.py::test_send_p2tr": "1fa04df5cb5469d025c332675abe04443cebbf2c45ed61c62b88b3b784d36bc5", +"T1_en_bitcoin-test_grs.py::test_send_segwit_native": "0e5b337a0e15a81a35edb4cb1351453fd8b90390e5b39b4ee63eb27aea07fff6", +"T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "a54846c41614885d5b30048199cd3cdcc3e8dde25f605f006a4626fa732c53c5", +"T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "63704fef05757ba25a6a6781de9609b8464629a4c657654d2a0c2e6c0410761f", +"T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "7b296e3b16d4db0655b3f38cfe02f49ad900eaa751e4272aedfb37ed268ae2f5", +"T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "ec2dfb6deb2400f35d42c9f626a55eddc07cc34162b26f721113913d0b0e349c", +"T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "e623e85329341afa146fd5f4b93eef09eaecfcd66478b2a096c9930b5b6bede8", +"T1_en_bitcoin-test_multisig.py::test_15_of_15": "41c00a3dcdeec1120d72df9a16a6d38047cf60407f5b1116aa5ca892dfcde7c3", +"T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "ce96277e0a7b026144ee6cdd501c160c27a6d4a2ad8451d9f4de8114eebe0cde", +"T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "ce96277e0a7b026144ee6cdd501c160c27a6d4a2ad8451d9f4de8114eebe0cde", +"T1_en_bitcoin-test_multisig.py::test_attack_change_input": "d8731108a403d5853de526b27e506d00909603ec0c89d1c20f917ca2ef012ab3", +"T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_multisig_change.py::test_external_external": "e4a9c75e35046d5605d3663717ec025e7c7919ce757cdd9df66eba3bd7790d1d", +"T1_en_bitcoin-test_multisig_change.py::test_external_internal": "c3cc02dc9d002d8f392887248348fce3322f0fea2860d755a08fe5d9f7b21ffc", +"T1_en_bitcoin-test_multisig_change.py::test_internal_external": "7a3a1e10b1b14561e2afb63650c1a6273e05232e90bfba15fd0f1bdb131c7d51", +"T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "602f0669af9084a07900170c00699512d1cd4646aba7ddcebf6af05e36eb224b", +"T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "ee110f116e966f842ffc174e3ab55e951aec31b1f0433fc697c9d7aaed3d7060", +"T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "0c398595da3162afee0f4734a155c0cf8d96b830350b58670b47aba40659e3cc", +"T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "25d6670f1a30d56fccf78d3119aaa876b5f31655b6901a3a4ef1838748045cae", +"T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "601dbfefbebf6dcf988a3c1c5508dc75c59df753b0788a2f017eb4346f3ab55c", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "c968d01488a358a7287c4e631996081bb490ff6e702b5ff84c3addba1c7b0974", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "c968d01488a358a7287c4e631996081bb490ff6e702b5ff84c3addba1c7b0974", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "814c415655b03a6757056456544852a7ec88f8e96fbc97728eba7874d03782f8", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "814c415655b03a6757056456544852a7ec88f8e96fbc97728eba7874d03782f8", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "f1d7f1ba4255576af0ffe4dd11dbc31dda17fec533495992a26bc1d22ade567a", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "f1d7f1ba4255576af0ffe4dd11dbc31dda17fec533495992a26bc1d22ade567a", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "df99b6bcfaf86d8ca67713ba64c085fb57b6fc6004494ef1cf83ccb4b57b8d4b", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "df99b6bcfaf86d8ca67713ba64c085fb57b6fc6004494ef1cf83ccb4b57b8d4b", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "670669469e2de75d1164e7a0d5c8ad9c96520b0bf9d7aef85e5796853a375cdd", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "670669469e2de75d1164e7a0d5c8ad9c96520b0bf9d7aef85e5796853a375cdd", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "3f11a25075140b6bb74d03d2eaf67559003cf5f46d07a778e2552bb281eaaaa8", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "7c888498d7a49466b2ec128d523f5b7a4af29beccab3e4da8fdf3de2cc3e0e1e", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "e8723bbbe5cb2484f3d1eda6fe19c48f23df6e96c36f6ff0d5d9d499ffc034a6", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "3ab904120014545ec65941dbaeb2c12c1659da2db495e62c5b3c4edd0dce3081", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "c245c47efa462d2e6d487d81f131d3ae561c0f30ad90e55b53b48ba8b46ebea1", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "81e4b1b39a135814413c96e9fa4e2639a8ab6b2cb9e945445ee12a99e994b523", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "5d57a31f47490c5738af8136bf9ec8ee9d0db980d1653b9eaedace9d60e74119", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "a28c13fc59443f3745bf794c002718c22ff39815e8961d7af4fbbd90777783b7", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "4f7ee19b4e43a709ba945eb24d6bd2a9fe4785e33d54be937d8e3a2551b8d397", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "510797e3346491fc7b3eb6f32f05e6b03640ed5cc8f3d70e1d85b77273578972", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "bec27ce6240d3be57e2815b00f66db2f3d0da60b3de8429772aed5ce5dc0263a", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "8501aeef2b2494e3440d4da64f2d08d24284183c1813753e653039797ffe684f", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "3f99e0c68e5fb612cb48b7d170a5f36a32e1fc5d8fe7d98f391ef4900411731d", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1a3a7cbfe22d241880b170b28fa9c6256119918cb02eaec303d161f90d92508e", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "1a3a7cbfe22d241880b170b28fa9c6256119918cb02eaec303d161f90d92508e", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "1b8d48f87223abd82f2e1dfd61d6202e416dd3cd95a155de0c3a5b4b8929784e", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "1b8d48f87223abd82f2e1dfd61d6202e416dd3cd95a155de0c3a5b4b8929784e", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "63c3cf59c82146f4c1266ba7be7dd83c635737e3b350d190dfdcfec0de66694f", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "62a17ca92dd8e4db55cd1f5fd7b1008864e040d65be4ab316e53ebc13201b008", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "62a17ca92dd8e4db55cd1f5fd7b1008864e040d65be4ab316e53ebc13201b008", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", +"T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "9f11f570c87a5fdf33dcd40fc7042b6beda409561b97d9b6cbe62df4b7979fd7", +"T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_op_return.py::test_opreturn": "d38174445b68e2119f9d141c071ae7a993f76597f4ca3c5fd8f6a2e1e89aebcf", +"T1_en_bitcoin-test_op_return.py::test_opreturn_address": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "36459b469232b78c9d4183e3d0d57df680395bd5f8d10cabfd9b63d34a3b7037", +"T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "e4b83679c3bcc49698a8398bc4e9f578e2026b0148250ee0c8fe7d9690f3d914", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "73ea6c228f3552bc620d0d63b416046f9f245e4035c18cf04d2444de6999e720", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "73ea6c228f3552bc620d0d63b416046f9f245e4035c18cf04d2444de6999e720", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "52f71cb4a4fcbd2b8cc749df7ffb538a370fde1f69edf550e54ffe4040222c0a", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "c2a760331e21fc83e5c9b8a6e727511aede0c6b2125d181af4f20d66fc07f231", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[decred]": "2cd38c79699ee55857371bedb774a4c9f0edf02b5bee63c4ebdb4aac5d3e312e", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "1b2c8571816b97515a99fc631b0c751f22eeb5a909d63bcac78d68980837bfbc", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "5241f18de914867be1cb9d760127274b840e3889333d8aeb859650cbcbfab8ce", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6dbd7ed209479603506fdf0f471ddc09125535c8b370a0cc344040fdfb03046e", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "2dc5a706bcddf85e5d0d62edae2e539fc3728d70938a37beb22ce80704006dec", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "ff835de978dd2caad3d6c43aebc2d9fdf6f3592c3650ce4c60628b2c23bef0f1", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "ff835de978dd2caad3d6c43aebc2d9fdf6f3592c3650ce4c60628b2c23bef0f1", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "47be210e47a0bfd9117bc14fb4d05cc50564ea37a2cd22db0381506814b163bc", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "bbbc0bc8f1ffff0f44a453965ca6147eb856feb741c3107443abbe65da28cfba", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "0c3cd18da80a2e5e7e2b592203e509277b394f1902e615279487052dd1e3ee19", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "0c3cd18da80a2e5e7e2b592203e509277b394f1902e615279487052dd1e3ee19", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "9cd2d7885b7d7cee80a48b8f0354240abf4dd329d5656c0efff7b61a8eaf046e", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "a0bd4704ce81567adc148221d4b6c6a11691c2c5221de0b0cd6a0fe900c67730", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "88457129c207139569d812a5dfb535b06d60105391ad73040c40579c47adfaa8", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "88457129c207139569d812a5dfb535b06d60105391ad73040c40579c47adfaa8", +"T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "f5edfd3bd6d805c243b8a9776a2f8016da982fbb43bad084a9b9f4a5c06915a9", +"T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "d47bd497c13361aa741e92189154c2b557c4a7af3d52f61a6d32b7e9133d319f", +"T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "a0fde7774566436bd570e4fdcd07a5cc04d96c5177e8061c5e89259da45c9459", +"T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "347739330b633be6a836b0192eb183f02dd74520ae17f6c9405238588fa5fa95", +"T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "5a309a1de343c16239ab822e0434afe0cee621c09c6b4aa882ca7bbd81f4c4a4", +"T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "5a309a1de343c16239ab822e0434afe0cee621c09c6b4aa882ca7bbd81f4c4a4", +"T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "2521cfd56ed52e4705470aadd4760082d2cd145cabb9cb4abb53c611818148be", +"T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "c9599c90979cd53f76603dc18c9fd7e9ffd17c62ea21810cb93590431a59e680", +"T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "f928f9445cca66040777e53dd0d3b87a504b54b58d2698f8ea254df4dd50a517", +"T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "d0d7d9e0842ad1075c5d1177b5e1b79a9b124128ee5983b2fc993ccc7709a986", +"T1_en_bitcoin-test_signtx.py::test_lots_of_change": "97fb350409f5083e757c001b3ba6ad70ac3f8cde83aba002275cab6c802db43e", +"T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "23dbe1eb33e97fb7f6ce4369c1adc2c19db0ec71876a27ec4934d23d59742208", +"T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "354e58d76b40943329ca52196d93893d84cbead7c8d5df699de1e73510271feb", +"T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "8d684112b826d1902e8a1a2106618b6a6f4983ce790e939fc3db476b20e30dea", +"T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "3413455a90c3e1dfb0c907c844fab0b82c6f5acabb013d0b5e7e843a3bfe76c2", +"T1_en_bitcoin-test_signtx.py::test_one_one_fee": "013ca83fd68c5b3d74b66b90a9485392543c95b792e97110142c34def21914ee", +"T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "09f36a6d9e41309459ec4ff7ee075e5e8e227eb05f6b722c8e9f2898c6840678", +"T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "09f36a6d9e41309459ec4ff7ee075e5e8e227eb05f6b722c8e9f2898c6840678", +"T1_en_bitcoin-test_signtx.py::test_one_two_fee": "a208d646da6116f842df4df320e2409f2ffbae88459916d9b094764501011ea8", +"T1_en_bitcoin-test_signtx.py::test_p2sh": "e1d834b1512fd9018a81313ce1aabebc8a61d45ae5d32992074029b93c5342ee", +"T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "56a27ac97a3af3279a1cbffc109658301a185f4fbd65654e4003419acb76934b", +"T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "56a27ac97a3af3279a1cbffc109658301a185f4fbd65654e4003419acb76934b", +"T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "56a27ac97a3af3279a1cbffc109658301a185f4fbd65654e4003419acb76934b", +"T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "56a27ac97a3af3279a1cbffc109658301a185f4fbd65654e4003419acb76934b", +"T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "56a27ac97a3af3279a1cbffc109658301a185f4fbd65654e4003419acb76934b", +"T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "88cdc1d295cf7cc63dcbe3c36ef8ac79bde2083af006ccb35ec69b8220b4676a", +"T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "2eaeb39ce6e86d3de8ed96981e1fe764875110b27681b68854dedcdfa5620907", +"T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "c36df6cfe6c693aedec447abbf6c2e78c306809a51054121ead28747dd16fb26", +"T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "5a309a1de343c16239ab822e0434afe0cee621c09c6b4aa882ca7bbd81f4c4a4", +"T1_en_bitcoin-test_signtx.py::test_two_changes": "61e8de6771877b747d58272920e47671d4cc6f0de0643c0932dba2d7a64aee31", +"T1_en_bitcoin-test_signtx.py::test_two_two": "b36dd56051cd48c8a94257f8973e0b29aeaf2a84044fb00b9286ff19ed63ea63", +"T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "013ca83fd68c5b3d74b66b90a9485392543c95b792e97110142c34def21914ee", +"T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "c428485bdad8a17add6fb43a9ab1958deb5aef57193e02a9e43f52017a4964a3", +"T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "e347fc9f97f5c400600bb6031a52b5a1755b938ea5e91e2c17a1045e63c24be6", +"T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "eda8047aeed75b8a47a46c74ada5498bbcdba84b1877ed12b687267ad1732e1d", +"T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "013ca83fd68c5b3d74b66b90a9485392543c95b792e97110142c34def21914ee", +"T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "f2be7c23251127b50596f1a772a9eb933e0b1cef4c30afbc912930d1413f8694", +"T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "383c397a6d5aad1cc45e4883bfb314264161492a508de9e93c3cdb70c3975ed0", +"T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "37ed5d570b29eef47131d1b1a48bc13173af15e499462077437dead863339691", +"T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "177fd9048c7661977db228678f9be74b1e769deb4cec87aa146ef51d20c604a1", +"T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "f2be7c23251127b50596f1a772a9eb933e0b1cef4c30afbc912930d1413f8694", +"T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "19e56e826e17f0b5cb5ab26d684dd4d1ef73da2711edc8bef2a086962c1382b0", +"T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "5c2f96acb6e23f1e5698276e697c7afa299454fa12f1b2f6eae8b35490d69f6c", +"T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "6695ba71c171c82c4335db3f70dbb5f861c44141ea0eeea98e295ab6b51da3bb", +"T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "8f55fbd32b618e6373ed0c68dee2b3e275e0fce6ff7502bbb34ab4702238dae7", +"T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ee152e7534c4dd60f939b7403a8169eb7d1703e3bdab819a575bc80f261212a9", +"T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "715e852eb84decdecdbae64a142dbe5277ce5a717522a64b0ec7acd0c010da94", +"T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "ca2c0db34a1cc2e354b5eceaee0c85fda2103ff74909ba2cd721ef4430247b91", +"T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "7a03bc65b666015135bee51e3c54a1ca7b48b2dd1a276e0ddeeea970e7d01d0a", +"T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "4b95ff0e4b04bace41ac30a781c66e99838f654c2cb0df138c97a5e963b4ce5e", +"T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "7a03bc65b666015135bee51e3c54a1ca7b48b2dd1a276e0ddeeea970e7d01d0a", +"T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "58e94b81fbe4879ef37133a4014b9dcc855fb075a52661b4197ae7f21b5a2337", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "a4fde273e063d0ba7bf17fdecba0633f4d32bc1b8400789d39545cdbfe8c36fe", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "a4fde273e063d0ba7bf17fdecba0633f4d32bc1b8400789d39545cdbfe8c36fe", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "a4fde273e063d0ba7bf17fdecba0633f4d32bc1b8400789d39545cdbfe8c36fe", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a4fde273e063d0ba7bf17fdecba0633f4d32bc1b8400789d39545cdbfe8c36fe", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "1f8e0bd62be3e6bccbe83fb0589760364f90de7eef7e718d1741fb2591462d75", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "1f8e0bd62be3e6bccbe83fb0589760364f90de7eef7e718d1741fb2591462d75", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "1f8e0bd62be3e6bccbe83fb0589760364f90de7eef7e718d1741fb2591462d75", +"T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1f8e0bd62be3e6bccbe83fb0589760364f90de7eef7e718d1741fb2591462d75", +"T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "3a79850fe95abbd2ca342fc62ba7f6404c4f437977764839a8146789ac811fce", +"T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "6ce87a239e06fef8eafc8b3e2ae7212c000c648d40c77da0667d95db23770f9a", +"T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "10bad1ccf61c18d7b6157b26fa02e44962f5540852a04987f8059931e2315086", +"T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "10bad1ccf61c18d7b6157b26fa02e44962f5540852a04987f8059931e2315086", +"T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "071c96658afcaecddc21aefea47e689d798a82c37600e02a95f6ecb15de269ce", +"T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "807ab01362899bbfe2f557faca14b6c7317715021f8dd3dc1deedd20e14e3b80", +"T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "50423223ee864ad5d3fd00c91774ea5b437ecfa61538a32f24f4f937419b213b", +"T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "071c96658afcaecddc21aefea47e689d798a82c37600e02a95f6ecb15de269ce", +"T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "05b9b5f506ef984d798aed1c51299181431881d6098a595bc0a886f22b4422fb", +"T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "ddd46015ad9e958929a0fe9ad37a5aa07944807f08be6d3f9c3086c4876f6af4", +"T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "05fba4bc7c52f1ae8154b8d55d52795900b7e1598a1d965200d36b5f44f93ccd", +"T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "4799cbd3de2dad5255880a807f15d9d0d857b2ca0bb1afb287a4810964144833", +"T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "4d0e5e5699cf3173fa6361dee03b9c51cfad6e21f5937ac899719ac63602c60c", +"T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "4d0e5e5699cf3173fa6361dee03b9c51cfad6e21f5937ac899719ac63602c60c", +"T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "26ce46c162932aab4a51fe6ab40b60e061d33c9cefac85db857ca6a1b1edb047", +"T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "32f4561974abff85a6569299f3fadbd88eadf1669e6159f42143553f9eaa9192", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "d2090fa198da39a988f8f6c6469dcc449c4763a0cde0b795117ed35efbacff79", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "6634ded2c8af78bba59dd7ff2206d15b47f8637471e5b27f47b96df122239509", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "b546ea334d8cbf87ea09f44b502a7cbb1be5a6db6180c6fd2046ee413e4ff4bb", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "c5827829de525396d4f2e089f08a215a7cffd94883fa5a39fc55fc3f88a81e28", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "82b3602530533c35f4e2bdd2af5e6795e4bb75667efcccd13270292c3eb75669", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "e147ba0984c8ee2d74ce76293315529db61dffd148cf83bf5b50eb0a95fc3e6d", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "f2be7c23251127b50596f1a772a9eb933e0b1cef4c30afbc912930d1413f8694", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "e84023fa44000c99018eb95e4fd29a423c140f44d3ac9918be0b2854baffc93c", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a4177cc812c88b18a3bec937adb2d286107833dcb52096a1bb26652975f93276", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5a203183e002689d3d0b5a9e1ed9d495022469cc138122b2e107a82d47964d6f", +"T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "aef56cf625d6c2b621eeace6371111b1b2d5fa269878327ee603802d603f8eed", +"T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "ee0df84fb7a48e8a9c7de298b28b16068a6601f0c8ea4528a0f187b07a9707b2", +"T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "3f94ff30dff867fd58667cd1f26025939856212f8cf3eefee4eafbfa5f2c6003", +"T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "0367ba2a029f686d2313ab464ffa5199727d9ade4e715a9c69963e208c648f51", +"T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "0367ba2a029f686d2313ab464ffa5199727d9ade4e715a9c69963e208c648f51", +"T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "6e32c316b41ad35dbc46a10713ad569b832651dc54efa935dbdc0a05f5ccf990", +"T1_en_bitcoin-test_verifymessage.py::test_message_grs": "3a99e790a5d48dbaf76e15d314b46113f10daba5ad4cbb652d162033b0d3b02e", +"T1_en_bitcoin-test_verifymessage.py::test_message_long": "ed4a40daa108bb66f076da8c3b30e905c54a0917d0b9fab12ea381bf6f5a2036", +"T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "d46dbcc225a2b01433bb80af1a0983d6b8c157cc6004c0dce0e895d59b040601", +"T1_en_bitcoin-test_verifymessage.py::test_message_verify": "320e01a4b885943a54fe1645f5620c4b1e30426bb99aa3f65f86359417bfada2", +"T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "985357efe56878db61c44dcb24000b8674bcde01503cb199e5f6618fd700523d", +"T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "138d7ed85bf5afa7ab1414e9dee9b44f4b738a90bdd102afdb235373c2209015", +"T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "ab5a72257d026dc51258cc84f78a9beb104cf2695ccd5e4da217ee99766f04a1", +"T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "b8efeb08de9067d3f66a941b2c022f31b2652052d71395f5e3876972b6f3c2ee", +"T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "50be4a401cd033ab95d5f3a2a7196cb9292961783d3940b07b00724a0036ffce", +"T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "f0dd1999c4e3775bbce14db0cf307176de5c284a4e488ef59063b3512bfbeab2", +"T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "96abadc9e4b81ae4f3554453091f023b4f81683779abb40f40fa44fed8c5147f", +"T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "e3d23212f0ff2a1dd5a52575c3e77553f4b960b40481a7bf94503203ea0fd9dd", +"T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "ef5ddd814807615cb28e60aa67c53c768b871f02ed75d86ff9cde22a63db9ceb", +"T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "f0db374f9264968c3ac8257227403eaeb06196ed53b9a6652e2cd0615a5ac43a", +"T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "550602a4230f3cbf01b7af22018947ef6ae8706983af18164810f28c8f519256", +"T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "e741a0c6712681bb767649105f3f2388a63ce55cee6ef62fd26b5acf2bf3e4ac", +"T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "d86d753fa98cc9a99fd635bb57e14e0cae500cab6199b0ba1d501fa4eca6a63e", +"T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_builtin": "d88cf848ef5ba25c4545f817db565b5a020f47cfd56453c930f62a3b2721cd2f", +"T1_en_ethereum-test_definitions.py::test_builtin_token": "918bc7c30de63b9778e9a97cd3e84424f85f777216285dc8d624d5d56497a954", +"T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "cd3c38d2f2b1158846a646a3a589d651b8b81ad05018909b3bd9607e9a272de4", +"T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "3dbb91414205db65140c6cf9b347c5a17fcc72207da62027ed1781c2142433ac", +"T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "98e80bde52f40cefe33b8e16db3f38942035614913362168cb0e946a9ab5c856", +"T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "3dbb91414205db65140c6cf9b347c5a17fcc72207da62027ed1781c2142433ac", +"T1_en_ethereum-test_definitions.py::test_external_token": "b224ca172240ccb336fadaff42dbee3985afc865111ac25d2d89ac51f4e7f9fe", +"T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data_hash]": "306b42e936a0c6c48f5ae556fe4d7612c63c45b73dc6a3830f12922b70c50330", +"T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "59aaee443a05ad617bd7d112e9a8e75379e5464bb4238f9253d6f1e7e4f097dc", +"T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data_hash]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data_hash]": "8f7b33550d98bb2abf54271e9a435dd3d8371d4aaf03194a9dad8162ecfcb832", +"T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "0b690024cdc6bc88d2eacf70a91287b691ef9ac7d8a9555281a9fa5155397a0a", +"T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data_hash]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions.py::test_slip44_external": "ee68e40f34c86d20860b593d5551d4826cadb3d6c1f26d3c2bd53952595463fe", +"T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_bad_type": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_outdated": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_short_message": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "efe11a5e9959ba001e33298ec4e00c4f224e325bd41fd713cf01192ac4dfb01a", +"T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "16ccd6cf4421b1002d479f9ca633ac1ee8dca0fa3f1339fa66380d14e5109e2a", +"T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "a229f91ee8c13470faa74e086d582032072f8f2e3a38cf5e9941bef634abb626", +"T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5eaa807f7ac37df989696049a1a5e19751f0c32b7541167e88f56a7aff353f42", +"T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "d2f4a0194a0dfeb082daec10639c0489ebe30389d7baf1a26dfe20538421592a", +"T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "c6323cb37b60ce8effa98da2fbeee0a734d8d3566fe7f2932b55ffee6d146f45", +"T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2", +"T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2", +"T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2", +"T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2", +"T1_en_ethereum-test_getpublickey.py::test_legacy_restrictions": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[array_of_structs]": "04b94ca842aa77fdc6b75b07bbe178c4ea99c35e6dae630588fa5d9cb67b9090", +"T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[bare_minimum]": "730a5d3bf1389ac14aec7ee9f65e2cbf516957e5077acc0e07a7541f667e2f0b", +"T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[basic_data]": "fd99dc685a4a125db0f3f8d2a16ffa242bd57e4ff714d66cc9c4161c486f53be", +"T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[complex_data]": "24957177a20a1aacba25207e210ee3d97a9ca0b62b19e2fa9598d77bd27f3cde", +"T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[full_domain_empty_message]": "68d748b8407f9d9005d293b5c6c122051f7376761c3628ea4968255ecbc1df39", +"T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[injective_testcase]": "586a48367b619266abb0ddd39ae825156fcc1945ae01170e5f4ee7ba66c83360", +"T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[struct_list_non_v4]": "eb17b48c8495ae235345920089c1662f5aa36fbb6e90f0c0c4b270c7bb2f2ea8", +"T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[struct_list_v4]": "b0ce2ac7326df63ae12badf47a58db955fe2b17a327fcdc6eee1fd06375a25f7", +"T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[structs_arrays_v4]": "a38f3ef2571424b460cd7351cd7263c8fc19684041d57f32f5599588c89046bf", +"T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "0f1e81d57996381781e8e3c5865875e6d48c29128d2de78f33556d96f29c2785", +"T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b56508b17391e12992ce21c04f0ae096ee9b2cd4e1dd2912e75b55a634158976", +"T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "a8ec598be6255799e7f01e84343cc7e5e02d84cee5c3cb909457304390d6fc9b", +"T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "c6e541efccc6d50fe6e2d590bd48c5d89fdd3defda6088d11c771827b48e2656", +"T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "06a642eaad886c01421973efa714c59eb6da8e60d06fc44cc42a5f959ec3dd27", +"T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "a6b54a1244c1c457de732c2d27371475c02e451a4820f283912a5e3c62fe2842", +"T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "858c5f14ecf61cbc85acb7d11f85b65a88c3d14f2591f185e1925092a977a7d6", +"T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "72795258943a821df0fca67a6e1d915883c414e5066cff8f93d4a5735c0ba45b", +"T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "76c51c49c1ae5c4f77e15b9f053d8f27665d25a9866487b69d6eebb6386bf855", +"T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "cdec0f79f2abbd90f4346494037f7bb4dd4dccc7c6739b497873d0c5603f2a26", +"T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "9e51345ff0d3736f81a5c169768f9a80c555187eef2db3046f5ad12262990466", +"T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "e2aff8a36dffd76b0e48256a5012ff191d0ce877a42cf31e1f25f7c3cd786d64", +"T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "ca3a682509adc512a66da84881bee7a41914f37f4b33a6749c3b2de4672a9142", +"T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "9629b7a3b76f8e4279b7e9e754314b13dfc3e33e87406540b2b8fcdcc17acb26", +"T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "0731707804115376996c8a545834c3fc08838497e5a4cee065648de501cd0839", +"T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "0f79aea15b09e207f7e2bb226421549a0446a4722dde3000c31c3c66ec2059d1", +"T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "22daa96dbdd3aeeec11f1134baa29c0ccecbadf032a47aaa355f30c994897907", +"T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "cdec0f79f2abbd90f4346494037f7bb4dd4dccc7c6739b497873d0c5603f2a26", +"T1_en_ethereum-test_signtx.py::test_data_streaming": "058a66e82bb733d5c5c687b5537887022acfd7401bb0b5aa4a12f6f35b209239", +"T1_en_ethereum-test_signtx.py::test_sanity_checks": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "05b7842c03625104ae3459a55097bc96e878eca465bf69ea2691407868e5dd4b", +"T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "90feef1fdcd162209a948c127df638c09bee0444fee40f2d30dbff21658d83ef", +"T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "37aa64fbab44b89757833df6ee78e302c97fe24c4cb74175f1843f635cb2dbec", +"T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "90feef1fdcd162209a948c127df638c09bee0444fee40f2d30dbff21658d83ef", +"T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", +"T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", +"T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "8b432aba21bc4344814cceaf693e114b9d3e3d6ceb83c3a6af7c3ed0f9b37449", +"T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "445286b7501ca67dd16dafd7ea09c57cc4a37a642ae50f0c812d74353c37c017", +"T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "d797c970429f1e974a69b9f5bd814a4f13f15b1b5d6ab1c117e65b919a434cf9", +"T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b", +"T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a7efa7f690d1448dc48f642f69688e8b266417901cc014e5930c94c9087b3e08", +"T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "6bd90f2c98122de19159e60fd4dcf9f4b16a600407ac84ea1e447d561ea9decb", +"T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "538f7be885ce6ea3a6dc842ef10797fa45184d7737f6f179c42d36fe92fadd45", +"T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "37aa64fbab44b89757833df6ee78e302c97fe24c4cb74175f1843f635cb2dbec", +"T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "05b7842c03625104ae3459a55097bc96e878eca465bf69ea2691407868e5dd4b", +"T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "90feef1fdcd162209a948c127df638c09bee0444fee40f2d30dbff21658d83ef", +"T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "37aa64fbab44b89757833df6ee78e302c97fe24c4cb74175f1843f635cb2dbec", +"T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "90feef1fdcd162209a948c127df638c09bee0444fee40f2d30dbff21658d83ef", +"T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", +"T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", +"T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "8b432aba21bc4344814cceaf693e114b9d3e3d6ceb83c3a6af7c3ed0f9b37449", +"T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "445286b7501ca67dd16dafd7ea09c57cc4a37a642ae50f0c812d74353c37c017", +"T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "d797c970429f1e974a69b9f5bd814a4f13f15b1b5d6ab1c117e65b919a434cf9", +"T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", +"T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b", +"T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a7efa7f690d1448dc48f642f69688e8b266417901cc014e5930c94c9087b3e08", +"T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "6bd90f2c98122de19159e60fd4dcf9f4b16a600407ac84ea1e447d561ea9decb", +"T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "538f7be885ce6ea3a6dc842ef10797fa45184d7737f6f179c42d36fe92fadd45", +"T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "37aa64fbab44b89757833df6ee78e302c97fe24c4cb74175f1843f635cb2dbec", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "171ffadf61a2520274bedf6a8543127f23a8948c2689e034f996e170289b1822", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "28d2a0d397b4e9865ca8286cc1a3669c3a7d34bb31b430662354bf3ec69d1cc5", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4b97bba97b14f40c36a793e8a842d5c6fd13c4465b4d3b47b96bab943eb649f3", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "cdeaa7c3e562acc91e061b867ab8d3b2fe9902375505d9d75e9a221e17aa40e8", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "171ffadf61a2520274bedf6a8543127f23a8948c2689e034f996e170289b1822", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "28d2a0d397b4e9865ca8286cc1a3669c3a7d34bb31b430662354bf3ec69d1cc5", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4b97bba97b14f40c36a793e8a842d5c6fd13c4465b4d3b47b96bab943eb649f3", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "cdeaa7c3e562acc91e061b867ab8d3b2fe9902375505d9d75e9a221e17aa40e8", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "f6c5f398d4e80fc8f93cf70e9b10de24b9a968db04dc6ea21b28d1a273f04ca1", +"T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "f6c5f398d4e80fc8f93cf70e9b10de24b9a968db04dc6ea21b28d1a273f04ca1", +"T1_en_misc-test_cosi.py::test_cosi_nonce": "6990c238036b79368fea1dc1e3e8871d7788322bbee7425d14c53623bc8182e8", +"T1_en_misc-test_cosi.py::test_cosi_pubkey": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_misc-test_cosi.py::test_cosi_sign1": "6990c238036b79368fea1dc1e3e8871d7788322bbee7425d14c53623bc8182e8", +"T1_en_misc-test_cosi.py::test_cosi_sign2": "0852e7433ec54a0ace301b683417107a9805095acd954010b665266503a79f36", +"T1_en_misc-test_cosi.py::test_cosi_sign3": "d04fca2d97f7117ffc79ae52d192086aba2f9c64e89db27e20a930e9048f1d81", +"T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a849d9e11e222d1348ce3135680a2a61ed265692adeba4bd48af2fdc65207e61", +"T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "e36d5b5db4b3733c9f484b149c0f966b3dd66e8b54e1b5bccf9da5cca7abed91", +"T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1fb589a68cc75f8c612ccb8fad53241eced92aa396ae1dba282919c0d0786211", +"T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1_en_misc-test_msg_signidentity.py::test_sign": "237d6575385f61c32b574a23168330e40025eb9351202698f2d115db0e146934", +"T1_en_nem-test_getaddress.py::test_nem_getaddress[False]": "647dbd437bc7d5913ca7cbc8027d0230c3617e8b266f2c89e63c2d1342313557", +"T1_en_nem-test_getaddress.py::test_nem_getaddress[True]": "647dbd437bc7d5913ca7cbc8027d0230c3617e8b266f2c89e63c2d1342313557", +"T1_en_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "74f2ed8d59e1aa1185ef7f06fe63e49380dfb185faa0e0d01656bc2bc8ff8c0c", +"T1_en_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "d782d6c77ea579238f6c5fc81adef34e0a47b4006ee4cf4556747ddc4afa998b", +"T1_en_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "014cdfbc54f7e6861fbc74e2c5729d6d5ce75b9774130d2cc62de413a96d05c9", +"T1_en_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "804dc7f0619837962a318c1971a411cc83da0a3ba1a061cf478785991fc26e01", +"T1_en_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "4655d97cd5babce071cf8fd46ed5c9de91d0b60cccaee31a5507cf8f6ab7326f", +"T1_en_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "6bd7137199fd3aa938a8e2032a35fe36bd31110e0aad78c2ae15f92e903c09e7", +"T1_en_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "9217aaa55dd22fb716e26c16aafda86d8f068f910c28c6c88881ed80c4204d94", +"T1_en_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "7a63646daa836594fc56ba6f4d1af5deb0f1ea50c4e931a084ab1636a11546d8", +"T1_en_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "11bb4a8dc8991471d8ed896691ebaecd0023b29432976ad519e92ece8f91a96a", +"T1_en_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "b1fd9c5250032b2decce6ef18cb1c6e06e9daea279039b58e01cc28a3f4dc765", +"T1_en_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "4de1af57a9f25b81ab5d29a6c96e2cd117145aae6cba3fedd083cac7f8cff1d7", +"T1_en_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "ebc2635064a4469a98c2a4db2608ec3d006a69386d47e78bbbb8800bb0e7dc2a", +"T1_en_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "ac772c16bacef88ec59bc4e1561520ed57e8d0ac74045136f5849a665b92978f", +"T1_en_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "3dac9a2abaab139be3b670d6f8e22d34db0171d09101b447c9de7011ad59b465", +"T1_en_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "3dac9a2abaab139be3b670d6f8e22d34db0171d09101b447c9de7011ad59b465", +"T1_en_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "df352a677aa8f591effe241d0a384cea282934d5735c4bf34734616237fb96ca", +"T1_en_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "9cc4d7978b6296e0d107a20912e4dedcc9ed6eb3229749a7fb515827c85f18ee", +"T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "19107fcdec9d88bb254164797b3e959c14c34138ca792e061312324f047f8868", +"T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_t1": "5cbdd2bbb62db19c2dd8a2209c18c803fca6754d5452f6bafa4a32d4aeee2300", +"T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1de2c1b0e785fd429d886f6912e99380e9d2607d5741db4437ed0b2ba2156aa4", +"T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_recovery_bip39_t1.py::test_already_initialized": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_recovery_bip39_t1.py::test_nopin_nopassphrase": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_recovery_bip39_t1.py::test_pin_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_recovery_bip39_t1.py::test_pin_passphrase": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_recovery_bip39_t1.py::test_word_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_reset_bip39_skipbackup.py::test_initialized_device_backup_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_reset_bip39_skipbackup.py::test_reset_device_skip_backup": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_reset_bip39_skipbackup.py::test_reset_device_skip_backup_break": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_reset_bip39_skipbackup.py::test_reset_device_skip_backup_show_entropy_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_reset_bip39_t1.py::test_already_initialized": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_reset_bip39_t1.py::test_failed_pin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_reset_bip39_t1.py::test_reset_device_128": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_reset_bip39_t1.py::test_reset_device_192": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_reset_recovery-test_reset_bip39_t1.py::test_reset_device_256_pin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "b004cb1a815072ae3ba9f4aadeeb9d37d3309513e973f7ddeb2ee23a056db726", +"T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "101692e06782269486e3f1093fdf03200e0cdce4b4ffc7cc5fc779b80f69d1fc", +"T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "508bbd5285d2f3087fa3b872ff053a286630b80beacd0b8b30c8577aa5396c86", +"T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a2b19a4e0337cb47b02c4d79f571a7297ac273f3bd95d3d5886d908fa8313c8c", +"T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "0d855560df510dfbb5cdb668fa84e3c6ba10b306c65929a6138d8c07d52f9087", +"T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "953bd04ca03df48a1635b944044914676e3d397080d1f86c25a5605ba4c103c2", +"T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "42b9120cba355febf542b6f6162c2ef2fe0265270f680802ce0aff1833c152aa", +"T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "bd662518d9e136e5eae64e507994f7b74075294634317a38669dd2671001a188", +"T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "c03fc37c6a4d2341b0081900b90ffc2faf09a228607d9d6c807efaff8ecc8fde", +"T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "9f1f4cae47cb5e9602450d110fd1945dbdb059996955d74067204966c0cc1702", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "3f55b35c47b3f0cf896793263006d9bc4089227f21e46e4e68f67386c1c85040", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "8fd4d210bda197e57ee660e71158b295dd3f51f8df9a235e245d5a72f54c68e8", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "0834c3ffb6c8a792cfa8146de3641e3a4b95276b9583cd729350aca372528ed8", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "9504677a06c0da6f339a5313bdff39f7fd90c037a944cf9c3c0a4f4b40e787cf", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "c0dd9ef3c1635dcceca33d68af85aeb2b544c2141e021b2296b17511fb111dec", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "52c9140b474f32678d2e0e3e6bffa255c14a82b7949f382da4e540f07d47383d", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "8b65a55dddbdab0724f551b95b8243467fa8aa1e24b70f11c11c948fdbc1ade8", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "f7663936ab2dbc3c11874a9f6e9e380c263041d38a147321da5570c3ecc3a214", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1ec10003113ac613a28c37ae8ec3ee67f793ad5edd61b2c17e1c8282e2839273", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "a19740a14fdb9e8f8fb2d48fbf695015d575212e5fb5feb58ce5866f56fb5e0f", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "cb39bbb78f12de2bdf95bc053897b3bfa41adcf3aacab61522852d358f112656", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "713fcd90a54a10399390e649b799b33167bae37b62ab7fa1437b960c69b40cd5", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b4683e95a636be05965b43705f953a1c02d475c8b2ca516c51b840e7aa737680", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "d16f43f49d8bd5c07b21a1ee7684d831b7a15800bf9770973399c8cd89f6dfc3", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "21f7f9222e0d4b9fb52e07a2e697d64a3b221b425364842d495eb30415952f08", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "1c8218b025efff40431aa5e468f33475360d40d99fbfe5f4fd8d4607f5857b53", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "26251a7bb59b8aaee82ef9cf1f373514bb928e14746b610eb3ee678b52c7141f", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "9dd8f325286fb29d558541586781818079b09d75d8d2cc734ccea4b80b95c876", +"T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "2467d2ac824a5b01e1d0be8a8ddec5cc554479a66916511eec67fdcbbd18b82d", +"T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "04d407ec2ac218be58e850de413cf2dbd1e6006f1fbc84792108484c4e8e9e7f", +"T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "288fd25b505a374900b0de9caed38a01bacee862a83bb043f350348e4949f1ad", +"T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "542f7eb47c0007810de6c43b20c9a9e3f3c64bb695e375137154e5bdda3b2f50", +"T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "43ec6d06d403c3d0a7f6ce3c3df48b3611094db491a8b382165d1412e4704331", +"T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "1bd531cd757b8ca295201f9dcfa9e19e56f0ba697b6200819ab06d041563247d", +"T1_en_stellar-test_stellar.py::test_sign_tx[source_account]": "9eeaa72b46decd6e881b571ba534e5006f9f11f4d2f60c97e817d6467e9b1742", +"T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "57105ad361869c1adeec5d3846003659c6b1fe5d8d38b7d6f23ec6bd8e01b972", +"T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "a92beafd4711e0768f9453c3cf7958882f4f3439d9e14ca1e69db617e00bd790", +"T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "da273d8bb839bc1f80ff5af65d4c7f4d67ccc5be41a0a5f7a24452f12f7975d7", +"T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "1c8218b025efff40431aa5e468f33475360d40d99fbfe5f4fd8d4607f5857b53", +"T1_en_test_autolock.py::test_apply_auto_lock_delay": "f7bfdce7fa7579fe43beb0afd9b123114ea873f28da530abe3df8802570012bb", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "4f24424b5a55618ecc6d3e57a96071a222892dcef874428c3914ab86eca98c77", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "2f625e2e17e14195d189eb0f2dc22a4a27d3eb8c0a0d8fcb464f3227950cced4", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "734582a62c95e86d8769347b1dfa92db75fd7d65fb29b757e8c202f7367c1108", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "4c6d0f3b2586de622e6de5be2bbdf718f5c674595c85ea51fedd6f384dbc4c76", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "186dc5f99a14566f8c8985d157e90721f186e6edc4b743a910590b008794164b", +"T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "811357fd9acb0de12cb31acf96bee107cd0de53b78326fee5b962bbc1bc17662", +"T1_en_test_autolock.py::test_autolock_default_value": "cde0dd7c453463cbfbb6bb35289fca350efd43511f2701b634c0fbb81f7d9dec", +"T1_en_test_autolock.py::test_autolock_ignores_getaddress": "4f24424b5a55618ecc6d3e57a96071a222892dcef874428c3914ab86eca98c77", +"T1_en_test_autolock.py::test_autolock_ignores_initialize": "4f24424b5a55618ecc6d3e57a96071a222892dcef874428c3914ab86eca98c77", +"T1_en_test_basic.py::test_device_id_different": "aac15a6d12d21966c77572aeebd56ebc2a47ecba3a508f5a421af2a5da2919e7", +"T1_en_test_basic.py::test_device_id_same": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_basic.py::test_features": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_basic.py::test_ping": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_bip32_speed.py::test_cache": "55f043b3e286b778a02baea8f7c3547208849e2e18f90837bd9374a4a14c5c0b", +"T1_en_test_bip32_speed.py::test_private_ckd": "55f043b3e286b778a02baea8f7c3547208849e2e18f90837bd9374a4a14c5c0b", +"T1_en_test_bip32_speed.py::test_public_ckd": "55f043b3e286b778a02baea8f7c3547208849e2e18f90837bd9374a4a14c5c0b", +"T1_en_test_busy_state.py::test_busy_expiry": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_busy_state.py::test_busy_state": "fe7e762884268cf79e211eeb7c7ed7f85b8364e8bac27bd6790fc300f9a1429c", +"T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "de7fc40b2f35e82fa486f1b97ee3e34a96d0a67412537e8a0fddacc0b0b1649d", +"T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "af93b5d0a8ae6b297391a43ff3f6382d0bea1109f4f411f5b306e2e7ced6e814", +"T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_debuglink.py::test_layout": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_debuglink.py::test_mnemonic": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_debuglink.py::test_pin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_firmware_hash.py::test_firmware_hash_emu": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_firmware_hash.py::test_firmware_hash_hw": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_applysettings.py::test_apply_homescreen": "d85a5591a0a433741fcc897fa6941bf0b8475de957375e3811fe710b3d40a053", +"T1_en_test_msg_applysettings.py::test_apply_settings": "fb962820965916d494e44bd5aebd25c4f80095ca3d468d3ed212e04a9e0ef9e0", +"T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "1f948e87ea82a0224190d3e552e506d5d4579503905526160c7a527c5a88b729", +"T1_en_test_msg_applysettings.py::test_label_too_long": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_applysettings.py::test_safety_checks": "f69025c134e99a8d390d01fd29a8373d8cbd8c47819d97ec351bedf55187441d", +"T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_backup_device.py::test_no_backup_fails": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_change_wipe_code_t1.py::test_set_pin_to_wipe_code": "5e5b3aab138a323a90e75db03e70d2c40e4e56fdc8a1b393b9f38d6501ed8589", +"T1_en_test_msg_change_wipe_code_t1.py::test_set_remove_wipe_code": "6a14202a03bd09b55edfe56bca02f6a1ab03fbbcd25983dc4c4a83e34f05c9da", +"T1_en_test_msg_change_wipe_code_t1.py::test_set_wipe_code_invalid[1204]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_change_wipe_code_t1.py::test_set_wipe_code_invalid[1234567891234567891234567891234-943f94d5": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_change_wipe_code_t1.py::test_set_wipe_code_invalid[]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_change_wipe_code_t1.py::test_set_wipe_code_mismatch": "e64e729d09f856e446c532f24fcb7127af04bee015c5f2636dbd30c7435b9c48", +"T1_en_test_msg_change_wipe_code_t1.py::test_set_wipe_code_to_pin": "2e9a43e4c73ab5a4c013de17effb531bbc3f2eb4c2ef584717cbbb3b66a94e2a", +"T1_en_test_msg_changepin_t1.py::test_change_mismatch": "8f9a0177ef2b66b43e6940c7820809dc1d135d9d410db1898a0e4cbbca5ceb0b", +"T1_en_test_msg_changepin_t1.py::test_change_pin": "8809c4ec33f71e5baa68387d22e2d8516cc645d4db26ab2653e58e0147cbab0a", +"T1_en_test_msg_changepin_t1.py::test_enter_invalid[1204]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_changepin_t1.py::test_enter_invalid[123456789123456789123456789123456789123456789123451]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_changepin_t1.py::test_enter_invalid[]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_changepin_t1.py::test_remove_pin": "bd74cf9520e364d895b59dfe766e53825be8178274fc222750326b4c603b8b3e", +"T1_en_test_msg_changepin_t1.py::test_set_invalid[1204]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_changepin_t1.py::test_set_invalid[123456789123456789123456789123456789123456789123451]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_changepin_t1.py::test_set_invalid[]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_msg_changepin_t1.py::test_set_mismatch": "9ac8ffe75bd7a8b7cd56198b0112dda1cba925c1109acaa306f864b4b9e276ad", +"T1_en_test_msg_changepin_t1.py::test_set_pin": "a1a9bb1a5035ff8277120ccdff9cdee1b8875fcaac2a2d279e5a54bfdc38fa81", +"T1_en_test_msg_loaddevice.py::test_load_device_1": "0e92c294292142cbb286b613d40d2fdee8977f18285823ce896f40c2269a3ecd", +"T1_en_test_msg_loaddevice.py::test_load_device_2": "f89f8fcecf250b76dcca3e52a5a678e14ca5eeae105fa59848db41ab514d6614", +"T1_en_test_msg_loaddevice.py::test_load_device_utf": "9523984b9cd124422558fe14ae20aab35338f86f08756d11919db7b2d3b86781", +"T1_en_test_msg_ping.py::test_ping": "de7fc40b2f35e82fa486f1b97ee3e34a96d0a67412537e8a0fddacc0b0b1649d", +"T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "ec72184a9763603df32632001bf5502925516177ecdc7ef74896faf288eb1e58", +"T1_en_test_msg_wipedevice.py::test_wipe_device": "aac15a6d12d21966c77572aeebd56ebc2a47ecba3a508f5a421af2a5da2919e7", +"T1_en_test_pin.py::test_correct_pin": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", +"T1_en_test_pin.py::test_exponential_backoff_t1": "b8e1017505578b2ee34dd13c607d65a2a0d259878b04869dfb1be5b3622d58c7", +"T1_en_test_pin.py::test_incorrect_pin_t1": "8c78ab77bce7753cd12e8085ca4da375c4882e8c3c8c9df212b2a39a3f9cba3c", +"T1_en_test_pin.py::test_no_protection": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_protection_levels.py::test_apply_settings": "0f02ea5b45c4d7337ae59eedf0c91f42fae18f657ebe7f121ffb8160d532a25d", +"T1_en_test_protection_levels.py::test_change_pin_t1": "f6e681d7987267465a082dbe914491004dd2eb517cb1cc8efb14650f5df5ceee", +"T1_en_test_protection_levels.py::test_get_address": "33bc46d7179663c1b72d116b8c0dd1768e89d58c4154bb6a21e750fea83b90dd", +"T1_en_test_protection_levels.py::test_get_entropy": "076d586a9a24e375f970cedc1b9f01a12e97b92bec04652cc5a86d7c50e7c552", +"T1_en_test_protection_levels.py::test_get_public_key": "33bc46d7179663c1b72d116b8c0dd1768e89d58c4154bb6a21e750fea83b90dd", +"T1_en_test_protection_levels.py::test_initialize": "3f4bd58ada8b2be88ceaf45b3653e940bd52f48eb42bd5ee43c0a8c7dd392139", +"T1_en_test_protection_levels.py::test_passphrase_cached": "79a607736c6833a04561231c8db1df8cf6ac186715fc3798be9cc3456a588e24", +"T1_en_test_protection_levels.py::test_ping": "de7fc40b2f35e82fa486f1b97ee3e34a96d0a67412537e8a0fddacc0b0b1649d", +"T1_en_test_protection_levels.py::test_recovery_device": "9bcc413cf3e44af03f2dbb038c4df43bf503805447b71dd5713ab34335f9341b", +"T1_en_test_protection_levels.py::test_reset_device": "b76ab8da407423d61c605a6c1a5851885ea0aa0fe81b23a7bdb6f9f39492aed0", +"T1_en_test_protection_levels.py::test_sign_message": "c2303075f8b908d6e990b5f00599a4eecfbf0d8725804a48a94a6c18e4b92e10", +"T1_en_test_protection_levels.py::test_signtx": "72f219caffe32ce9db298e62f69bdeb8f51c21deb87d5e543193faa09c265311", +"T1_en_test_protection_levels.py::test_unlocked": "7ebd713447825d40e120916a78439aa4e3fc19ad9e54b4fe622f95a3e669fbd4", +"T1_en_test_protection_levels.py::test_verify_message_t1": "d4f8be1019f13604e2ceec12e65a0eccc8825ed07072479b355dd30e2ea83219", +"T1_en_test_protection_levels.py::test_wipe_device": "71f454265675d5884e5419569ea85cc5fcb579de2dae23630fc3c9877b7e00be", +"T1_en_test_session.py::test_cannot_resume_ended_session": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_session.py::test_clear_session": "c3fb7fced363b08b233802db7145a6a69045518265c02c7cd46342d255c7622a", +"T1_en_test_session.py::test_end_session": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_session.py::test_end_session_only_current": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_session.py::test_session_recycling": "d27ed7ff7933fe20c1c40b1d2774f855672b3b5c65e5f11a23f27f6c645820ae", +"T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "e265673e79f60c7d1c5a77099be98f532c1c51bd46f5f80a9739d6a7bf946319", +"T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "9c1cc49e9620db8df760a007d1407885daa649312299df64fa6400101070136b", +"T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "9bb100ab7c89def6015819922b5c4ffdb95ffd2abc7d0c8ecb5f502df68a8bad", +"T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device_not_possible_on_t1": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "a3c4b11a1e0086e2e364013391188cd19aaa5e5893372249eb7a7e3217c91e96", +"T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "65a57f452581e8dd73d0f044a11abd81610cff1ea4e6f93883b1915f7a534b35", +"T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "7aa71ff8b3d16c8288c9ac826f95f45a0e09d395355e94c96b98b32137dedd62", +"T1_en_zcash-test_sign_tx.py::test_one_two": "a3c646f091503c78d7cef7c3874813e6c6179e85b59731d647a300c9e9c31e32", +"T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", +"T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "58bcc1ea146fd1bde9549c52c824c927abeabd8e80a6e25f1a56c7cbdc081882", +"T1_en_zcash-test_sign_tx.py::test_spend_multisig": "65533f5073ebf67927f3e14810708650236236cc50aa4078494fc02c5f91ac53", +"T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "436b7a43b7fc7fe0615340c6aa73d46a18e5a0d804469702941cea9c8fd9e390", +"T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "6d29a8023d4b8b9fa4d170afbbaeb7cf1895906ab74f75c9fcb12a601154b9d5", +"T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" } }, "TR": { "click_tests": { -"TR_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "db31938e0b4969204c2411069f00ed8a314b31e0dec251cce371adb0bec1c524", -"TR_test_autolock.py::test_autolock_does_not_interrupt_signing": "21d405bf393cdb8e25817a8c9b893bd5a4d5c05fa9e1d33e98e6ba512c8c4496", -"TR_test_autolock.py::test_autolock_interrupts_passphrase": "82f963d13f42b754f8749c2587466e8a1ca3843581ccda63fb846e1311ce6f7f", -"TR_test_autolock.py::test_autolock_interrupts_signing": "0ede63ae0d813a3d27fef17f3385c96111415932e3e525c7f421e7054e2c9887", -"TR_test_autolock.py::test_autolock_passphrase_keyboard": "44274f7e1e714fde732df8c48ffb3617d1b4ecf50d32256ce6f167f40fbd5e6d", -"TR_test_autolock.py::test_dryrun_enter_word_slowly": "69c6f17ea55eb9428ea6daf64409f23702952b0dccd5f0640c10b1f4c62287eb", -"TR_test_autolock.py::test_dryrun_locks_at_number_of_words": "df7a17ab9cd2c617ce22a615e1da9bedee41f978459cbe103f2eecb8dfe8db12", -"TR_test_autolock.py::test_dryrun_locks_at_word_entry": "0c92384d1b542783bc67a3cf88da3cfa66d8dd4d4476687e3663e6bd4bb1c4e1", -"TR_test_lock.py::test_hold_to_lock": "83e2d055215b03150069d9fcb3aee6dc3f78a0d2bc43d8133425bf6b000c191d", -"TR_test_passphrase_tr.py::test_cancel": "4a79e82b3ddf23c087e70767f2c4d4720f980370e22be209189d4ed42a453ee8", -"TR_test_passphrase_tr.py::test_passphrase_delete": "cb44631cc9c092cb7b2e0203fe71cf583a8623f1ea621efc628d28241104671d", -"TR_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "8d6c2c13039c420ba1430f990053a30bb0358a4a9d17b46a6a250d577f7643f8", -"TR_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "e0aa81693c8b40ee12a8ff41f66cad491fe8e5a220bb0a915c18ed7b2e8d323c", -"TR_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "9d1762d0db3b5699507b068ec81cb1ed3e265c6ce7a7a2e6d7a878f0471f32b8", -"TR_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "7ac52d0d0de8d7cd35200ec9a2b2738e8e4e9ba87435caefbdbff3776749b83a", -"TR_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d91f1a82f8e8c10e3c4ecf41c1c66663dfcccfb4054122bcad36be0fa93af6c1", -"TR_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "502828e28edd8147781b1714cae83eea6f71a9820c30446d7e38eeb3a43617c9", -"TR_test_passphrase_tr.py::test_passphrase_loop_all_characters": "e06ec53edbd9c3d8927e141e8a8e2af521641d0064a20b7953ad15f1a1d48f52", -"TR_test_pin.py::test_pin_change": "4da53241f5751bcccbdaabeb8eaad3b201d7d8ab14508158432660862e2ac169", -"TR_test_pin.py::test_pin_delete_hold": "722b733995ae1e03496719bfabc951d832287bd041ead26eb05e536d39280122", -"TR_test_pin.py::test_pin_empty_cannot_send": "328da418bd62032cc1bc523712edae6a259982d25d5ca6609ea52c79283549b3", -"TR_test_pin.py::test_pin_incorrect": "0d3f92b0b39bab0aafb92deaf2a229fed6f3db2703e36c449440bfd2af2f5a8a", -"TR_test_pin.py::test_pin_long": "a9861a92fed71ddd42bb56a39f7c80100158e23145f1f433c06d72ccb14efaa7", -"TR_test_pin.py::test_pin_long_delete": "3833d4e71cc1c388bacb1ef4c9b7c8e47e897887b21603dec53ed4d02e381e4c", -"TR_test_pin.py::test_pin_longer_than_max": "fbd7c4034dcca37f07527e8864ab426970b7192c51a4965d0fc499d0eb6bbc24", -"TR_test_pin.py::test_pin_same_as_wipe_code": "41e5505d884d87efe05cb9401351f89c7365dbece7f911d4115516c11f52bb9b", -"TR_test_pin.py::test_pin_setup": "040256a62fb20f5284bbec0ababab6d94f6fbed1b9b9a0cebe58a73ccae7ff2d", -"TR_test_pin.py::test_pin_setup_mismatch": "4cafbb73ee107509f8766d73d2389ef246d27ade3540b835cdfaf83d2cb4a416", -"TR_test_pin.py::test_pin_short": "a87619c455ec81763cbb133279f9e7fbb3b9a5a02c58e1da63640d51a4e107c3", -"TR_test_pin.py::test_wipe_code_same_as_pin": "f47457df24228743f3d7f3cc9e60c209b2c628c35d00bb1f965dda2692b4a632", -"TR_test_pin.py::test_wipe_code_setup": "4afe5ceb8f953892eea8b6b7c6997a1b5afa40b81372265a84a567b61773d89b", -"TR_test_recovery.py::test_recovery_bip39": "43a56fb1dea38503cfddf55c4a6e8d5a5188be7354bd5c2b31fde197f2af3443", -"TR_test_recovery.py::test_recovery_slip39_basic": "40df8fd6302577ff4f1d1d6d214d1ffd22791912ee4225ae86460a3fa3f3ac0f", -"TR_test_reset_bip39.py::test_reset_bip39": "5ae502b3041376c4dac8de8b315242e20c29e76cbd93acc81790b61a65bb2401", -"TR_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "53763c7177a26069cc164a84d93c6b6b53bfe3f58a770913b4b62b537fd9301d", -"TR_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ae94835bc49ebce6fdaa05671734701f6d2911cdee54e99e083edddbb070ffa7", -"TR_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "74d81c033b35aab5d88af1562be47b3c25e8fc14114bf4e5f817713943f563a2", -"TR_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "ffb556aaa947bb5a91a613f46d7a4275d9a6b94b5aa2f50296a86391f61b2f74", -"TR_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", -"TR_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", -"TR_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3" +"TR_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "16775f30893119e2931463e23009a0250b4b27a638277b131ef7bba471fd8f8a", +"TR_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "aa247f1364b4af051f9fe9225f3f3041bb760dbb35cbdcc16948809883f64bc1", +"TR_cs_test_autolock.py::test_autolock_interrupts_passphrase": "d61811350f83622ae1cac73101f4ef7c1f367dd8a385bce94ce4758aa33e773e", +"TR_cs_test_autolock.py::test_autolock_interrupts_signing": "7944ac898a8cd378a7b5a37cc776d1d9f70634ccb6489de6af2fac1b8ef40d91", +"TR_cs_test_autolock.py::test_autolock_passphrase_keyboard": "98130580457d18ccfe87c3681226628bfdc2640c944554ea06cd34a82f0b8442", +"TR_cs_test_autolock.py::test_dryrun_enter_word_slowly": "ba687402876d2a5209f8b7168af00266bbb36b7b7e22a054d9059938c988fd3f", +"TR_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "d6ab70121643e61553ade145a73011a1964ce4ab730b27331ff032c287d1ff2a", +"TR_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "220f8a1987279d2742c16a899087f65ddaf898275746341ee22155fff8b363c7", +"TR_cs_test_lock.py::test_hold_to_lock": "866eedb1f19d12b7f84706e47008e2ac56b33dca86792d69bb2f851c1ea08b43", +"TR_cs_test_passphrase_tr.py::test_cancel": "060d834bb26b94d8f09315efbbc9e02c43543b4248c8950c4207c975b64b0f19", +"TR_cs_test_passphrase_tr.py::test_passphrase_delete": "be40472402125430188e60295a895302db46e26ca43e90632d664de573fc0fd2", +"TR_cs_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "175dcd8d198220be31fc6fd3edb7d9f04953a0587cd68e0cce8fc3907876c0c9", +"TR_cs_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "fd2e3a0a658b652e3594ec987c176c9bfbdacf4c373549b59f64dcb367f6c95d", +"TR_cs_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "97dd7ac6f4ba4a52a4bec95e1f6d61123309096ba0f535e2b87609dae85722f9", +"TR_cs_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "860f9af92c697a7d1d50e43f251eff951510a8832fdcd025a9b761e48fadd3c2", +"TR_cs_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "083d0807779fc67e208563fae5009bce968b09512ca89b5feedf8529d145f4b9", +"TR_cs_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "460efd4bafc7b378c7e37aaa632deb759182a3da3bf9506cbeadf61a942385bd", +"TR_cs_test_passphrase_tr.py::test_passphrase_loop_all_characters": "218cd0b527346469a60b22ebb94d0533167c3c01418ec4315a6d0ca31f36f8e4", +"TR_cs_test_pin.py::test_pin_change": "0542e29ed7eb32ddd68a381c223d9caa061fbbc524c138d2606186a7df40ddfa", +"TR_cs_test_pin.py::test_pin_delete_hold": "beb068899fb2ae9a459af5d26d4a486dc910192d3750a11ff6cfd0ca9cdc55af", +"TR_cs_test_pin.py::test_pin_empty_cannot_send": "9b5613a480bc92bc10aac9aa3a7ad57315710493dd767ef7f15ad40244dd4d0a", +"TR_cs_test_pin.py::test_pin_incorrect": "a6915cbafbadcd7343b69f47c73939d8eafd65f7b6f3404f99cfd05a3f43d8bc", +"TR_cs_test_pin.py::test_pin_long": "5b1c9b6bf96dfd5e2959aed2ebfdb2d67bc273dbd5ab1632f7c6415b827d50a7", +"TR_cs_test_pin.py::test_pin_long_delete": "79875f8cecfa6220fed141bc2c58d841ed3cff831a76b0ef40297feabb447641", +"TR_cs_test_pin.py::test_pin_longer_than_max": "5c5f0dfdd0eae48bfa25aa802bc11671fce1278add27d87b8b43bea75211ec71", +"TR_cs_test_pin.py::test_pin_same_as_wipe_code": "f88837ac0d8fa91cc4d8c8bbd279c1e9ae8c0bb8c8a4c101c0b9c20d292bc184", +"TR_cs_test_pin.py::test_pin_setup": "cc6920332700177760a0e296353c4635a0c5e18f93b5cd184a1bb1939b1166b8", +"TR_cs_test_pin.py::test_pin_setup_mismatch": "8a208b633bf41a080170126ff222b661c9f7a4716557ae1e4d9a4b2552050c98", +"TR_cs_test_pin.py::test_pin_short": "20fbc4dc8067a011d7aa4a602e83cbf7dde1627b5c33350fd963ecda459dab36", +"TR_cs_test_pin.py::test_wipe_code_same_as_pin": "137980abf51cd4be113fe4547bdba2d9ca37ed87ddc01fc3a9df276930972482", +"TR_cs_test_pin.py::test_wipe_code_setup": "ccf72b989f9ffed19357bdd5b2e93da42aad335f333488bfdeb32881d00bec26", +"TR_cs_test_recovery.py::test_recovery_bip39": "d33ecfb915ae70ea4dc259ee88d91c640ef10b1b7c832cdaa10bbaf0e01500f8", +"TR_cs_test_recovery.py::test_recovery_slip39_basic": "5b7998be5ea1d5cf6487efa8107a100e324441af4feacbca726727531f478762", +"TR_cs_test_reset_bip39.py::test_reset_bip39": "307ea0013d7b7b0e3a5cbd14b180d3fa0c722a0a5d1b45b646dce7648a8d86cb", +"TR_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c3903bc80ee3eae1b1ef606520b89dd4608b17079fcc1e88e20334204071e1d1", +"TR_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d3d9135bb8f44a126a8f9e5db4a6300a5838160334dc20f58fa990ad9c235ac0", +"TR_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "74dd37c7e2652b304c81ba23322860c03e8677ae09ff7bc1ca500420178c810a", +"TR_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b15e94d9720fa5fe8fb50239fe5639033f1b3ad8b628abd0f2a656b6a7310d21", +"TR_cs_test_tutorial.py::test_tutorial_again_and_skip": "292dacb8166a2ea4c0a7c0428fc6818f3f2354d6d7607ff0760dad416186c903", +"TR_cs_test_tutorial.py::test_tutorial_finish": "8827cf41c37b61e076dfcf5aefadcc2d5c156762826578e379f079ab8e1e27ae", +"TR_cs_test_tutorial.py::test_tutorial_skip": "6252f47deb0912c8e5b2be1e63a9fabd8e60c3d1c23fe641e75c08a82f8ded26", +"TR_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a4d0d5a815148c951327f3172bb571ab5a593571cab7f965de7b3fc280e709b4", +"TR_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "5b98305ad9b095dc66a6df609fe87b5997a08a61462e5aaa49faaaab659a8aaf", +"TR_de_test_autolock.py::test_autolock_interrupts_passphrase": "a8fa4ce277cecf4f3c034d6ba1d285fb4f467708aad0612523bc8763002f71fd", +"TR_de_test_autolock.py::test_autolock_interrupts_signing": "315874c44442da1ddaca7aaf8d5a1dd51314f56dcfeed22dd093d34ffd604fc8", +"TR_de_test_autolock.py::test_autolock_passphrase_keyboard": "8c4ba07e7eb2c306c668e500469e2a60ab34e902172d29df6b4e178962d8274b", +"TR_de_test_autolock.py::test_dryrun_enter_word_slowly": "ab6045c063378db0dded72a6c7e872fe807b4b6c10fc64a6756ed02c718710f2", +"TR_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "a5e0f6780887d13e5fd1601cd69358551c4943c46375690a67b45a51d81dc5bb", +"TR_de_test_autolock.py::test_dryrun_locks_at_word_entry": "25323a579e511a7b56777457ca1fd3c7442eef30c06cf30e54cc774e9b81bb2f", +"TR_de_test_lock.py::test_hold_to_lock": "201a98291ba1c646ffe47e7cd69e63ad0c8a48ac19e5ca7101957501c33d37f1", +"TR_de_test_passphrase_tr.py::test_cancel": "e9c0cf92ed7e35e79aa65bd829790e2a2d2a2a41b58a86265b2816caac809bce", +"TR_de_test_passphrase_tr.py::test_passphrase_delete": "3cf5f3daad2e0a11b0771c0991bd4d63d5dcc927e92d18c7afbf4e9386a93dfb", +"TR_de_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "86f754653aec1d8ead86e21753ed1e5d5bbbc8de8180fcd1ee85ac7b1444382e", +"TR_de_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "986ae35e4002797f789c52d81f86ee7fa83a4ef116fbc851d784e29fcb0721b3", +"TR_de_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "9cc7892332c3e84031ff2a7d56fa0aa88cfbcce7087d521104406abfc0b8400a", +"TR_de_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "c06cf64baae80596000ff2cfb330e4e1144640570280f1946c4e6b42a8266bbb", +"TR_de_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "1cb3fc9206690977d9f17cdc1e51968a641a00ef8741a197f77f4e599e4ee127", +"TR_de_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "dae64c90eb9fc07c88522d6b6e098802837d959b3e9a4058cddf2ca9516489d7", +"TR_de_test_passphrase_tr.py::test_passphrase_loop_all_characters": "63501a2d49267ce5b9f104a3a3b9e4aa2f9664fa405163c0815ad85b6b0aa86d", +"TR_de_test_pin.py::test_pin_change": "13a0a49d53ea27a7a3373f546d344228fc8ff7468775480845b2287e0b0ce41c", +"TR_de_test_pin.py::test_pin_delete_hold": "8caa2c2523ddf95d9b93794e8194e34cda2f11bff362768a492238533e221f77", +"TR_de_test_pin.py::test_pin_empty_cannot_send": "1c4f2b630788249f5f6791b75708b85bc75688e0d50c51276e330a015e751fde", +"TR_de_test_pin.py::test_pin_incorrect": "9684d45b5794ac5a67ad726cd6141304779dce69cfe24847495d19e349d25614", +"TR_de_test_pin.py::test_pin_long": "49babaa9c9e55195ac166ee03db15d54591b677569a36d458053e7e45e45f518", +"TR_de_test_pin.py::test_pin_long_delete": "e39af39cfce0ec94ba259563c091e1086903077d2e66ec198f79c02ed6b40fe5", +"TR_de_test_pin.py::test_pin_longer_than_max": "cf8f4d0b3da9755160471b236e07dcead46c48511b826989882ee6d62171d2c4", +"TR_de_test_pin.py::test_pin_same_as_wipe_code": "0194ee34d9bf45b23933836b092f90eb34a73978c51353e92ef802cd01f512fa", +"TR_de_test_pin.py::test_pin_setup": "98caa6474d1e435e385daccb59d691cae4bf809dc3f3c0cfcc1c757096e97c69", +"TR_de_test_pin.py::test_pin_setup_mismatch": "473c471c54e1246ae0e230967f90f051f22ad29234f5f4db3736f9df0201d980", +"TR_de_test_pin.py::test_pin_short": "cf3ddb20db4e52065b46723402b449d0bef2e0c23380d3cf8664ed3eddad0dc7", +"TR_de_test_pin.py::test_wipe_code_same_as_pin": "ed7dc99e897e664c083cfc6456fae5bbfa1ee8888c89d9595e1c73ed81ad038a", +"TR_de_test_pin.py::test_wipe_code_setup": "08ea3acecfe59d8f10dc164ec27077752414497d9a9a036a350c37741ef34cfc", +"TR_de_test_recovery.py::test_recovery_bip39": "d36ddc2f1a692aeea75bd97df44a7d3ee5f771c0d18f71314c62d1a21dcabcec", +"TR_de_test_recovery.py::test_recovery_slip39_basic": "b4ab9123a4c3612eb3e26ebc726b2863310e2384e3f02a3e9eb4d9e49ec3787b", +"TR_de_test_reset_bip39.py::test_reset_bip39": "a036ae983103616966b27be6b1139cdbbd0764e9bc226c63029802436c0ae304", +"TR_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "78b6332589024862ac10ed17aaa21b0f474959909915c67363e8be559064c911", +"TR_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ce6c83742a832f4d7bee13a081ef91a87cf9079ca3ab9cf245bf104072028fe0", +"TR_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "42bbf1a6404958fe030b1de6b58f96a10c3601bd0e82e89e1316e648ca44e4f0", +"TR_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e195e563700c620670f880560e0525a4af3e19bea0d6446571da5003b51d0f7a", +"TR_de_test_tutorial.py::test_tutorial_again_and_skip": "9db6f10bc0b65b5066babbc08b5da982f8196cb777219b8899e8e8e38b3d157d", +"TR_de_test_tutorial.py::test_tutorial_finish": "807b7cf68cb2fcfb98a5e90858af0e7a7eb7575975f792859069ea4e3d308076", +"TR_de_test_tutorial.py::test_tutorial_skip": "4d1b334a969fe8e5fca055be0d4c0791dbba6ed6c87d86654bff82ca950a7c0d", +"TR_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "db31938e0b4969204c2411069f00ed8a314b31e0dec251cce371adb0bec1c524", +"TR_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "21d405bf393cdb8e25817a8c9b893bd5a4d5c05fa9e1d33e98e6ba512c8c4496", +"TR_en_test_autolock.py::test_autolock_interrupts_passphrase": "82f963d13f42b754f8749c2587466e8a1ca3843581ccda63fb846e1311ce6f7f", +"TR_en_test_autolock.py::test_autolock_interrupts_signing": "0ede63ae0d813a3d27fef17f3385c96111415932e3e525c7f421e7054e2c9887", +"TR_en_test_autolock.py::test_autolock_passphrase_keyboard": "44274f7e1e714fde732df8c48ffb3617d1b4ecf50d32256ce6f167f40fbd5e6d", +"TR_en_test_autolock.py::test_dryrun_enter_word_slowly": "69c6f17ea55eb9428ea6daf64409f23702952b0dccd5f0640c10b1f4c62287eb", +"TR_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "df7a17ab9cd2c617ce22a615e1da9bedee41f978459cbe103f2eecb8dfe8db12", +"TR_en_test_autolock.py::test_dryrun_locks_at_word_entry": "0c92384d1b542783bc67a3cf88da3cfa66d8dd4d4476687e3663e6bd4bb1c4e1", +"TR_en_test_lock.py::test_hold_to_lock": "83e2d055215b03150069d9fcb3aee6dc3f78a0d2bc43d8133425bf6b000c191d", +"TR_en_test_passphrase_tr.py::test_cancel": "4a79e82b3ddf23c087e70767f2c4d4720f980370e22be209189d4ed42a453ee8", +"TR_en_test_passphrase_tr.py::test_passphrase_delete": "cb44631cc9c092cb7b2e0203fe71cf583a8623f1ea621efc628d28241104671d", +"TR_en_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "8d6c2c13039c420ba1430f990053a30bb0358a4a9d17b46a6a250d577f7643f8", +"TR_en_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "e0aa81693c8b40ee12a8ff41f66cad491fe8e5a220bb0a915c18ed7b2e8d323c", +"TR_en_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "9d1762d0db3b5699507b068ec81cb1ed3e265c6ce7a7a2e6d7a878f0471f32b8", +"TR_en_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "7ac52d0d0de8d7cd35200ec9a2b2738e8e4e9ba87435caefbdbff3776749b83a", +"TR_en_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d91f1a82f8e8c10e3c4ecf41c1c66663dfcccfb4054122bcad36be0fa93af6c1", +"TR_en_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "502828e28edd8147781b1714cae83eea6f71a9820c30446d7e38eeb3a43617c9", +"TR_en_test_passphrase_tr.py::test_passphrase_loop_all_characters": "e06ec53edbd9c3d8927e141e8a8e2af521641d0064a20b7953ad15f1a1d48f52", +"TR_en_test_pin.py::test_pin_change": "4da53241f5751bcccbdaabeb8eaad3b201d7d8ab14508158432660862e2ac169", +"TR_en_test_pin.py::test_pin_delete_hold": "722b733995ae1e03496719bfabc951d832287bd041ead26eb05e536d39280122", +"TR_en_test_pin.py::test_pin_empty_cannot_send": "328da418bd62032cc1bc523712edae6a259982d25d5ca6609ea52c79283549b3", +"TR_en_test_pin.py::test_pin_incorrect": "0d3f92b0b39bab0aafb92deaf2a229fed6f3db2703e36c449440bfd2af2f5a8a", +"TR_en_test_pin.py::test_pin_long": "a9861a92fed71ddd42bb56a39f7c80100158e23145f1f433c06d72ccb14efaa7", +"TR_en_test_pin.py::test_pin_long_delete": "3833d4e71cc1c388bacb1ef4c9b7c8e47e897887b21603dec53ed4d02e381e4c", +"TR_en_test_pin.py::test_pin_longer_than_max": "fbd7c4034dcca37f07527e8864ab426970b7192c51a4965d0fc499d0eb6bbc24", +"TR_en_test_pin.py::test_pin_same_as_wipe_code": "41e5505d884d87efe05cb9401351f89c7365dbece7f911d4115516c11f52bb9b", +"TR_en_test_pin.py::test_pin_setup": "040256a62fb20f5284bbec0ababab6d94f6fbed1b9b9a0cebe58a73ccae7ff2d", +"TR_en_test_pin.py::test_pin_setup_mismatch": "4cafbb73ee107509f8766d73d2389ef246d27ade3540b835cdfaf83d2cb4a416", +"TR_en_test_pin.py::test_pin_short": "a87619c455ec81763cbb133279f9e7fbb3b9a5a02c58e1da63640d51a4e107c3", +"TR_en_test_pin.py::test_wipe_code_same_as_pin": "329962b3b949dc1429d361e4ae6c5224b4a75c981ae833fd3bf1618df44fbd2a", +"TR_en_test_pin.py::test_wipe_code_setup": "4afe5ceb8f953892eea8b6b7c6997a1b5afa40b81372265a84a567b61773d89b", +"TR_en_test_recovery.py::test_recovery_bip39": "43a56fb1dea38503cfddf55c4a6e8d5a5188be7354bd5c2b31fde197f2af3443", +"TR_en_test_recovery.py::test_recovery_slip39_basic": "40df8fd6302577ff4f1d1d6d214d1ffd22791912ee4225ae86460a3fa3f3ac0f", +"TR_en_test_reset_bip39.py::test_reset_bip39": "5ae502b3041376c4dac8de8b315242e20c29e76cbd93acc81790b61a65bb2401", +"TR_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "53763c7177a26069cc164a84d93c6b6b53bfe3f58a770913b4b62b537fd9301d", +"TR_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ae94835bc49ebce6fdaa05671734701f6d2911cdee54e99e083edddbb070ffa7", +"TR_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "74d81c033b35aab5d88af1562be47b3c25e8fc14114bf4e5f817713943f563a2", +"TR_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "ffb556aaa947bb5a91a613f46d7a4275d9a6b94b5aa2f50296a86391f61b2f74", +"TR_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", +"TR_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", +"TR_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", +"TR_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "80047602c033d5a67431e28aa93a1617c5ee359268803a3baa58566f42e5d6e0", +"TR_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "1247c3bbc55926e23bb483baadd58dd95dc044c46ddd72041249b39758c54bfb", +"TR_es_test_autolock.py::test_autolock_interrupts_passphrase": "a913cb04d15d53fbc1f84079e13295b28608554eae0c49a90dc5c1caebe66b09", +"TR_es_test_autolock.py::test_autolock_interrupts_signing": "48ab5e4fab4081df680ad2fbc8a25e27a636d01ca52dc8e4520c06a2e17fb870", +"TR_es_test_autolock.py::test_autolock_passphrase_keyboard": "da1bdc722cdd87cd1d5cfc4754b09e711358eb89eabfe2708494e3a965ff7bf0", +"TR_es_test_autolock.py::test_dryrun_enter_word_slowly": "4c604b9c97ddb96422f284f2f2e78f7649f205874d9b97e0f3495e27f875260d", +"TR_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "bcbff567eeb85344c843dd684a8c509b3f7a181998f5e138fce6fd7dc6e1fa01", +"TR_es_test_autolock.py::test_dryrun_locks_at_word_entry": "270c93145fe0829934d06f424cdad5deda5d0240532bafdd3ce59c3ec2281bba", +"TR_es_test_lock.py::test_hold_to_lock": "77259a563e99cadf67971a5e312d0ba95eb3f28e74775864ac95a29ede4644ed", +"TR_es_test_passphrase_tr.py::test_cancel": "a1c2144c5c1a8e29317f1f1f6202dbcea7abfc3414db2eb99a6405414478204f", +"TR_es_test_passphrase_tr.py::test_passphrase_delete": "cb88ae7bcecb1140a5bf8be312cd9b1084c311c1ec4f6c608b7272dd5c44dff2", +"TR_es_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "13208a1f5642b198fa20a7480d6614cbd283f24bb8346654135f06b3d1614f64", +"TR_es_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "fa0891c479508bfb2c7a52a300745bb4aa322304f9fe8658d5de059d785ead8a", +"TR_es_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "6c4ea17149f31401751e33f0745c92788b02a66f57e9070c6e76af8842cd328e", +"TR_es_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "397fd90a34ffb2d6eb1a0eb10871dc17342933d36123392bac5cf767f65ab183", +"TR_es_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "926305b1960c796461a50e567dc89e5ef37eed49a251de443e2d436d1612692f", +"TR_es_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "0338598b960179c17d1f1ab4dfc3e972ea4cf36083837475cd66650797cee455", +"TR_es_test_passphrase_tr.py::test_passphrase_loop_all_characters": "862b3dcd92cf95bb08f0dce0fdfc85ef0561897550e5e3e29bf7e4d601686422", +"TR_es_test_pin.py::test_pin_change": "39d9ab38791b027253727cade6bd661dcb9b944d29a1eb38791b15174f36dbae", +"TR_es_test_pin.py::test_pin_delete_hold": "228ad51445f56e4716539f5ba2e07238b4d102a24129cc9d7f7619ed1a6d01ed", +"TR_es_test_pin.py::test_pin_empty_cannot_send": "db99b31820e8e25eebfd14713dddd32109d9ff89e2c9549a535c3b898d0e28b7", +"TR_es_test_pin.py::test_pin_incorrect": "7bf3658ea002decb6e50bc72cdae4bff914c7b460dffed9f1100e50507f8bdd8", +"TR_es_test_pin.py::test_pin_long": "443baca0f75bdbf82d9a9d0bbe88bed2d3fa4e98c458cc37ba4eb1b6b947e44f", +"TR_es_test_pin.py::test_pin_long_delete": "24fc2260fbc42676c0023908e9e562ac9eab15ad0bc627b169d318779c986b8a", +"TR_es_test_pin.py::test_pin_longer_than_max": "4b81645a7569afe15480308e389b243f9fd252653211259678b904fbdd0e466c", +"TR_es_test_pin.py::test_pin_same_as_wipe_code": "1b445a7465291d6c65ccd304336f507be8bd35da82830e79fd9e965948a61e1d", +"TR_es_test_pin.py::test_pin_setup": "ac23c124828e409bb27ee3d3113129bab3498f1fd6ae57f898291db512d3e61b", +"TR_es_test_pin.py::test_pin_setup_mismatch": "847c46220cdb80f890026f0d800bfd3b243893db70b3315fe014f9a41dedffd0", +"TR_es_test_pin.py::test_pin_short": "65795b890925305084232401e9a2f1eaa34cb5cbf9c31611823f259b14223533", +"TR_es_test_pin.py::test_wipe_code_same_as_pin": "295a8f6f235832fdea4a7382e719db6f704d8ce4cf83802e25336b54c47e8923", +"TR_es_test_pin.py::test_wipe_code_setup": "27f454b1317169dceda6a1b3c6c23384d1dc9cdefce974b0ebd0decace2c0b62", +"TR_es_test_recovery.py::test_recovery_bip39": "52ba6c0a030871e0709490ee0a3ccc624647f08e94405e34993e7e295ed18c57", +"TR_es_test_recovery.py::test_recovery_slip39_basic": "f7645dcfa6c022ba853df1d50e73d21befd8a06b7d51c8db7fdc839a1d78bed8", +"TR_es_test_reset_bip39.py::test_reset_bip39": "b38b4f7851128c71a031cd7032c0cc4911243915ee09e14177cc4ede3102aca4", +"TR_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e9e060924dd3c8cc1fc486bbd8555b646517067f602656216915f1673e380195", +"TR_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2514b84e3536ab96fcb6609c02cb57a12d28adeb0392bf6ff9bb2044e4464a99", +"TR_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "73db7754d6144c43edcc62e4d7cbab3368a41807945a0d965a0631ab93450733", +"TR_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "be896bb4deef586018854bc41442f5015027ce4cbd02eda7d7d3ad38fb2760f8", +"TR_es_test_tutorial.py::test_tutorial_again_and_skip": "4c6fb1ce2fe568a9cd1bc5bca1a6ab83da3d53996bcb7488aedf1a6795c3c821", +"TR_es_test_tutorial.py::test_tutorial_finish": "ce14841d7c48eef11d278f33369a9a23c11c38dbbcf71748f25b36962204fdbe", +"TR_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", +"TR_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "bfa7d0a7f6c3a824f1ab245aa8645f27ec0fd55775b84c7b1a2ff1d7e06584bf", +"TR_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "74b821b8f83d68993f15c2df593cdc2356ef60687b14efeec0cd4bebba5a4182", +"TR_fr_test_autolock.py::test_autolock_interrupts_passphrase": "26b1674517e9f50d20bcf2474c3d3d77e05a4abef75afd4a794e827d7ddd22c9", +"TR_fr_test_autolock.py::test_autolock_interrupts_signing": "cad08d3d57dbc0ea60f7f653b698055b2a6e01aad31ad02f254a198bf2e43ce2", +"TR_fr_test_autolock.py::test_autolock_passphrase_keyboard": "628661ae52017df003c5a1e2c2a5f9bf52455992ea927b829fed082f2c12af2d", +"TR_fr_test_autolock.py::test_dryrun_enter_word_slowly": "a95e72587ff586a7408e017c93209738056e93df2e5ff089e6f62e2e65d333fb", +"TR_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "c8dcdf26102612850eac7d44dd701a4891d653aed46722b439c3322b2cf449f0", +"TR_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "1447f23e06d857b046f459732c94b150079450a2915e8d9d9847044327bf601d", +"TR_fr_test_lock.py::test_hold_to_lock": "bb4354c5829cf75233ff8a33b807ae05ca8dd927ac3f4f30dd21005767ea5ab6", +"TR_fr_test_passphrase_tr.py::test_cancel": "eab7f577f317efe2e4bb12ea3cc59e1f09832e2cbb4cfe9766a283e2562f4b37", +"TR_fr_test_passphrase_tr.py::test_passphrase_delete": "8078a288c95d15a6db01a6420c9bb1538f1a95d76324e374f14a238ba343d20d", +"TR_fr_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "7fcbcf801717b56152a9c831e633283b1859779098081d767f0a89781f9939e9", +"TR_fr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "cb330988293c6d1d4887429791860972afe4de8265a3c459713f015ba36252b0", +"TR_fr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "ac837b4131c24168bcf8bb2e225743f52ee2e46185717bdcad8a19daf7399451", +"TR_fr_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "8cde250cff48cc3f52dd906158b6882810690d3d255a77c12f7b60bb59fcaa7a", +"TR_fr_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "03e4370c4638e013c2b2ba1ef5bad8bbe94cf29723bc6ac8d7c7a04cb1cf6b21", +"TR_fr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "06c30c03585b2e7cc91bffd359202be54356d37310189bad440ab9729ad83b7d", +"TR_fr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "45674364382af8ea76e83a2c9537e3fe5ee5cae121dcd7131775e213b77b0308", +"TR_fr_test_pin.py::test_pin_change": "a4d76bf0cae5386b45b5678fc6bc44676f4252c98c3b528dbcd5026009c28ed7", +"TR_fr_test_pin.py::test_pin_delete_hold": "e8896c217e04cd3ad76ed386538602d3e6c4cc00049c3c100bd3ec1bf3dd7a9f", +"TR_fr_test_pin.py::test_pin_empty_cannot_send": "6d0982ed6e571e6fad706852f67232759ee4c89c2f253ef64798194dec9d4eb2", +"TR_fr_test_pin.py::test_pin_incorrect": "a29b077472186cb8a07e816f4306c2b59280ccde2cbe392e007b3c2e5b3d3432", +"TR_fr_test_pin.py::test_pin_long": "3febc961fc85a7b3fc9d8efd8dea7ab673ca81b6ba0e69441668775cc0df5f0d", +"TR_fr_test_pin.py::test_pin_long_delete": "80c94e3c9c2c4e049bfdb0beb2e7768e6606deabd35a61f8a73f349cadd8588e", +"TR_fr_test_pin.py::test_pin_longer_than_max": "816f0ad41e448b10377d0fc64a71f7db39fc94b55ea5538285d98c87119e75db", +"TR_fr_test_pin.py::test_pin_same_as_wipe_code": "b2454fb5c0f2bba7f1fae2f17c1b88917e9e2b4ebd9542b5ae9af74033dae865", +"TR_fr_test_pin.py::test_pin_setup": "813d149a93ebe9f94b8b9dfb4ea54830f10b9e0f97ae72fb7b98b4192a7a665a", +"TR_fr_test_pin.py::test_pin_setup_mismatch": "8faee49dcbcfbc3403e4a2ce3372056694812c4db890faf2f14a1c40db9e59b4", +"TR_fr_test_pin.py::test_pin_short": "a576c0c0a91705efce7c787c9e48d19e0a5a8d59c911dceabd2c2c58680398e9", +"TR_fr_test_pin.py::test_wipe_code_same_as_pin": "6207b5d8875619ee5bc8dbc14a32d05b564a23c9a9b1017faa5509768f376c29", +"TR_fr_test_pin.py::test_wipe_code_setup": "4088153292f88a7f0b0cfacfc76095686286636fb9c9350100dfb9f4ca04c87f", +"TR_fr_test_recovery.py::test_recovery_bip39": "f5cbb31b5b119f076d82722b573d307adf9a0afca11665a6892bd53e41c3e005", +"TR_fr_test_recovery.py::test_recovery_slip39_basic": "587bda7250ba5c8d0a71bf45fc08ea0a8052f9a1265be640951522cd1d3872d6", +"TR_fr_test_reset_bip39.py::test_reset_bip39": "81c3370eedac6639b45a146f80321a00b757bac994a5f790433bfdad713f93fa", +"TR_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "12da185141c5e2e09549849d5e9cf79b3461e5569fa2cddec48abcf73bf20bb5", +"TR_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "bb593b0bfdd71599872e5d86ecf4e433387583a779a073afa62a7b772ba63fcb", +"TR_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4ba08f3b3c73f49b96652ab0abe136f25636aba606f5e51c1037e9c030bb3675", +"TR_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b51c04069e4a12295ec54a74c8a800a72b25a0b2cf2aba4b94fc44b86081040f", +"TR_fr_test_tutorial.py::test_tutorial_again_and_skip": "065eea4a9a07896ea31fa6c84b5e26201347fc7bfa7aac2b1ff26c926fd2d483", +"TR_fr_test_tutorial.py::test_tutorial_finish": "638d0503910a49b5f51bb7df15c52315a8e2b1b6c918d0febfb820fa19f5c342", +"TR_fr_test_tutorial.py::test_tutorial_skip": "2f9eaaea3e1e5a0bd6b711abede559659eb1e4e8ae44aad61053eb64c53447f6" }, "device_tests": { -"TR_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "e76ef483e6b929ff74ab0425708a86264ba8d6b58f3e6f669e3c8d794d02b580", -"TR_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "56868c4176799e51ced92154e6d1525565b68b062d91ef52503def0c6c8fba06", -"TR_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "3aab3fa9eb585ad46b386a84a64c090bc9b2f50009a6f183bdda44372991581a", -"TR_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "4cdc17355b3ff7669f89aaab116083a82bb6842ddaeb78f857992d13ec62bc0d", -"TR_binance-test_get_public_key.py::test_binance_get_public_key": "9bf1d886be14c98ee77e174a7398e7fe635ccf17e4e9a37256084c681e704682", -"TR_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "658b00355f2590a472ed9f6b2be40b059a865219a628afe79fca8c70991cabbd", -"TR_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "3c337daf71ecfc210bb9833e35a8d8aaf03750d89c7d81f4242ea58f1a726341", -"TR_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "df56a6c7396a9f9f41c58f9c4d8abe49d7c8c85abaf0ae546c4086669a9f77c4", -"TR_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "658b00355f2590a472ed9f6b2be40b059a865219a628afe79fca8c70991cabbd", -"TR_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "3c337daf71ecfc210bb9833e35a8d8aaf03750d89c7d81f4242ea58f1a726341", -"TR_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "df56a6c7396a9f9f41c58f9c4d8abe49d7c8c85abaf0ae546c4086669a9f77c4", -"TR_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "96f583f815e053d2ed5763d7841b2572c112476fb9d1131a1516e2e8d3f8ec20", -"TR_bitcoin-test_authorize_coinjoin.py::test_get_address": "a96bebc82d5aff9c6a8583ddb354e6427689a3be4fddf082c3cd0e8722e54d46", -"TR_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "4c2bba305bab30de2fcff0cec5ab1192f2e4d826d86f91f7172dfa624f5f3139", -"TR_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5f70b535406a6254113ed2a5f780ba98b8205abf6425eb7038d22395953aa560", -"TR_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "bf962269c96493db17d34978f049d3dba44ca7a311fbf53822046f7f1e3ec4df", -"TR_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "bf962269c96493db17d34978f049d3dba44ca7a311fbf53822046f7f1e3ec4df", -"TR_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4f275de439c812363140d3839ebddd9243e2bb34d80d02a487361148b2bbab71", -"TR_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "4cf48d6bb48a9efbff9e2949d657fde4dea7ae9e92f47cafdfcd11d7765d76b8", -"TR_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "db453154c6d8318befea7230eb2a9639fece5bdfd83c62fbb7a1e9195b77ac1b", -"TR_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "9321620fe3fa3eaf6c83d313cc3c40b4b59b454ad24d6954440d3bb9285b9b5c", -"TR_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "9321620fe3fa3eaf6c83d313cc3c40b4b59b454ad24d6954440d3bb9285b9b5c", -"TR_bitcoin-test_bcash.py::test_attack_change_input": "3e07e565d7626007cfd2a3be476ffd6efaabc6b835bee91f0decb62b838a9b39", -"TR_bitcoin-test_bcash.py::test_send_bch_change": "5bfd23d4e276c67071b8e2829c9445491053309c04b58256f8d4f789766683a2", -"TR_bitcoin-test_bcash.py::test_send_bch_external_presigned": "d71ca13edae80607527a670d8ea4f34b0d119a1a96de74e01e8ddaa0973603c9", -"TR_bitcoin-test_bcash.py::test_send_bch_multisig_change": "f5a62283c4254cb10a7180a888957daf90e57bbeffff66704eee192c4469b044", -"TR_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "fa268b2481cce18a041c8f8bf773f16cbfed6ad372a89c7d7220a2de3aa9042e", -"TR_bitcoin-test_bcash.py::test_send_bch_nochange": "395635f081e0c9bdf3f6de9a1540d9211c3a1d68665d8ac13ffb8c236add0a3b", -"TR_bitcoin-test_bcash.py::test_send_bch_oldaddr": "3957efb1b584f974d8b32523eadb4c18596956b38dec2c85005e7e4f0bf85593", -"TR_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "70524243a1d093df71ce94251a1bdfe8ff82b7ee84c2b13b71c09908be89dbc4", -"TR_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", -"TR_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cb4cea77c61cafeece033128c8c050060cba7c64e4ef255dc59b235324bcf213", -"TR_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "0ffab62bd4c51d042e77c23f5569b9b9a46d9aae102f55edf20d7894dc75b17d", -"TR_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "17a198a8b24035578345b5e85ec307ec8d800a2f343d051a1820ca3121dba696", -"TR_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "bad6123462cf0f8c9d938ca92ac9841b53221e5152f27bc92959e870d4108f1e", -"TR_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "c66f3f30c1a6c809fb8c99a9773c9a9ebea29207c4383f8507db751ba59eb11f", -"TR_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "ab012153490f26746ff9a1b5388f2418bf7c9d98b127217babbeab339245d8f7", -"TR_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "695853ac56e78df434995eeb457f7d4b466f66c9af560fb103f6a4fba717e0fb", -"TR_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "c3519859e757af09f9fed46739e484845fdee3d3aa4fb84ee89e7df63d3ccf95", -"TR_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1", -"TR_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "442a787c067f35af606eb27a2a585a15272bb920af01070f408a402603572b39", -"TR_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "d53ebc2f1c866b3d5920b13d9ac909fc81d4ca943a0625801b5dc533f2fe6ef5", -"TR_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "7798b65e874be333b51ce443ccb26713bb0a17565217f09bd89eff635ddff8a6", -"TR_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "b42ab862d2d45bb9e0509fc4ba4d68405acde83fda935c5dafd44d9e48cb29d3", -"TR_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6b7c12363fc566de9d35013be5156c970e9fba33c2ed73b4a7e9b06e0974e867", -"TR_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "7714578913a2a1e573193ac78cddc20c2df6c2856ad8c50d447906bfee41e4f6", -"TR_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "67b86cfe9f4ab3b54a829e70565061d80304a3f75ea70a4fbd92c22a643737ef", -"TR_bitcoin-test_firo.py::test_spend_lelantus": "aff133d149549783adbdaa9563cb990af6cc5f8fafba3f50d82bbbd2765bb4ff", -"TR_bitcoin-test_fujicoin.py::test_send_p2tr": "6ab906b521bb73e0725c3d0f3eb5a6ecf9f582853f4cd71672f73190f15fb917", -"TR_bitcoin-test_getaddress.py::test_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_altcoin_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_bch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_bch_multisig": "7dd1e63466cd5387b8e0ebe22e47c0274e319b456951bbb16a14174e61f60aa8", -"TR_bitcoin-test_getaddress.py::test_btc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_crw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_elements": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_grs": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_invalid_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_ltc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_multisig": "ec7fbb53bfa047306d357697ae309ca90321c9464fda6bfd3a6b225be7ee1345", -"TR_bitcoin-test_getaddress.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_multisig_missing[True]": "f4a9b7935b7d870f13eceb6efa481095adfb4b5e9dd43d7cf2670415210c9319", -"TR_bitcoin-test_getaddress.py::test_public_ckd": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_tbtc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_tgrs": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress.py::test_unknown_path": "098834a3b9efbf31fee211314340eb4a8f351e8ba757ec0a3f313c49543612bb", -"TR_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit.py::test_show_segwit": "6a437ce45f2ce4d13dd98328cfc66d3b6b119bd637f01148a723408b4f17b523", -"TR_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fba5a970d47d0936174e79904c3e72ddcbbd18c6d650230643a138ee495f47a2", -"TR_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "3c4a8b78580d73d17407543fbec8e292ef2afb39b155bfe4f46eefdff69c54b9", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "809388e68dd951e39d7ceacfbbfa9370b97a5a73232a79f992462830f053c9d7", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "23d1e5bd1b244e9c3a32c09b81f5cf3f71f2577fef9df2d8388c4b1ab50f5ee7", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "4a48d7445484becd3cfabb6ecb131398a447774693c828250fc2e4fa04cea84c", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "f7f3a5a31d942c688be33b2690986345a4de39997f500bc32b37b79bc2c73d8e", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "0fae5bbb6de5c70226671451794a34519ed85c9d95c147e55f1cef837f955c40", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "bb3b0ac405d04ee024109e20ab1d6434d2374024d7c2623af0acf01bc3a5c1c7", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "208159f7a0160f31ae17d76d6b78b1a4a1ab71bb0fd5f6c2b7e72e52262d90eb", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "4d7e17c51200b3008af7c3f6973216c675f265ad0911608eb3feb9028c0e75e2", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "a24ac9679cf76594293d642f012ff8e335264ff4b15ad4540f410e23ffb91923", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "9c1d356d0e9a3b58deb0d88d6427404cb16d01ed7821cec8824cc92d3fb357b3", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "d2732d2163b87bbc2e9b729357ef7b4fa51848150d199c710dbee2a9bcac1314", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4603a37b79fb2c4c099d7af5f954f8b7f2583629a3606c0d952510c0a00a5fc9", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "194532560487437bd1d2557c802fcdc333511d4c5a7c628e9b9e95b3c84b6d8e", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "4be98705f6930b2a3c25e9bc5ea57d938a7b9f0ce8b7cf63379818e0bb38de89", -"TR_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "4835648bc84d3ac179a28d5e32d7ede1c7979172f24da352fcdaec2b7baf1a35", -"TR_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "31a69b3216cbc1e2ac24cd4e184f25302da9e8a1ad80801eb2a4f7db0419fc76", -"TR_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "abb9fa03da8b03ef8a42e78e1b0324c8ee18227851c6bd3e5a68bd8d31943c30", -"TR_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "ce472f42e18622512756287ab9d178394a8c0372c606e6e76f676b11091fd219", -"TR_bitcoin-test_getaddress_show.py::test_show_multisig_15": "9d58cf99cdb205178eea39361d140c84c006f7f55e2bf15962e8e18b6918e89a", -"TR_bitcoin-test_getaddress_show.py::test_show_multisig_3": "e1806ab68c58937a6896858ea9557becb89daa1d17e37921507ee4aa7ab12aee", -"TR_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "954ed1ca2ab1486bed797d2b22fcad953adab3916752717d220a5f9e7da484bb", -"TR_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "954ed1ca2ab1486bed797d2b22fcad953adab3916752717d220a5f9e7da484bb", -"TR_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "391a4008b7c3a93fbfd0dfff22aca8896420b45b91d745a83d7e65ba80c9288b", -"TR_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "840e6ce6ccbe78aa96ed4e9836f5e8a50f874b77961fb22e436810e99999d467", -"TR_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "aa034fd6b7224b43eeb20afa4d078e20e7c30abe70150621c6671942d1b4bb31", -"TR_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "78decb159be4d47b18dcbb3d92858d10f0122fd9a21a00516719edf2f65ceabb", -"TR_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "aaed75a3003868548ea0b0355521b5001e272091308fbb0144142898bb97dde0", -"TR_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ac3fbdd417423379e1d724194883d1f20c248e60414f0ab0bdb47989356be499", -"TR_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "362f3638e6904bb9cb28eb65a5c465ac305f1be563b2f075b44a45fa9fa8f210", -"TR_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "2c3b3644c443b1d033166eff431a33fe515eee902fc2adc1901a51f6c6b7ac90", -"TR_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "2f80534a10ac31b2b06414400f61d3af4ebf13e61376b24af38f2ebb60ae2385", -"TR_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "a6f59c6faacdce78ce447ec89cbdea2bbca4e7246f59060cd9ad6c8daa1340c8", -"TR_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "db6aa742fbd45f96f1d563995a1d89be7ea5326479091161d115d203bd87c335", -"TR_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "2a14899628c9a8b37be13c36d0f3a82bc4d6e7746a80b641708ce028dc14d195", -"TR_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "0f0c521b22014f32e8c4cd78a80d00272db4e363e67e64ca5fd6c277292449da", -"TR_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "0ac142dc76b4931d0eb1db2afcf7162898a3ea35f09efc03e43563a087cb061c", -"TR_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "495e3c575f858c7ffc761cecdc2b20dc9de2bbce32c17a69ce1c6f035e0999dd", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "14f83efdd6dd301e7b48a62d7edb938f7bef1c5f36288fd54a22a9977c58696d", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "d25e23bb006abfdbc898f28991e070472432a7b50404f7f1245b48c173582a97", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "fb38a10813c7585396485c9dc1501e1d6905106eea6e437a8211b5bf6cec3299", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "70b491ae0a54462413384ea727aaf1bbd7ae72a9bb02d3712d38b4f50c91662d", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "39bfa8a2587445be5d0728d713d3a74bc473e75c93e61e2b19ce5012fab86eff", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "a0e3114e5b2cc30be76d4cb07ba670a5371f769804e42bb240070476252c590b", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "d7616dce87db26760c484911c1b82eece67835a504e3eefc98dcad4ba8500aff", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1", -"TR_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "b339fb7515ce902e6f9b0371363b751207db9b93c3eb7fbb4696c1451b211975", -"TR_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey.py::test_slip25_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_grs.py::test_legacy": "8851aab5526e4f26857d9f5c38253c3049dafc709c90663239fe035ad623caca", -"TR_bitcoin-test_grs.py::test_legacy_change": "c24250da19b0bd73d13211b264f7efd11c4189816257964a38abc92bfee9adfa", -"TR_bitcoin-test_grs.py::test_send_p2tr": "0c91f2782119205af71bf270f3867080ed5656eb7d60805c06106ebb1dd5e4c2", -"TR_bitcoin-test_grs.py::test_send_segwit_native": "8d1cdf1394656f316a87e2f490b228035de71427e38196af7fea6c1da360f9ec", -"TR_bitcoin-test_grs.py::test_send_segwit_native_change": "3516574f2630080af30474774ba4d43151b4e144e6e3af146c27d7c5dc038b89", -"TR_bitcoin-test_grs.py::test_send_segwit_p2sh": "644dcabb2d8cf624a031a2853f55af687b627d93b3fde6cc4b860f3dc3156138", -"TR_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "de03cf73f4249bd7b955e5a1d363d297f2fed470d8773d14ed46fc0f48a784fb", -"TR_bitcoin-test_komodo.py::test_one_one_fee_sapling": "76984380f30ebd7f5f04cc5cb6581887c89713d0f79ac230e8cffaba2ddbb9bc", -"TR_bitcoin-test_komodo.py::test_one_one_rewards_claim": "12a3b1ad73fce377a5c90138eb1cf767a02de8a2d55db75e0a69becc5fdf7ae2", -"TR_bitcoin-test_multisig.py::test_15_of_15": "d2362894ba0b1365f4b50c9fa5adf6242a9f71312e5a51295ecfcbda25bad273", -"TR_bitcoin-test_multisig.py::test_2_of_3[False]": "43ef2841c1847f9eb425e3ba1cdba4a8880363889347c5fa9ba70e7654d181f0", -"TR_bitcoin-test_multisig.py::test_2_of_3[True]": "23960e739861c482ed71941947f8709425d20fc6dd98cd15abb9eecd56b53676", -"TR_bitcoin-test_multisig.py::test_attack_change_input": "4a75904f94e42e74c7c7129cdb090a0bde4506c91116dc20535ef60dfe069cfc", -"TR_bitcoin-test_multisig.py::test_missing_pubkey": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_multisig_change.py::test_external_external": "08a4cb41e2b55807b6d48741cb70f738ff1ce1d3d55d693cd3fccfad33ac2988", -"TR_bitcoin-test_multisig_change.py::test_external_internal": "83a561913853d3cf70cc2088e32b086453a009dde887887762c3076c127d2f9c", -"TR_bitcoin-test_multisig_change.py::test_internal_external": "1e6eaebc9072f131bca04c9d004b1d3f5993525235594bb8830954e5c8fa33d9", -"TR_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "22e12387b3d05855dc757e3749e02604ff4cfd055c7385db73e2f968322a08e9", -"TR_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "f3ce5beacfa792f601afc89f2b0551d36e3dce4794227a8f44dd77c674c75db8", -"TR_bitcoin-test_multisig_change.py::test_multisig_external_external": "d65c1194102f2cb8d5473a4681502e0f04826c11cd2e0e2deb9bcd694b50e757", -"TR_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "2d655de9224ae23b3632c2d2d3a9f97477c8ebb5d0ff2e276678aae6bae4e9d3", -"TR_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "337fd5ab84f2240326c28a09f7663010180641a1c130c99966c8b7d76b5d8b56", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "3f96244768b52da1808a6d47e4b4f5759ec59ec07041b9a7c37ee3d277382539", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "7bb78992b4d49c39e4f7379cc417a647096d5bd46ac1273ceeaae0c1de14d805", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1cc94552fe8aca4039e349e720667c09e336ec03ee8d2c38c9ad0a4dd4aece55", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "bddccff18f8769d0e002971053e29d195a263b51f13dd865088e3fc7a932b522", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d3dafe1f2ef8007378c3dd3a63f6d818083f2d1d2fc4b44657a8ad3bc55c8c98", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "84fd5ea3f166df9cf42466f09c7a3824e3eb0edca3191f4ac43f834262c0a1d7", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "240eb325f7a0b984d31f41389ad7ebc103693b0b104189a0945fef9acf7400ae", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "32d689482d115154b9eafbc19666d57ea82af580b45565bb6c54eae149827016", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c25fd4cb97026303068c39dd3191618aba44ea4d65ceafbb99fdf730c6c91d07", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "2a6cc82571f79eded2cc9371ba4ff4afbb0b8980e363ebe30000dba672c6837e", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "a7154e9c390b26a52c2910199eef885a9ca8d50bb84a775165acf1f7927dc30a", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "193a3c841c501a0bfef881ff37b567e5b85cb0a1b082ae3a1eda1db6803f6403", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c71a37f23707a29fbc51308eac80ba64e47782582912d26df72156597546cced", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "9a55b2919e32c1550386dd2775d06775e08b65aa16235386fe18c5e03c0d1e25", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "4f178c7f53a89862d5b9b2e925b0455f9fe5ed171476ed3a5e3cc1c1bace9ea5", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ff8007bf949b2857c4b2b1f30da546ba7f8d32e0f6268b6d06ecce907277aca1", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "c64a1efe2598c4659e238ba5266817eb0dfead0a48593818682d3af625935e13", -"TR_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "9c5606816b4a10dc0b9d55cf0c4037413b8bc72937dd7fdab2611bd4a5c4d749", -"TR_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "bb4cec99112ae7ffed8cd776f127c97a945602536c94044504e9d18c1d9604f0", -"TR_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1d7c1670b324dac7f0c8c81f80aff72eef7c15c84d51a93c5e4d5d64ccb0912b", -"TR_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "c95bb7567e849d6f7f3a2727aa96e66f881a042f15e1a012816735186042a2ff", -"TR_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "7d18bc469cc81017aa6ce0609afe49344158ec01734c5cc58638d8300589763f", -"TR_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "264b37c100c13dad663f56192c196189283cd55109eec26e60255b06d15bbab3", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6efc81302232a4d9b87ff3ae245596aaf0aeb97090d7f5844a96eb403a20de84", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "07494195abc7cbc3a9c948c1f6d520ba43316282f8207d3729b602dda94003be", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "f303bf1b6a12f2c5543e57515c0654f7fcc651c9fcfbf03e9d570df27c2162f1", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "e6cf269cdab80d6cd18f93674884a99fbda1a76385f5e8e061690f73a9a5d40a", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "0cf5d19f80b1d74f2cec901a1a095700a94cb53e6f887da0c8d51ca23e5b584c", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "1f383ccf1c3df308b4e43957cf0b1d67ee7c4c719e4642245e39f17c7de1e296", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "192d26d28907315a36327ac77548bd5cf957e563c2e1bf11e7424e9b2322adde", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "af9cb6826569a182c1693d6d5ddce14039093c378ac2eea3efa6133cf65ed05e", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "450d03c22c1252649093670e082d35167adb83bd67175d49240eee74a5f0170e", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "f2b3b16cbdf88b96cec3e151c2a26dcbd3724e1d93d60220eb4a2d7e4c5ec8b1", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "e885031efd52320a7df07721f8a1c7f2004272587da75a715c3d3b303596cbfe", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "5684222d881d8562f8f80647411ad586a2dcf8a8714674c0a61b47ad24b6a437", -"TR_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "97ea07aa32f9fb33610d4cd5c00917a1bd93675e1d3a54670ce51d84ebed76f6", -"TR_bitcoin-test_op_return.py::test_nonzero_opreturn": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_op_return.py::test_opreturn": "db53dd4ad174320b7c36cf58c294487db96a6a9c1608a41acd87424c1c11e30b", -"TR_bitcoin-test_op_return.py::test_opreturn_address": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_peercoin.py::test_timestamp_included": "57bd71bfa6680712736b78aab1f3da95d1cfff2b369fb8b2d87024b43c392994", -"TR_bitcoin-test_peercoin.py::test_timestamp_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c1ded2fec294b01d6b2f1925b9cebd1c64533009ce6c3f02125be2f8c1935bee", -"TR_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "ab6dacbf0439a55b40f5082da0036ab5b4cfeea7e4a214b99d6e449a287d0455", -"TR_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "ab6dacbf0439a55b40f5082da0036ab5b4cfeea7e4a214b99d6e449a287d0455", -"TR_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4d6cd4001e91a85c9df6ab9d93068155e10085ca731f3f4eefbc282d0ff99ca2", -"TR_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "5d1caafd5dda452e382882d1853b11d1f6695e04396ca59dae988a50f2963e4e", -"TR_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "96c241b53e3cf6f8b3764e7914e6587d85e4870fc9c85436feb232b4586c5b1e", -"TR_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "22705cef573f51e33f95c928db7cf6333086bf03d5559de524a26d732e9af281", -"TR_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d2fda0e4f7b5485450e3036193f2a3f997819de8e0905077794138983f57c45e", -"TR_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "00ccc63d037a62edb3ca567c16d8a6b27737af171803c4cc8d6c4d97479b8358", -"TR_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "00ccc63d037a62edb3ca567c16d8a6b27737af171803c4cc8d6c4d97479b8358", -"TR_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ae5da170ce1af9e87783c7ac8e55395d2a7eb7d442dae7ac3798a118f94e7680", -"TR_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "067be29db90cf6f30d9b7642cb10aee02d5d200ef1a97517594f92e1a2dc4583", -"TR_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "fadda387e14553f065171c8457fe86f642d35704669256ea30d245edb2c59283", -"TR_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "fadda387e14553f065171c8457fe86f642d35704669256ea30d245edb2c59283", -"TR_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "9a004646f50ab4afa80ece3b2a1f2c3a5d0c3b3d1a8ec70ed9b4497055b99a7e", -"TR_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "c527245de51677f631ed1204d61c4add3cd28a1c78bb5a27825fb2656d65ea55", -"TR_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "e38a633a1b0fc2d8db808f02a64e521f531e88399a697e0184cbbb642680a862", -"TR_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "e38a633a1b0fc2d8db808f02a64e521f531e88399a697e0184cbbb642680a862", -"TR_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "98dac05a444553eb733f4ebb76a83d5310f35f1d57f7613909671d02cb62bbd4", -"TR_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "e1c8b0b2a0feff6256cd985cdf7abbcb68c0d76ebc1141758c5821c4bc5bde69", -"TR_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "50bc1025b2d98048506b79cbb4c9a7afb77f4c6dff869448d3ea16e44e482cb1", -"TR_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "149cdc0a68dfa52c858ba71e8d0004f8324721182831eb4c4f73005d195f770f", -"TR_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "e4ba6c1f03f69753fbdd0b3f6f48d5cb4668f9f0e46171f5cede04535093017e", -"TR_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "11b09fc1f623f522e4ece098051385438adb8483dce4e77977bc458a7c6d3db6", -"TR_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "bd588c72a241b81894f074b28b7dfaa9c20bf36b6eddb78687f8f54637912410", -"TR_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "4845ed702d5bb635a15b412d91951c2c46ea00754b4aa9fe08c50f287608d345", -"TR_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "6aaa568ba69cd2da4df0821e0b640e93669f9753531327bbda42acca23d56207", -"TR_bitcoin-test_signmessage.py::test_signmessage_path_warning": "73d55c948994957a7af2aeb2927657fe39b1f1f5db35075b246512a4cc695242", -"TR_bitcoin-test_signtx.py::test_attack_change_input_address": "b36f59ed6bae71e854da94f6ef9996038a7486f1d30832f524d250589a00f9bb", -"TR_bitcoin-test_signtx.py::test_attack_change_outputs": "fc1a9e432095c3cfc81ad5804fd2203c64c4025113ac8006c59dcefda6d1b55a", -"TR_bitcoin-test_signtx.py::test_attack_modify_change_address": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", -"TR_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", -"TR_bitcoin-test_signtx.py::test_fee_high_hardfail": "3722d7227ea060dc093c6bdcfccf896403bd492c7c452ab67c65fc1176c5c6f3", -"TR_bitcoin-test_signtx.py::test_fee_high_warning": "20b7b8943eb06b765afd6ae15d6b4f1fdd44364c3df7f831386be2b2895c768e", -"TR_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx.py::test_information": "90d01767ffb3f4640d120a76774c32886569e8cee87c9237b973342beed6957d", -"TR_bitcoin-test_signtx.py::test_information_cancel": "b9a12e03640234ea396535635cbfd59cdc93ce45cbe9a143a2e597b1a0b0c8f3", -"TR_bitcoin-test_signtx.py::test_information_mixed": "db54057fbd4af74a57abfea2e01123ae3aaaed39fcaeec96b879726c26db3ee7", -"TR_bitcoin-test_signtx.py::test_information_replacement": "9521c2e4bf4c09cb010cc811014d21f92359e4d4d14d4f510a30f34e40973cb1", -"TR_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "4cff5b6e906cfc244d5c223bbf7c521af1a187abc3a5c18393ec44f129409b65", -"TR_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "90994ba4feb80539208a780e3a5602960e533f46f00a216e7cabd8c709b806d4", -"TR_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "2d9d4993bfdb287b98a4c1afa77334f09acfd7f2f578487b6094b8d0bdaae234", -"TR_bitcoin-test_signtx.py::test_lock_time_blockheight": "a184091a70fedb8f1ef063df2155ca63f1694f85e135513e21d07f1a43c3e178", -"TR_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d35c4bd90f36e2a4a9018a8d11a3f146dc566e48ced294ce37bd68ed6f70e1ff", -"TR_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "fc870a46c971dd752958d3fe4fd127325af21b58f6c6a67a4cc45ab4e0e79e23", -"TR_bitcoin-test_signtx.py::test_lots_of_change": "8934bc328219614d6fe79a9d42545ed7f455c09b04699dfc0431180d831f25de", -"TR_bitcoin-test_signtx.py::test_lots_of_inputs": "d75d8177577a15e652c56c869395c2de0b90f35bd482ba13afa0f6d5ebedf7a8", -"TR_bitcoin-test_signtx.py::test_lots_of_outputs": "c77674b7017aea81147e73d5737bbdae2084f6df531d4770ff88e6d112a8a7d1", -"TR_bitcoin-test_signtx.py::test_not_enough_funds": "26d52056f4225156037623a75c24342da3a4449e000e3d3a6374ddbce67d248e", -"TR_bitcoin-test_signtx.py::test_not_enough_vouts": "fb91e24d8fde84794c80155b678b09bec2daf4d66c63c3d86ae004e5986a8a4e", -"TR_bitcoin-test_signtx.py::test_one_one_fee": "29b8a8baf48815ed37ab4f9d65a1585614f5d6c1b582d27c9575fc7215141b7e", -"TR_bitcoin-test_signtx.py::test_one_three_fee[False]": "07cefe264f4e2c0d8cb09a5d9ca3f98852ef45dcf2236c36423963c17b5f5b5a", -"TR_bitcoin-test_signtx.py::test_one_three_fee[True]": "5dab1d89347969b5a954f9097948407134881b964a19ba9b7a8e7ed153cf178a", -"TR_bitcoin-test_signtx.py::test_one_two_fee": "edec043a2ed9f078035821001a8039bbcc3ea73be8a2a5bd91fb40a8fdcec120", -"TR_bitcoin-test_signtx.py::test_p2sh": "a88f8dd6d1f1dbdbf010f793009a1f580029be7999dc6b2da2527a23394dcd48", -"TR_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", -"TR_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", -"TR_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", -"TR_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", -"TR_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", -"TR_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_signtx.py::test_spend_coinbase": "233e91efb19035433834af5f90bcff8688dd6bb829350e535f4af5eecd14baf3", -"TR_bitcoin-test_signtx.py::test_testnet_big_amount": "26696705a7d6faf8b1be9d66dbb31aa132a038365632af0a7c01684a1ef40cdb", -"TR_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "90d7c8a448c8f5de9921eda5e27202d6f6498f53a8c0f407906199da610003c9", -"TR_bitcoin-test_signtx.py::test_testnet_one_two_fee": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", -"TR_bitcoin-test_signtx.py::test_two_changes": "adb7a86357895a902688d9e65f470638d18b3663168841f42cad3bbed215bab3", -"TR_bitcoin-test_signtx.py::test_two_two": "ee8741bff119e6c1049eac69fec502d7434558bc28933275212c4b573d117de8", -"TR_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "29b8a8baf48815ed37ab4f9d65a1585614f5d6c1b582d27c9575fc7215141b7e", -"TR_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "20490fea8715c06a0686aad914763bc8ec9ef6a5e86a01242cc109353ddb6d91", -"TR_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "b9714014b218a5c37b2b716e23298351752a493798815afdd70718987ab9c57e", -"TR_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "b9767163657841add95850f3831a337c709d40469cd615246d0fdb99711753c6", -"TR_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "29b8a8baf48815ed37ab4f9d65a1585614f5d6c1b582d27c9575fc7215141b7e", -"TR_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b8a637d74434fa4460492aa8ffedde9e28f30a09967bd0a68bce035537264f13", -"TR_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "d2c55e76375386fc82f2647e7955eaffa3f82f824efb557b1351163766fbb0ac", -"TR_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "7b1a114e28d69893ee3d29dfd7c43757521aabe9fc36cdd6af7ddcf4d46b02e6", -"TR_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "f3f31f1c58aeb37221a0d29125507b685f4e2e9c6c30555f01c0e4da61a7e426", -"TR_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b8a637d74434fa4460492aa8ffedde9e28f30a09967bd0a68bce035537264f13", -"TR_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "fa651a3d73795053b95513f8e1384d79f696e46db71f20ec9af75e91f4f3a9f7", -"TR_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "10517bdbe7e530082ada2e0246fe11bce0dfdc741ff71b5ce0b1bb33d4d4bcae", -"TR_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "20c8f0429b26bb5475aa7ea438f93bd976d83554185962d9c049f84e7e112c1d", -"TR_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "0f6b1ab9e3a80d96d4645a902edad4a83f384c774b78f4aa7fdb9c8598b15540", -"TR_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "aa8d89d26b9d6ad2829956e0a4f1700dab9757394d2fe7c795e7625c45728491", -"TR_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c028e8e71c6ef7da9857f3696f383d339b6ec72d2cb71df49fffb0f56df71b66", -"TR_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f95c5fe6cbad5ec7838ebb416cff4b77ca7f458d5dea033223e7dc6623802839", -"TR_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "3e83b98315dfbfbd6c9d8fdefb86b9aa7e0537f1c869f76b64e7b70df09c258d", -"TR_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "647905b99af69da785bae3b1edea3a59413ebfcf13a7e04b8f87b4d90bdce074", -"TR_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "be79d3dde7efa8bc8c50610f06b2ce499266ccb9aaed9c13d38e4d335fb44930", -"TR_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7e221e550fe2b75e67bb0610b9afda4a136ff8fd7b9134c08268ae51f527870f", -"TR_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "52d2b069bd357af0e4aa5bfa6ad33a3f3748c8265f826ab30af37fee7634f329", -"TR_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "4f27f131f39f02fbfbe88f8dff94e075ada9249cc775a5b2b541474e85b472b2", -"TR_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "7752a73c3d1e41265f6852cc035f800e6a631b243d1c74a690b268f2f668bbf0", -"TR_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "4f27f131f39f02fbfbe88f8dff94e075ada9249cc775a5b2b541474e85b472b2", -"TR_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "18801fd48cebc1a9acf3abfd2450b5669279604214a6285eb54fff4b9d8a850c", -"TR_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c072f90fecb07a693c09038a26d44eadae88854df02e0537aa99f946d641af83", -"TR_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "249e65809ac735eec03907514834fa347df6fa2f44d63dfc09cc89defd85885e", -"TR_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "9c81e8183e299ca32345f6cf667574ff6dd946ef86211eef3551004c67679c4d", -"TR_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "04147f6c0686415b540e46b8d0d3f449371c45a6c02f6ff65c3e3faa5e40421b", -"TR_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "fff78cd833a5bb893566cb32d503e1de4485a827cdf1b95ee8cc79a774ac0bde", -"TR_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "69c0dc1281d27c538baa617ae0c429365ae498a6c0e5cf5d3cebad23ed3ca1d2", -"TR_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1bdefb37f5e565ad195d1ca61bc772d48276caab1965f96cbaf9f16580fcf5eb", -"TR_bitcoin-test_signtx_payreq.py::test_payment_request_details": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", -"TR_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", -"TR_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "2143dc83a562569771091087d89d164a2f6218ba7e0fa8e2adbb5f802a305ead", -"TR_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "bd1c6ebb4d702ad4172f710e0760acebcd8b657b176ab09d694fc793eaaff849", -"TR_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "10a40e65979497c3133baaadcef00665c7c224b03babe623a2b56dacf936d8d3", -"TR_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "10a40e65979497c3133baaadcef00665c7c224b03babe623a2b56dacf936d8d3", -"TR_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "ad5b171dc879b4c19c6fd16cefd75e677bebd5ad4f2a95670d7a71c6a83f2614", -"TR_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "73a423e458b85de0702f28ae7809bdd03b7507bdf5726e539df0d5e9c0eb0cfa", -"TR_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "60947b5820e78cec105c9f2d7f2cb18d080e6f9ab4e786655eda6adeafbf5b92", -"TR_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "ad5b171dc879b4c19c6fd16cefd75e677bebd5ad4f2a95670d7a71c6a83f2614", -"TR_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "3d655937ab909053a65198be3b9728822c8a732efb1fcb8da3e1db897cb894ab", -"TR_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", -"TR_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", -"TR_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", -"TR_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "8bfba86abe6ddf1ebdb50310bb124f3b3906dacf7c5ea57f06f75c1570a9665d", -"TR_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", -"TR_bitcoin-test_signtx_replacement.py::test_tx_meld": "a43be3c1b450871626dfde9f083bcde77e81543475db79bbc5b92a38fdb86c9f", -"TR_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "8012ca199237c207abf7c1486580fa880cf8b0a8956788754cfb707035c80e55", -"TR_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "aedb92ba5420235a7d9071558dd090655e669dfe0e8e9359c53e4395d00983a3", -"TR_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "805e43edd2e618ebdf3c7048f84ecaf6e0c1ad4eadc525973673c39572fcffae", -"TR_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "4733777903a39e9ff9c04d8a34cce77109f7ee6d526dffab432b6e41cd39a35c", -"TR_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "57eb82ad09663331c93051b2bd414a7fefedda56aee170a3420f1dab9d79a231", -"TR_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "2865642943d3e1945cbb497a25967d134cf067db03bbbd6fce3a078b1264e222", -"TR_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "28a2b5a2761e176786f1800d27655418bf9a7194d48d367d39898cbbe4d77a8a", -"TR_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "137a9870f2fee1847bcaf0ecd6cbcfd69b7af23902b4230415b0b10ae6fbb2d0", -"TR_bitcoin-test_signtx_segwit_native.py::test_send_both": "7e9779beaea3835034aed8c778433935eb77a82b4552883eaa1d1062c4282046", -"TR_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "ad74f383c53ed6e271395ffb09c6e987b5c6d182618ee5ee362981aceac732ea", -"TR_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "16ba7b01fdd5e486bce2f871bdd0ce66fa5e4fce8ed0338176a061e3df99ccf1", -"TR_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "6dc1beb3e38e3ca07ef2e4a0f6a5ffc8f10b11256b1c036f3e54ff06e14984b5", -"TR_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "c01e7ac5c454ff421a2e263e6349e3e16332113d8acb92175a30b7cc37f35cdc", -"TR_bitcoin-test_signtx_segwit_native.py::test_send_native": "b8a637d74434fa4460492aa8ffedde9e28f30a09967bd0a68bce035537264f13", -"TR_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "4f578cb54ff29304b072e8272c43a6517ea7d3117700e45221a95ba756af1100", -"TR_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a737a936ba1f3aeb5e1523af8a556c06ec627087e0e79ccedd6783db4fa78990", -"TR_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "51460b3fc4bcfca864c174f6b96d5f43dd77ddf01f5baa0b2c71336472ef63aa", -"TR_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "2f4ecc827daedcd23119078e152279adbbba3b641e691435114addfc29f3e829", -"TR_bitcoin-test_signtx_taproot.py::test_attack_script_type": "5ca01c1e9a6c496eed957e46ab26dadd3847731c1d8d3d02f2ed30bea954b007", -"TR_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_bitcoin-test_signtx_taproot.py::test_send_mixed": "baa00b071f0136573a12b57eb1c3eb795ce9a9edb56c5885863dec46efd191aa", -"TR_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "01cb6d247ac5255e71848c23ca856ec1f4a792f27877d6f4bf4d2c746204ca34", -"TR_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "285c46efd05d5634a7df0e7113ebc3495f8dc2a8556e0382c1b8b20af1f7d5f9", -"TR_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "b1a6aff58f9553f7d23e8a1a881f86b59b64453469e186753e52e40b62a264a4", -"TR_bitcoin-test_verifymessage.py::test_message_grs": "d300a6a3902b82cd6cb64d8ac6936bcaa187d429439b1fcd986512b71b5eef56", -"TR_bitcoin-test_verifymessage.py::test_message_long": "a4cf297dcd18edd16ac83a09e688ef0e0b6e049e7b40d17276a373b67e45ec9e", -"TR_bitcoin-test_verifymessage.py::test_message_testnet": "ad8d02f9ee21ca37bccad9954c696226b9b0912640d41a48e14ef7ea8c12df5f", -"TR_bitcoin-test_verifymessage.py::test_message_verify": "54c0daf2885f2f3d5693503cb88ab07332ca1cd80b46930f942366d6e0fe63bc", -"TR_bitcoin-test_verifymessage.py::test_message_verify_bcash": "4dc5452a0e7ddb626a18fc43a3d8a8596bb919fccb1e955d5bfd0cd7344b8f8d", -"TR_bitcoin-test_verifymessage.py::test_verify_bitcoind": "140bc4a2c8be416a038b0f16d9f7cce10839c6efa33a5cd436fa76246c4da5b8", -"TR_bitcoin-test_verifymessage.py::test_verify_utf": "7dfbaac3a12e196d28b4e828fe15be33da618d546ecb45439ad2f9a7191feca8", -"TR_bitcoin-test_verifymessage_segwit.py::test_message_long": "4debe719007c3bf6b024d5cf6bf59577862e1e34d7725257bcfb48dbbd1a4c91", -"TR_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "aa396aeae8eba6cf46db5f302798b552b084bf42536ff0528151a63fe887ecd8", -"TR_bitcoin-test_verifymessage_segwit.py::test_message_verify": "fff54589926dc1eb840f1a3b9de82d2a2a178add2c95b532cb8b6cada3498cb5", -"TR_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "1ad37a04a4c25aaf7f54037f1c6bf92fa9e97e17a095c7d71ba4eadcfb103a21", -"TR_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "19c06cfbfcc58622c9fbbe14b56bee7a8a5d7ed094dc0aa4d85dd58309eac6c5", -"TR_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "cf9f0fee72a2c1822250f938ba980a358abf67894a193cfaf9e7ab39e746405f", -"TR_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "314a767de1949e7ec83868654cdf8f3940624ab95db558e932bddea52518dafc", -"TR_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d2b1c66934dab005f46883e0b4b60bb0d107f5ead5968c4b58ee9b5db41b6a85", -"TR_bitcoin-test_zcash.py::test_external_presigned": "234d3d65084105e95d632c69bd0e8624988cb98479f02da591104911877f01f7", -"TR_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3dcdde5408fab5932d7a582dc69968c180cb5022bce02f2c9eb5ffa0d1e6005f", -"TR_bitcoin-test_zcash.py::test_spend_old_versions": "a06b4a19285610c38774283f39d1228bc89136e7f3d0efe9b866f24af44d89a1", -"TR_bitcoin-test_zcash.py::test_v3_not_supported": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_bitcoin-test_zcash.py::test_version_group_id_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "545061dc27940209d764ef8e128ab4ebf0c2d6bb87f5dadbd37931b895c1f1c7", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "4da4fc73f5a07547a3a272e6dd798e06f62127a5a9eed653178e2d5a6205f8c8", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "810e5d7133ec687da04d9363725fc4a6050c268be4d08d6cfa46fcdfb454c001", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "726bcf34af11d0a58da2a25294dd67673f684c39bf76cc9f0608b78930398ea4", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "c2dcbcfc84d26bc814f31d1006e7d40791570b082c4489d7a8838179ce5592bc", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d77dfea2acef5b71e875f513f4dd54e54ccc3f9de996aba73c8e6f819ef58216", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "3d8855f3163fbd92a8401c88beec77a333d040c4b520fd6a67ee1a682b871a04", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "bdbfc17421790c0092fa44f0526c10806fb2851614f0d6b5e6402249ccc02b04", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "dec427c461d3e4911415c66b5b5cc2136633ec8c7211a1ddb714ddba26fb8656", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "3e6cb6ea0d53b3df5a6e86929e14bac75d6a2f7e596f486fcb07b30066c58346", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "b72e26501c3719d569f2f46e79b637386d7e42d4f92e93f2c1c0667c83cda9be", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "41e9ddd4ba0a8f512f2b991a34141f416a72c80df2cf27ec320642aca1eb4922", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "a7af7d9295e5d47b54d1f9054de5778d61fbb9b025bf3619fcbff77fee3bd0cf", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "21095d24f33f8341bcfd80a5b35f1e255cc957819f26c6bc36e6ee8c36d4b654", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "e4ab556c30d6ef3e0143476dc6a7b56750cee248a8d4d498cb529691677ae938", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "650c563e13e1fe80a2dc7caf1ed96ff28a143859ce5e6552d93251d312439772", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "06ffd5b76a92b8e1af92def298d7be7d39fdd0a2be433f473c4add87638def2b", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "f5d93fd937cef667ea10ad652103606777aba71472e0cbb0f0c36604bd267a5b", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "2eaf333268921bbbaa1b45fd5f329acf739cff8db83171af875ffddc5a42fc27", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8b77d03a8ebb38313df52fb791d02fa174497988cca8a38aee12a276b9e2f40a", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5ad699e9d4d52f05e8855d80aa72dbdc2d908e59c50867843df3768e37d363a0", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "622eab71b22f78a7ecfead248c142f3fc16d670f53ad1cac129f099e40320e19", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "2c912906e1b16d45e6f51787af37e3720838a18d698d24566bc035df3850a17b", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "573aee9f27cbf862c4cc27697621d66b3ae24885a05f4b0cf5d290fce4fc9619", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "c78f2170c33736f0089d69c07e258b376e353313c1b83d5b7fae80ebe3e244a0", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "36cdd72ee5475fd78226efdfbee0298ecb535319255c39e0a96032a16d63ffa6", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "d81a53e3565b5790d9d7c95941934a81b68ca5875efc9db9aa2b307da6fe3fcc", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "cb382077a00fadd3a6b96621f0bd8a7b813143317013e134990440ec6c37c7e4", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "751052fed23351e20a26dcaf4d5b7d01e8c7fef1b00cde233944f2576c83f428", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "2331b75c6b6142ee671ec20821b82e41df66acab4380d030eecf896f9e324735", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3d36f787b6565bac89ac5592dd2dc1b2a0c7dc59ffd57cf06a73ab2206743b08", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "0b65b6936ee58ec1d34752fb71c6bde429f5c903099e5deaba6d01dae673ee87", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2c90dc19c83cb160d17d2cd38821e6d5f75b2a9fe02a755a368823bd39782f4d", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "6136c84cef10f6220943238cc0965220df71d957083b3c12a7ae6f3f8288dffb", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7c0cec097064eca5ff9373b88bff58fa67775069fdc16fb4a8eba71f4f6444a5", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "0f3e255262332d8cc7c46bace39bb1dec26ce6b8704f422e8b7c554ddba3869e", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "aad312020098e0f62f7db9f70f421828fae9f1401a2883541226778fef5b26ac", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b2a99ec12c8b18048017ed6f21367bf4899c01d7732417b2a88057c296a856cd", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ba4fd380cdf293c7743cd353ba14617e991920270316f89e23321a16befcd2da", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "3d022f8c0ca045ea2c77c89164ac69cc53622e09449610d175844cd7d0456d80", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a1e7128e23a8e8613a83c5ab86671a3b97f025a03609cc9bb35987f425151fc8", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "6693459df79b809151670e3de8b5f656e25248fbf2bbbdb2bd25449883517c28", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "46e5b9f8609dcc957ab5f2874374907a8c95746d36672ab3ac967a5956a64c21", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "33de2fd9072fd80691ad68e7f40e9e19d3b3e6e0d065750d985ed39d1e355324", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "20d33357921dc63afe299f4dd430f1f410a1750ee421496e511d87efa9db9bea", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "10c9e76fad899d4439a1b7770a97d341d3234331d388ef5d4a67ea5572c592cc", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "dffccdc2b3c5bd68e7f2e47e1a8606936a519f73016f6ef92a66fc427babb297", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "284dcb51422dada54ca2b0d5e68a80cb61ce66f4f782f9b71d53e97dbae428de", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "6ec3be79a26a25725d67a4e640df17d0baf1a39a97931bca373f6a34d6f0dfaa", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "db3ff1ce4b81d7d6b2a80d656b18281a30ae23c2c7875dcd66d35bd316e8d72a", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "6620aa741dfd56d23a4b6abde900de658bab1de93a797b00577c2b804331bd8e", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "60e2c396c5f79d4a8718aec1b0f2277aa420e225d45f24ba02499a5f2e48cb0f", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "ab1fe57932eca66221b690b822118e7dd2ab3530b0994cb3c3440fee0b4a091c", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "5d5785ad5a4bc8c47aa43806e437510f14bed122b7a754f0e6672d32efb1b8f5", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "43d673ce17770d64fa1612e3bd0d69a55262a84b15659a9b676cc1f293254f24", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "70b83cbd0b0703709b9199b61311bca59231e4cb90c046448937bd8150690d42", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "01ab9d79241820e62cb40da6804c34f70f9e0acb7c7232bc71fdf494228834a3", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "fb75b1696625fc39e8948ed7848dbd24b11d6877c3613836f315848d3ac38ffe", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "849aac1532f28a8f011da503c70cfdc945abd22cb60f7a850d1c816efeeff09c", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "30f0f80146d1a81e6ebbb2861e01464a2e87859aae1bcb4643063cd35fe7e827", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "8f650ac94d77b6c7a4b351cb524add7f70ebba8bac2711889bd9df7a9b199ec2", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "589a7ccce1847077201219a61c007106e8fea26d08fcb53c453ae75500f81f1f", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "08ce670f97d7a37ed1ebceb8165fe012c1158861b2f77d24762ed763f5cedc98", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "fddd38f2a5c0effe216f0600a318b1ef52730dea57636659fcbfdba3251c144e", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "cd624286f3812f9e580bbdaeda5f8d059d272467feb5f014d773cddbd2596400", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "373525f97b036959fccec948b425dee2839b50f3a0be67b6ced9cdecb67cbf19", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "60d982d450fa6545ff619b70aa4b380ca01760b1d5616264262d58a235f7661c", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "1b839ad816776fad0d985955008d926e1a71683c176e62e802f6b4d6c9d1c843", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ee19e643f5413b5ecc1c342b1f36e61ce42818ad466df9b380ff0f8b51803132", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "0e79b6aaa4adca184e31a8226713bc6b5967408d7a8f26190b33fb0e7389e17c", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4f9d5909a0fe423e69ba11eccf91416e4bf4aabf01ab4fec471a69766505d4e2", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "2ceb63280742e4e2d9c817109ec1fe217c9f806292a04a4f5e2021115016822e", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "9b77590d58e509ab74e2ba86524f73329572c5eb0195be9e93f6e29e0667f529", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d7a1c40d1e99f371309014f679857d38d8273b260a3f32bb7f9469f5c877b3db", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "38425ccf3b5dbdb2fbca4b6d7f416cda91668f6afc4aabd8b32172d51b47e85d", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "58e5de56b1ebdc0b3b46ea44ea7442b3b5d778895c6f6916b942ee85c4071e87", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7528c3b217a4c63a90a0c69dc5a660b9fdfad8d86830dfb0a4dfec747ec515d5", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "a101349320f070754717eb397ec08f1922cd700e11cd4c54053ec9cc119c5e2f", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "305823f85c87d1574c5314a1d31146b979d724cbea3a8cbd949149aff69b38c4", -"TR_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "fdb4d87e529fd665b1900469c8fc6c5c2901aca881d7c19a0180f4cc70cc0c17", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "41364122ea9e9e2d173707d82d02348a85abb382647f2b9f7a1e273c6dd13c50", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c75a822330f569d8afdfe02ad1e421171303c8d9fb3e9856bb93494a999030f6", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "81aef06c2f3331d7758db1601592c3ada3018132ed6792c1126d62a78166cfb1", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "1cafa09e0c7a7c73997a37f3a221eccc61f157a68a941e10d9b9ea273edce6c2", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "a1f6d5c8d8604e811c4b8ddcc43d7d19d039c24aa2494489064d0ea3dd46c47c", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "5c868a0786c0d7f73e6bc3264eb465ffaff1f327643ba3754214b2e8f0fe459d", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "49766385de678f60d32c2d2917a9a56932a32def07f96f5a198ece0eb2c603e1", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "c768c5a9d0ea4e0d7158048e59468edd7b23d621479294b586fbd966af9c6c2f", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2037381a71effd407e166945821543ae05d7e45dd5b422676a1d05b4475aaa3a", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "59b5fbbbde955a3af5a936f883451c77e37e5b0bab81eca8c576d311b8e744b3", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "86ca8458a4076e916abace6c0de9a99309ef44f3f4f87fb79a17b05a436a294a", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "bd23891956561c04893f8cdacb1c1f5ec12427852f03c72020d90021548248a1", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "633aed5ee504ab81f2cc9567dd76b70e9ce0a9affe903306e7347e33766144a3", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "4e9fb93472cb3f70a9e5a64b146810aab506d93bc87b2dee6ef5c7713df21f86", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "599851b3275abcd3ee0632c8be9ea22b29e37e5b7f9ae8a8d06aa9ee02dc035d", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "ee04ba3be9446590227e4870b18f0284411eb147b4d06cb6b5a3ec8401d5b8b2", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "6140a548f045edc09e51e9136c15e846cc4765d8d399d5b202678f7d2c69c221", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "299ca1f0f9cb043f849ebcb7f3ffaf2f829a021ab0f84138f6150686d993ea24", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "d324826024120eafda88dc4a1e1d0eb9005687e16508f9331f0f13423d221dc2", -"TR_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "589495fa423d26cf300a175b88c898fe5fdc6cd7074c22a0b56da72df6782b2a", -"TR_cardano-test_derivations.py::test_bad_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_cardano-test_derivations.py::test_ledger_available_always": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "2fd02006b5ebb2ba3d11c9c62ae4e672ebc19d1ac7caf7de19c7a829e85e6bf7", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "54b0585e212187a99786f6a4030a11e18cf7a606029a9b10bccf229225482e31", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "76e8084cad93b29fcae123951653737ec3c514855e5cf6f9e645fd6b80ecdd66", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "7b37e14b9ed67953d69adfbbb6b02dec7b74b652bf233d851d5d9467d889431c", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c44238a8be239fd7ba56205eb475379df658ea9ed99176b3b2ac952e84fed919", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "1410f4faffde9345084fcc946b45faee9d069b681285adbf70c339d14c6f9a55", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "5339f39b72ef1b0c889fcefdc8a17b7241f705a438c7c823c84561b42ea51490", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "ef28e64085b26b01f6d1bd9a282f6767a9e4302d39e41b75c0ed97cb8c08b8e9", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "63f3a62f6aa1f75af15bf7910088b3f97f70bc621feae3482a5f607e7e5c3887", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "7dcf294c7d52e12cb1e24827b56de8b27ac5f2258ae928eb59635f5069c21757", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "42b10b4dc8fe1af715ff02cc3b97d3ca4381ea3b9a9a9ac1125042c9a71ddf95", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "f669dab5b7c89c63c6006c44496e39ddccc672b97da199f8542b8a4a9178ecc8", -"TR_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9facb40a3379b37d6611a35cc8412339a0f8a5f6c2343c9fd7feb353a6de8877", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "283161b717285711364ee06a08f65a0d75683dbe5cf2b74417c733e7c605cf83", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "70609e795063e20a23b96e4d5ce2f982f4a2697c0fb4d3917b6cd0b8fac3a0cf", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "83ffbe43bda85acaff14fe20fbe34c368f0b2a215e6b70d85892310a2b9d17bf", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "70ef01a9d0d614ba2b3cfc82e1bd0988dfb83245a433aef5492ad12cd6ac4664", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0cb94d9efcadd912d882950bae55f27cef090d5392001299acf5c32a8bf0bc32", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "19f6de0c915cd19c968fe831abce1dbf827b1b5505618f1d0e79820cbcae2099", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "318f089413ca76f85cf957dcb8803b121e6f3016146897edd6040a1043472c2a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "8673fd2ae6fb4a1e910d252c31ea12694b9cc7a6a6b7db108d2c36a3e91aca91", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "e2327cdfd247746d7529e9eefb43c35e9f9553131bf40fd0cbff344facd0d5f1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0ebb4685b4085b2096328bc2296dac4397c9cdd79dfb924a9cabd40e9b2d1807", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b73d0e5eb5b8d5648b5d943418f8b438114ba9466363510f37106d5b32180534", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6e7adbddb0bb40713a5298e7585c694a4e3a7af0cdb0b859bd2c1ef4b5044b1f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6e7adbddb0bb40713a5298e7585c694a4e3a7af0cdb0b859bd2c1ef4b5044b1f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "efbe2a8f406da6d6bbb0b2c3c96702a9ec4bdd093ea9bba4d7ed140d044b86df", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "d10cb96de4731be84eda48505a683164ef85c4c40a8eaccdf46b55cdd871a81f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "36df44933e068aea2c5c8dc3c9527ab0fd95473aeb1bbe8050457a8cf1c90940", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f32cf8b415da538144aa52ab21b5a2bffdb31c4d5156e598e32bc81e1f58224d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "3b284571c891b0de12bcd391120b54fa521ac747896551f6ddb0a187a11c9e54", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "158a82a2b0151263f31b223e8f2f1c30925c407d9fdd1b81c196f75115209063", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "3abeb63a980d0cee07df2cf01eace14359e3774fb1db16bc414f1fb50ad1d81c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "581ce2a17557cffe22ea84a304afc8636623c82f28ff53a27349b93cdb5029f0", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "3b284571c891b0de12bcd391120b54fa521ac747896551f6ddb0a187a11c9e54", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "ba3ffd638b5a6e3e50df2f8ee355af062a983e33f853dc13b04bed2c510531f5", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "41c18f927371a044ae76aae10b401e613f013b5e85b998a6490a8e3e59df32a5", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "149390ade67242a7dfbef1175873c7ff4da29ec340f9db2fb48833f5f2ef5a0d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "066511a1eaefd647ed9b53480fad217f176d9f07fa4048e6518e20a948627990", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "541b3b9f9ba841ce3d46fb7082d175716f98e706e4bd4027c6800dfd286e9286", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "24a02a101fb8e42117af6c850dc78edf61a66982368b56c5ebad16fee28327d6", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "815dd2f93b0f72bc401572e769738a8d76892321bb453e32eadc848f18d1efb2", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "7115df98f6539f3657d5757e9ca31109650f48318f7314f13452dcb2a452571c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "3efed449668307507b40196508697c0096cb0a1a57c53e4e5c17506c1a076922", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "733a4604fc5f3143556b7032fa80a330c340b2844d12d21ac672ea8a98462674", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "69472a182d2218260d77aeef282c5481f3490c2cf5bbd568069df0e0e3b4b933", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "06a2c7a6b76599927e723286c9b11006ec0f6545dc3923d340e57abaf35a64a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "5523d539a970e740033470d38dde51c24fe8f3b63422290f3d65c0381bcdb037", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "748d54a2d8c48766fe7bebdd13b5ab25b35a6ad7b008ecec56a1ad872d1b04f3", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4d088ce7aabcf4d3e4843f34c0af230335f91002ab785d2f0eace3fa35b4f965", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f428de7357f167421d37bae68d5c79a8d9afc69eb16697fd4ef9156ec5c4ed30", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "fc4a796b8c2037fe18942c058c716da4a28e22952c32d758bad32c141440a4ff", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "0944a0df8935ea245b6dcccf8ca5ba71ea3128d1ff8cbc3649d2bfbea9a96ee2", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "d61f6a0c349c7532475f9b2f13cb18aa39b560543a35074637dae4d15026566c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "646f1150e79be8fa7285c1e520813a4880de0618ad379e0c3dcd0ea9a73afbc9", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "93be7fb1b1bb7cec0336a470bad734afaa6a14e2ca1e15026e764a4129693105", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "ed613ae7ae47e94eebd3084a601f15ee60dc311b8096d554ee3f590fb92b2058", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "f8a5f1201d07ed98cb03febffb0a30a2e61eb6ea1540cd25fd7135101927d4e9", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "f1ed37aa52e934088876f70ae7a0fc2470540ef43e6dfc79778a2c7d64c84bdb", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5c081587a0c42ed299c6d47a4956ee6c3171bfd76dc10472f2dcb8dd3ddaf2f0", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "521ece5244ef6b68acbe3344d069b3d3682b51aaac931942c64824353bc74eee", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "59d89672426e39c60e380b34bf10c4112c4888218ca26f0c30f3a7ab93e6f5f9", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "d8b3543c3a9e5ed3666c9445ad1f370d02d46bb15828285ed7e6d3ea556aa9d1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "7696d52a6d2f8d70d669b682683bb0a91a4bdffd54d4e0fe9aa413c5e2afe2f1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f11108652b0c097c9c48631ccb99a73e87f0d8d43df5a7774769e1609aedc59d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "327f7f3cf53e41b81e64121e7be441b36e4bed7bc8261f967a4644b8da0e228e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "87f57313dd6ee584520df7be84d7dfff8479bba0281562e6d455ace92585379d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "59076df42e6a73608e096301379e92bf0f330ffca0ee47ae38b836e75f624f53", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "b2515ad0d97aead646e466792d2f24b528f8a12ac65312b934bec642e1ae5622", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "423770f2df64cce2fbb9829838b7dfb56430467362ed5f90595d8eeb44f20877", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "46c36d6b0b15c419447051a95eca762449598f3bf8fcb589cbad3dae90107a69", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e72dab3ff56d1f8669b23eaa591c642e9383b26acf32a0f98353dbc76e6921a7", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "02c9e2f58df10d287f445451bc604d7e7f9e3aee4d4a71600bc1c9c8f71565f6", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "4d1765a5884c859931f9f9563ef18c96dea375ec9e9f35b57ef90e310a4854f9", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "ae313337f431adee78501828a8f2678e695793f62db2086ec8bcbd3e40247ea6", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "1d15148b46abf605c2d03e576d6213ece4cb547fbb05127c90451a287d0b3c7b", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "b493feb11e54a69564616a30f6e6296fb55b0c966de3e13c86beb99ae4db0e95", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "a76bc4262d06bf326f0bba26dba84810407051cfe376d490dfbba929e7e74f32", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "284861a73c22dd4f8dd07d6aebeea510e24d8fe0c31b28cdc0cde09fd6f37959", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "93e369433ce371ed26abcfec3435a71959eedfde8552e24e07e2f7fb4db33ac9", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "add0002c7a09fca5b066cab80691f06dc889e285f21e207109a0f1a7e5f13508", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "d6cd63b6cbe9b5d7c584e9b8416ba7ecb7ae42e885a939887dd653c60eb89378", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "90c69ce801d1261d2173d02b208c28a1f92baa337e0c0ed1358beb86c24ef217", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "39e5ac438b6881de1f311ba060077b509a47b73153af2b6c15409a1c74ad811f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "9a770db81a1f5489d29d0d1f9aa417dc58bb1b1fa18bbadd3e03c243cba2f9ab", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "9756af9492954b810a627f03321aa132aab70f4313e04884657430f4e3757101", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "9cdbdf8b1fe632a413b176916577dcfbe937a6193e3c1262e320417a8aecb69d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "9318e6bdbdf1b9c24ebdae7f004b158639154bcbc42d977b87492230f7a13a1f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "ccb7505c95712524eb2ddc1d1d54226fbb63fc174f46c6dbc7737583f1119d52", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "730cf9afc451516b1bdd0bd84bed67b18ea920f6af85abda2f5e67520fed6322", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "283161b717285711364ee06a08f65a0d75683dbe5cf2b74417c733e7c605cf83", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "318f089413ca76f85cf957dcb8803b121e6f3016146897edd6040a1043472c2a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "7403f3aebaa2ce01ab2eaa92cc2dcab8ec727fafa8bd8bb81d6b9929114692f8", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "04eb8808eb8d2c24b320f533790cfbdb19f9c5166e1a1afe12f5ec277e468b4d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "04eb8808eb8d2c24b320f533790cfbdb19f9c5166e1a1afe12f5ec277e468b4d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f2b65af0bc53f38ee2d629de8ab03929fdfe5ab7d1b6af612a6e7a4f164266bc", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "aac64804f6ee9bc2a7daecc48e2c7981cdd14a2534ca4c4de02dce3bdc17344a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "d6ce2b7a6887d7e5a6a51e37094ba9d02dfdb8c5a55ed3af80943445a1b73a43", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "8684f9d1478084d37050ad5212102e99691fbc9f439c6f40d69bbdd90d6d729d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "4c015c747ac2fb01b4f72aac826f395d1f3635346186922c990702b2e72fdee4", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "3df066c28afc13f43328bae6d51e52747041e676f32f424044c525a179a7dffd", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "8684f9d1478084d37050ad5212102e99691fbc9f439c6f40d69bbdd90d6d729d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "0bd171a05bd92033531b77b65f01cb82a43613f5418c695c8b47bf046fcbdf31", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "41822be60f1ef3a19c8e146cb96f5da8960186ac1ae43e520a86dc7bf8da4d7d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "98e41212e5e2595f2b0350ee24e160f24d340adaea13e685d1b2f1998caeac02", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "f640afd3c8f96de52e7abf43f9c107ecddc8ec73728d2b33d00a7f4da82f41da", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "3cb8c35708a39a835014707de5f7f2f196264f05b2d094d162607bddbe9d8c15", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "cc8549afa850b8037fe442e3410bb75cca7d619890bc5c7192cc32fd324c412e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "2e2d19c70f2ab9f6a441a267150c382a3fab1787cffdc68c963a2fdc7a6796cc", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "4c23766c45202ed6f22af0e24fb711fb6fa177fbcbc98ac5e7262316ab433964", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "69a9704afbf44b5cb52c0eb074d6baab7365d8de38b2b06fc8a0ad4d8c6a5bb7", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "af530c1edb6a2cb39d0a826e949d013dc0a39046597c23678aec893fb84146ff", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8010eb573c5f7586f35800a931650692c34c54efe1b42a76ce21c2e636aed227", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "04eb8808eb8d2c24b320f533790cfbdb19f9c5166e1a1afe12f5ec277e468b4d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8be8996586177cad6a828fa119561de9dc920e615f6cd23dcdc75f4c51b01a2a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "87b6df5678284908853b2b64028dc23cc1a752c72c7289673b870ebd717270e7", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "c258b0638761364d68110fbee1c64585fe98ac50241c334e576b02a0cfdb2ffa", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0d34932f31042d019dbc55e56e29c861d516b7467da4aabf74a130f917031b10", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "250d3aaa65f63c1ab21925609d23f9e5b2c2a47646ca2e743fd3bf964c872829", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "f05b522706867ccc4d4581925106e0fec1f9c1cc6abe406e761faf6c1957845f", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "ba30d62eed7c326002762e8af70c1faf50603e21192b7cdddda665b5250446da", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "c49115b603b977683c21d3b24f04f8394a172a53ee524fe2521b78ea1f510e61", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "58cd99d32df5de73d45a1a5ef32cede77619c03335d8063005896335938916b8", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "9657efaec571f16616f903b9c68ffdf9f9d39628f33ec3c10a63a6377feb7693", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "ac7c656cfb484aaf9596dae64402e15d4f76d92ca6377ffa534307829b1835ce", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "fc825672a972f5d3e48d31e73f72b4b4d2524b3fae5826ab80ca43ae18b40038", -"TR_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "af91468fe2519576e6352729dbc49d495746e12305f898f993159871420f0db0", -"TR_ethereum-test_definitions.py::test_builtin": "17052584cb918319f3f99c6d4909cfc451af7566c58bf9c726f90f227f3718a3", -"TR_ethereum-test_definitions.py::test_builtin_token": "6b5667adbdfa072e84aacecdc3a8569c0cd863adf7da83bf30496a433a2f1e44", -"TR_ethereum-test_definitions.py::test_chain_id_allowed": "2a93db16588c683daebdf76acd4ec51a8c5ab925c07ee6714a8da462e8e6b5b5", -"TR_ethereum-test_definitions.py::test_chain_id_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_external_chain_token_mismatch": "7e5c04a25d1da4b27bf0a2446553a4e77486b5cd310069ba8b4150a3108f8fbf", -"TR_ethereum-test_definitions.py::test_external_chain_token_ok": "b26a1b9446c97beae91deef2d5e63d646115045955aa1c7ed3338e718af952d8", -"TR_ethereum-test_definitions.py::test_external_chain_without_token": "1b01618fa6a5bde22274cd7ea7c8ff8c35d5907a38ddb13841d8d4cd62a11193", -"TR_ethereum-test_definitions.py::test_external_token": "6d7c87fe57969e078ea58a6ad428e3cd7fd6e9c1e321f42d02645b58d06e8495", -"TR_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "6ed18b2d677f47ecfad4e1582e694c1469b6518d82263e1e890d2080e2705075", -"TR_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "a1bb2de5c72df145f463f02344854a2e9164db148d1b836fa8e6b3d751556fcc", -"TR_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "7c5e0271318a9a9ce2d3abdedb3ebd7298e06d7e921e3b53c14bc08bc0f896a2", -"TR_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b5854b35ff2192047be0eb7ad867a1e07a2b4d7da4cfbc1e4966d81714571698", -"TR_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_slip44_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions.py::test_slip44_external": "b33d9f06bfceeb816b7f1726513a8b689e4fe912bc18e247ae7052dd435483c7", -"TR_ethereum-test_definitions.py::test_slip44_external_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_bad_prefix": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_bad_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_bad_type": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_malformed_protobuf": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_mangled_payload": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_mangled_signature": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_missing_signature": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_not_enough_signatures": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_outdated": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_short_message": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_trailing_garbage": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_definitions_bad.py::test_trimmed_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_getaddress.py::test_getaddress[ETC]": "811dc2b45a93c4ee24b821b302fe56d9091c00bd7ed2e8aa3d897a3b7e8e37cd", -"TR_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "31a141e0c77e58a3b4f03eb638ad1610e909652fd80a8b828672101861427578", -"TR_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "cabd4b0ab3147ba837b9ffd985c1818adb682ae23f5539384b3deb28ee12a0a5", -"TR_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "0c5676ea02482c8efec70f854a4f3df588981d8856074595c1600dfe00c2cde9", -"TR_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "a748cc5bc5c15f9e11a1bd827089c25bec0f2326011c7425af5ebcf237d6ee7c", -"TR_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "09f7b0723f16b99c91fab314631b98b12d67a75ef58de91db61c2b4d3a4289b8", -"TR_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "e6b1a15d440d1bd73f634260ce93bcafbbdec1813ebc90cd5d7f7c79c2350ad8", -"TR_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "201e023adfd09262087f362b4fb42af85483b96b683e2c7d713dcf6fe52af69e", -"TR_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "2acd0e023697de3285526b28a52e970838e49fad9ebf56aea5937c662600d0d4", -"TR_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "7ded58de8863dfaa44d472cec969abb9bad0905174dda171c32125ed9a2cca8e", -"TR_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "f95d9e56c7aed4cf4e54702f488753cf41f7899b4b4493202ab29363e36fe5ff", -"TR_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9335cb0261c56f6312bb3f64185f6ca9f91316be6477305820c04ad3c0cc6a8e", -"TR_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"TR_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"TR_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"TR_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"TR_ethereum-test_getpublickey.py::test_slip25_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "3b0cb3f5347c15c08395c3cdac7cbbdee15697a0b540c4c5391f1fc4d56d4959", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "d8b6f166d2884e644dec23e46b288ac8079586acc68b103c9c47dcb5c59b9d5f", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "50c86e62af97be3e3723a60ddc91b15196a3478510e58f22eb925c6419fe6c5a", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "454ac5a3d081b97df4753402093e654c189f954d1b4759813b48a8381dd4f80d", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "02a89730b1187a886495206a4d0c4105e485b40a049a67b0b83c4e52aab0dcda", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "dfd5e4db17f3ef4d7912ffff1b39e3fe90b5f25876c5f363b04152771686bf09", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "50c86e62af97be3e3723a60ddc91b15196a3478510e58f22eb925c6419fe6c5a", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "50c86e62af97be3e3723a60ddc91b15196a3478510e58f22eb925c6419fe6c5a", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "50c86e62af97be3e3723a60ddc91b15196a3478510e58f22eb925c6419fe6c5a", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "d00815191ddc88e45c28dc1973a55883b435afc423e5261e9d74c081913ae200", -"TR_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "a0fffbf8fb482e49afb5950dcc14a09f658d4af965af81a0b9f5ef94c46b774e", -"TR_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "df5e11d8d0a46cf915ce206363ac114f4f7e02017868bb48249ee5806ff05928", -"TR_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "bb90a9f7475069832ab6ab2863e0df56996351a92b8caaa4aef17c96cd07f56f", -"TR_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "4caeb1c742141b0b20b53b073ba96c8e18ed5551d8baeb8a9fb219db02d39b75", -"TR_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "92cf6d7654afa3fceef5eff0957431c5eab35018f9c08b923aa432363de62654", -"TR_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "25555dbc9c683e6a37a12615b2b92b6b25568b2ea37279428c97ab191d91891e", -"TR_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "b641b21c5902c40820e648ee53391bb55b5b8ed97bbf415528d3957ec633d09f", -"TR_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "a0e09cc749b96597dcf5a8a692ca4c5e08f5431d383ff47f45523dae302af3fb", -"TR_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5042e9de4251048ffafa45052f3c511c4c8791701e230707b1428a676e0e8ffc", -"TR_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "138b0c81648eb191a3044b692ae6bc46ea9c49dcf1424b61ddcbc50b5e5abc95", -"TR_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "daa48077ae60cbd84493f839430987550e57c7205c857f81c9da68b9679ec5cc", -"TR_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "6907d0e5e2121774bc38b233c9d8f8849b429d420ce16960f86faf7af0e7dd3b", -"TR_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "879567c25dbf359e8325711b4c81cfd3017ebe275c6f5f10799b13f53513c661", -"TR_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "aa9d1cefdc50956833cd55ed2962e83b5d406e6819233a05c703cf297e518731", -"TR_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "c615ad915d517dbcfdeb00fa5aeb0a49bb4e46293ad2469b4c658bc1f297a15b", -"TR_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "9360e0a6ae9fa17843a61af2b384aa49f2f463ea98b87eb3cb49dd71829b9508", -"TR_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "13d1772f9773e33e579bfdb015861b918ef873e69cd5d13ea86901501e1b17d0", -"TR_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "a853f7bb2e397c727d57023ea1a1606b59473b6e10cfe0a8c45447bc20a3eddd", -"TR_ethereum-test_sign_verify_message.py::test_verify_invalid": "daa48077ae60cbd84493f839430987550e57c7205c857f81c9da68b9679ec5cc", -"TR_ethereum-test_signtx.py::test_data_streaming": "4556e3c62df6a500f332859b3a5d957d32e8c149d5cbd875d46c1062afffc433", -"TR_ethereum-test_signtx.py::test_sanity_checks": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_signtx.py::test_sanity_checks_eip1559": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"TR_ethereum-test_signtx.py::test_signtx[False-ETC]": "ac09fd0b3b4e8d6db3677d9e87bde3190fc571bde240f527995870862b599f77", -"TR_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "9992f33c834fd440acb00226b74f9020e5041ac8a27af3deeba1ebd4e49ee941", -"TR_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "8434fdf9fd0adfd841fa784dd2473d2a0e76bc748e13f5e9b68e7ec77432950b", -"TR_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9992f33c834fd440acb00226b74f9020e5041ac8a27af3deeba1ebd4e49ee941", -"TR_ethereum-test_signtx.py::test_signtx[False-Palm]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"TR_ethereum-test_signtx.py::test_signtx[False-Pirl]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"TR_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "9cfecd6b73134e446836d7c0a6e632ecab31ce5c42430a29b2d16998f36ce505", -"TR_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "9cfecd6b73134e446836d7c0a6e632ecab31ce5c42430a29b2d16998f36ce505", -"TR_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"TR_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"TR_ethereum-test_signtx.py::test_signtx[False-data_1]": "40a1c36d02106c8aa492229a6f8f68e677a5b12fb1b8bd86582b03dd8e56f99a", -"TR_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "08d14ed2a8e55a76bbb7a265d6e9c18b167a8efedfabd87a66796be99a964550", -"TR_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "47cc2312c02c7a8acf5eb8e6817512b1a85313420833445411dbbe1c6e5eba30", -"TR_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"TR_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"TR_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"TR_ethereum-test_signtx.py::test_signtx[False-newcontract]": "8b980005c73c6341727f542e4d35077cf7cc5251d19811bf9691b095cf7f8f15", -"TR_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f6421c9631d9892a4c51618bf3f6409a5cc0c11689db67694486473b730284e5", -"TR_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "4f1c15cef69675ccc0643192309bed8756cad31fc3df7e9d68e9755e4c4cf327", -"TR_ethereum-test_signtx.py::test_signtx[False-wanchain]": "54a5f0390b5fd510098c943407815364cf54cf2569a84afacb27d04f453fe77f", -"TR_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"TR_ethereum-test_signtx.py::test_signtx[True-ETC]": "27cd74a3731b0e501cd05a5738a8d78d150217aef3617849f173abe15af1258f", -"TR_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ef1b1197c702b6204d05830e9641ab0a1e9320c0d227ccbfc753086b6f7f3ce4", -"TR_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "db84ca81e494da462c42cdbcaae1342a119b7906ca4fa0dec3b7b6e077547433", -"TR_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ef1b1197c702b6204d05830e9641ab0a1e9320c0d227ccbfc753086b6f7f3ce4", -"TR_ethereum-test_signtx.py::test_signtx[True-Palm]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"TR_ethereum-test_signtx.py::test_signtx[True-Pirl]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"TR_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "0e004a5b98b1a040ebd22bde35de8dbdfef079571433b7e6342c872c18cd5937", -"TR_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "0e004a5b98b1a040ebd22bde35de8dbdfef079571433b7e6342c872c18cd5937", -"TR_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"TR_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"TR_ethereum-test_signtx.py::test_signtx[True-data_1]": "c64fb3c018b2325dcf374010bc551b0c5d0e4d46e8eb515e66c8846fc3584c05", -"TR_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "a648deef8291d431b9d4e7df9c144c3d9d1e14ce133bd85b9daef20acd6dbc20", -"TR_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "09cc1b1c3bb9a7c07e5cd46b99a46e866200d57339449a6051f08d38f6cf15a2", -"TR_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"TR_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"TR_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"TR_ethereum-test_signtx.py::test_signtx[True-newcontract]": "8b980005c73c6341727f542e4d35077cf7cc5251d19811bf9691b095cf7f8f15", -"TR_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "693857d0537f73c9a2173863910c31f568eb1b9a22a94159507c83d70f4c5498", -"TR_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "36f0232e47b750a0c36af988339cd2513016c317b0620ea9df90b24db4742474", -"TR_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b31b9ca04fa2cfcbe89930b0f7870c3527ddf89eb2b1838ed45489c5f2252d3c", -"TR_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "8ba1350238c7e6765d842aefe5c591fd90f7455dfb4f43b83c83d707fe100776", -"TR_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "c38af6097694801fdf73cf3f7154ca5bf37ea543418364ff9d7a5aac0fb752c2", -"TR_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "eb6e718ab30bf5327ca9105e5621adc003660f3d97fefc269464addb683a381c", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "76fe8b9b3783ded6c5fb91b536bfd320266386a0116c4565daf7fa51da3ef749", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d44259eafdf1a758284d5035f585cbd339480aeb105f9f25cadc14c80b670adf", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "156021a42336a1e56fa6e3ba6b8d3864990317294a0b0651997c23d07ff5a45e", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "5aea921ce854d21528f613879f652892cd57d9a52a66bd7503d150023d4e5200", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "d03990ae3ca66774abfa5b40a2cb85e27cf843a060c6e929543dd549c51f7539", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "227f7f93122e899bb8a610060c3fcfa80f29bec720081e94cec12aede13173a3", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "76fe8b9b3783ded6c5fb91b536bfd320266386a0116c4565daf7fa51da3ef749", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "dd636dc370183717241289fda7d405b5097f30fd02f7941c71d2e4c1c9268bf3", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "94b584a7fc07c5af5e512b6b86193293d04a5e96f0c7e0cc238c07d1aff1eb52", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "574be4108aa94a633e8a4a875ca7a0de3aad5428f844ce11b051abac48926dfe", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "8881c66cf6f9b77cdf0d0f3ac2281816e04113057df7a726c599041720a0bde2", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "df886046899c96f97f8dd880f3b11345da36ccbc0aa07be7194ecdb0f2b32f64", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8024b02bd732d4b723f643dd1da0d99c8a8de0a63578b8de7babfb05b7d595c2", -"TR_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "dd636dc370183717241289fda7d405b5097f30fd02f7941c71d2e4c1c9268bf3", -"TR_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "5ec441ee292a9034c7d859f216050e7af702dcc219ed16e4ca17352ae4784c9b", -"TR_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "5ec441ee292a9034c7d859f216050e7af702dcc219ed16e4ca17352ae4784c9b", -"TR_ethereum-test_signtx.py::test_signtx_fee_info": "b4ae728ff71c1e6112abbb0111b85b2760f957b677726b35734e63c318495408", -"TR_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "263993daffe2a77a46a17d5b598aca84de52ba0e051e4cb5de5c524a48192ed3", -"TR_misc-test_cosi.py::test_cosi_different_key": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_misc-test_cosi.py::test_cosi_nonce": "df3420ca2395ced6fb2e3e5b984ece9d1a1151d877061681582c8f9404416600", -"TR_misc-test_cosi.py::test_cosi_pubkey": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_misc-test_cosi.py::test_cosi_sign1": "df3420ca2395ced6fb2e3e5b984ece9d1a1151d877061681582c8f9404416600", -"TR_misc-test_cosi.py::test_cosi_sign2": "381af0c5a649c6adb62c6d75c3a46f1a7b3c31e8559e6dc390a4738aad463997", -"TR_misc-test_cosi.py::test_cosi_sign3": "be6f8a2dfb626ca4fdedaa1a0e91bb373fcbeebd8fe7180884b4cc56ae32a7e9", -"TR_misc-test_cosi.py::test_invalid_path[m-10018-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_misc-test_cosi.py::test_invalid_path[m-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_misc-test_cosi.py::test_slip26_paths[42-0]": "ec0787ec28e6643c3f0d3d925960219086378eba88659709cccde3de2cd31fb0", -"TR_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "c7a89aeb54454adc91cc0688f676faf9f1c24e8bcc2d350af3e3c8b70fdf5ced", -"TR_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "d8d14a4d23b4c257d37d34a2932d1d2b940d919c943aa44a8facc4a7053ede83", -"TR_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "cc987dc41cafaeff79e3053882c2a8c41b2a82da149cebe7ed3e3b84fb20d9a4", -"TR_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "bdbf159199dd2849b96c820a699fb49b5177f9755fe820b00cd201f47d94b531", -"TR_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "34cd0ab3d37e4d5cc6e37a24ae3f9746f3deb20ea4fd2bcdecc546ec364cf7ef", -"TR_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "8e4b73c8f813f12f8b52fcf1ef30c0368b22b5f6f58af61298c5326b1ef26913", -"TR_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "aba52e4a06fd36beea0ea5a1b627f8f627b022b0022a06f642138d1617bbd912", -"TR_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "829778a8d2915c226eb3842e9d3535d53dffa17d7b13a1a21646c595588ff535", -"TR_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "fad77d8c159e54dbddc2e488858205a7d7aed115d136177982f1648df49bb0c8", -"TR_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d2d9c32d8cc435f129019f5fe2c376c099ccd3f14e2c81ce2d8fe8397531c574", -"TR_misc-test_cosi.py::test_slip26_paths[dog-0]": "1824390cfd045d43a5e38bf5ec881c3f97b8b0a1adff3dbf16416b413d3bca4b", -"TR_misc-test_msg_cipherkeyvalue.py::test_decrypt": "cffd4985f48bb8c64baede4ce18ae1a69dbd02bca4664ab23a146d5031ffad87", -"TR_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_misc-test_msg_cipherkeyvalue.py::test_encrypt": "468ff13a1c14b5a9fed5b58f0f1473448828acb96638045a29c6fed73e140d91", -"TR_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_misc-test_msg_getecdhsessionkey.py::test_ecdh": "442f7f4ac90325dc91d1c8283513307737ba6698be78e8fdb05d025fdafd7be0", -"TR_misc-test_msg_getentropy.py::test_entropy[128]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[129]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[16]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[17]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[1]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[20]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[21]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[256]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[257]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[32]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[33]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[3]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[4]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[512]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[513]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[5]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[64]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[65]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[8]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_getentropy.py::test_entropy[9]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"TR_misc-test_msg_signidentity.py::test_sign": "4ea3ff06287458ae5c08e118e489c0b432316521fbfa47ff587d748761f9c6c2", -"TR_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "b4cb31f200b840788ed20a2dd3716262a4f90871c3ef82bc4c376efe14deaa5f", -"TR_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "57c6ba50b97463b0345f91ebb7150df2e2bad4c3cf4d2665ba113520adc59abc", -"TR_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "d1238437828c2a306e66d1a6996cf86576426c77c7678e1c93746cdaa8b30149", -"TR_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "1f17ac968a8ecec85e30820316567c20ef84cced1368a03990c8cff953304318", -"TR_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3fdbe671be03512f7d0df9f2f71c3f6a317579d8905437a9b1cfca877686e9ff", -"TR_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "63f2b59a565a402738e0a240a0d3405d3581aa2dfac0b51a4e90fb329cc1751c", -"TR_monero-test_getwatchkey.py::test_monero_getwatchkey": "e0a4795c4167750f9b3a79ca5c8c5af31857a0aab102d1eb8f7722f6643656b9", -"TR_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[language-test]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e711de3d3c2670ccdf0e05ff59bd3b90f54ef999cec741243eacfca3b1712bf3", -"TR_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "b784e54944ee32942129a8bf04dc9374f8f3af38adf28f66247e10aa5920384b", -"TR_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c77b004677d78eac231cd77ec41dffc99a27f5b98bba7f97dd958c9f362c74ad", -"TR_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"TR_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "a0af5f2b20df62fa796a43be75b8c4aa319bb5679c0199ed7600954e34eb7f37", -"TR_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "8f1a082cc30c058977fb39f8c9f322aca51327a4af6f230c1cec61b4e2c46c3b", -"TR_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", -"TR_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7cee1a2691c5f9cbf923153866333d8eaa5363c057a5089e0dff11451b87cf82", -"TR_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "f3b4c3ce4523db62f18f11724d17b3ef1fee132fe5a0cab063a66ae6a9dfb902", -"TR_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "1c1dc8a6cf5d5fa612fd2e6f36ff77c9f9e0340d7d9dee89de81d7ac5fa35d51", -"TR_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fea9e21348bb74e43a155246806752e9fd9b16ef7d9c27bb3d977c90e4aeb253", -"TR_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "7136c0a858ca1435473b13f244a87724632689a84d1eeafcdf05499a1e6f1a8a", -"TR_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8826420d827c6cb42c7e9be17cff29a02b0f188a6564fba6acf49d5fe7aa3820", -"TR_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "7136c0a858ca1435473b13f244a87724632689a84d1eeafcdf05499a1e6f1a8a", -"TR_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "8826420d827c6cb42c7e9be17cff29a02b0f188a6564fba6acf49d5fe7aa3820", -"TR_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "62804786a08c790627d2ce8dce8911f272a5b52753ed37ba36398d11825f24df", -"TR_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "52f2b80c7129f4d6771a6dfe3aa72ca07616760c9cb4919c12dd3b77b9983d7f", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "99cadd1f78670aaf32b8b8889d8b73e93c0af363e3dc6d5e92671f157804151d", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0d9dfe828dbece8eb26c8fa5e6f79a4e999b5d876418f9bdacf1d3586f23d524", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "e89a47244f34a2b80f00dee6933822e2209b28853195584d9b41d20a8678a15a", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "9c9c1476c787f2731ba2a5c654b41c839a8d292e735f02179dae7f7e6b876670", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "9d95fa9820c341d4d86951e81ebcb33c8e773ffb0882f81375fcfd9d50d7b6a1", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b35baf38ab290bbff0bd95be1dea6ffa3fb8fd692a6be1dcc16565360a6f1bae", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "eea4cca35b9001249ec0587f5e6c5666c853ef3693d21c0f516a6593380a3d45", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "483104da8463945a2000e9809d12bba2a7bc84d6bbffa391297f33abc4b0ec80", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "7903b422edcf9ad32f85433880e9a605dbc153b61197e93a806d51c263aad8d2", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f52bae12281736fca7396e5d61d2e5bddfee490f230675a44912cb27d736ad6d", -"TR_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "74bf9e70bbe0f52eced36c8b30bc079f30baa5a7f244a3387a331d8c87a8d680", -"TR_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "cbc9f644b50db2d65ec635d7022f70285378b6e8e5fdf9ebb24860278373096b", -"TR_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6a31db8785559debab2a71fa23d99bea7d4ea96f2d5697e9d5cc5a36a7859030", -"TR_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7b263b889081f8cebb8a3d744430eef8d719f216de621263939006a18a8556f4", -"TR_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "5e73e48a82d34b315ee346ba731cea73ebe7a0aac3992b8677217f8516728799", -"TR_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "9eb8fcf86274cec7cdf3581d4aab92d403c05d295eb3c06660a6000fe2588114", -"TR_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "0961c86739794860b0dc6536b97088faa3f3703f3e2744fdf457e561c7f21e6e", -"TR_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "a7fe2740ba57d0790479b9fd56d7a0cb6e985a4d3fcd2cc2a8245c13becfa922", -"TR_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "be8181d67dd2aa8e791533a23605dc2b81f365019c2ab5b2089ed81b840d1591", -"TR_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "4975bb1256785c7b188231f6eedeaadd798cd41b884e1a50788670fa79aeca45", -"TR_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9eed365ce77963e7a40edcf9cd36afc5d8401347e94c47c3d0add98e534c45d0", -"TR_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "51f9ebb160fb086ca731efce727104c2d9702c9ff1367b68408f54a3eef68eac", -"TR_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f6303097005c4d03571ec92653a7f76450d2072c98811128e0c29f5a09924087", -"TR_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "da62d9ccdc436759f229ac74523ae5a5ce9dc4bc3aa8bee875426beee8a0d22f", -"TR_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1826c8e9c4ead5db259526a90b4d0e1d1627ec2c46b57bb943e4b6f3d6f7c961", -"TR_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "6be4eaa22a0ebb0872cd0867d07af283d7dca8bce38ed8abc7e5390236dcdd82", -"TR_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "743e1d4596e98980aad93466efa6b20213c5a4d69cab3f48476f7749b3808e57", -"TR_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a1bbafb0d49929c0b62203d655e84f345470051cd02ef1cffc0e2ee704708fc7", -"TR_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "fdfbffcc3a99bcfcc4d2fbe32c2e1b42d53af21910cefdb2a18058c553e8a879", -"TR_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ec047a8e65dea3cc592b9889dec2ae22d3718dbfb9bfe97b6799540c6af0a19a", -"TR_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5ce82905f4a02d3ff8a2c731b8e6ad770d3e3ad29b089e3a490d2868a41ba8c5", -"TR_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8633600c89710653f7a0534abc2f3b276116d754d99c0b6f4fcd32be08e343f5", -"TR_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46f3c94167c31e26ae0dacf3e1f2a408061cc0bc24b030229e495194077f5097", -"TR_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "df45787237e9e838e30287160c03af6b529360c7fcc097c433bba7e0edd569a5", -"TR_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "9b52a92bdf30cea5dfc1bf0e9414bb1eca41a8a63d4b5f37cddac76089456235", -"TR_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "328a7774a1d35b851403b19a9bc592a59a1c61567b9b0624dcf65f9f02f744bd", -"TR_ripple-test_get_address.py::test_ripple_get_address_other": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b4baeb9d6662a2f813758455881aabcdb7aea7e5a1372f60e01f5c4097472789", -"TR_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "14b4c7384951ee5a995a6a1ed05d214761a38b0c3d79c839eaee56d0bf518261", -"TR_solana-test_address.py::test_solana_get_address[parameters0-result0]": "c9ecb1dd7770a1d68e92bbbcf7e146fd787494b36cb06ba1647e43bc24b23ed2", -"TR_solana-test_address.py::test_solana_get_address[parameters1-result1]": "fcf8d157b2e1deee981b6ddf538b3924ca8753ca8c410c4812815c267853af75", -"TR_solana-test_address.py::test_solana_get_address[parameters2-result2]": "22c066ca6b9035225ff9154b434f69d8a78d0e7e03e910d9f65965b9a36283bc", -"TR_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "a2f72fbad37e8c90b3f3d337ed43d63aaa3ad273c8dad43f8f35672c3e3588ad", -"TR_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "0c426916a0a9066339fcd4aecfdac95d68080ed4625026a31d32630d8480a5d3", -"TR_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "0c990ee79c73a98cd670c3d5a3601221d320b749b70b138ffe23e9a44589d97e", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "bcc7e4f3a3fdc979ca210b97ea32d2548976801393cf003ec301f464ae570382", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "8da0cc05473dd70fe8413a7d97f06c567f66aeca95ff1529f9006c4ccacc5fc1", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e7e54c08c699cc142201527e698cb661e61e5d23b769dfebfa596d3091b2391c", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "9d66f3814be7d3fe061b266348a4167401fee3d53769d3fca52fd3211b6010e8", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "50ab3143a2509856620a5caa5819aba3d592f4952e4209d86ef73220dd95d269", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "085a92dd3090e97dfb29cd2ef4f4724c455fe88e00a7cbbd5bea961e475bb606", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d1ea989040664e7620d42f43ffcf5c5d8d86ba43d2546684292dd6ece43d5528", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "eac905750226dae074099f4f61600e07bdcf5591e1659fd835558197da20501b", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "f0e2abb8a4309e67e549d8d4c6e64d7a1c7568ef98954c6cf966dc760d989de2", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "1515716eb1798cde23c5588333a0885015bfa5f46fff5d01f3aea7c565d0a3f8", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "6fa579c59a758d0d0c8e5819936cf1e6af6fb202914ebddfb548ddd167fdbbd9", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "57edfed4a650f01c9c6ddf43bd66d6d9710b6bea1a0c73437112edebe3127a84", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "423eea3a9a5b3be39d44901f98dac448c76ac39e0b3b016fd1f57f830e414b69", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "4b375a895fdf50e6f7859d26387aead816866880b6bb98de164a75ddda791d60", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "8c4fb38a0ecb455a77e7fd39d066214d2af50c44b90539b77dde30eeb073ce9e", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "84a9f449c9a1256d916eb1bc15438aa167cd6fba4d98e506cadba978f1ccc46b", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "702c3a3ed528e1f46ee8644b5973284970d09fd81be9e6a3eea7340a115fd7c3", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "451ec930c3a547df2a45b2b5e6e32b3a711b64bd28a9027443a7c5da2aab1bf1", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "84a0a603c236d0c1674378178c0914b8ee5ffa802283255f226a0d3b56f0744f", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "b7f6f3a603e36cdd9d3ffd779a29805ccaebd9020377f295834037fb7e70d355", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "0d806bf8bf76d1537c6be208a988b14bbe3b1e8c805d5422d71640f5ed3418d4", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "0d806bf8bf76d1537c6be208a988b14bbe3b1e8c805d5422d71640f5ed3418d4", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "64554efe85ec3aff4c7e395546ee42ae197de135d473b95acfd1e35e962ea1ea", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "67e35ccb77ed2ac8071869e590393933de177fc7a7236d942fcaef4e446e55ba", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "eef88dd4b2906e14a9d3b021bf23baf44d8a886325ddd57bbb5b695cebd53941", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "d08b58172fd280f05135f012b41c8104e644043b455894f58b217277cbce5f0c", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "5bd7a06e28043893e978ae113ec0602d77854cc58e88da3921a5099e9ce83e5d", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "e17c8d11434566bd80620e839e5e9a403f6a34b2147e59624649f155a006e6b8", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "371ea1d5e2bf562146d6c7534d9c3557539a01c8df34f2a0732bc6d5948cddd4", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "de5d73a8fb3b305fca4c8c58ac53f2e37d83aaa89c46b0b945db89ee08287f8e", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "899752caaad474cd83e5733e91f087f6612968cfca2398e44f7054eff2848d9e", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "68cf2b6281ea452456b0c897e1ce71e49222938a61ee01fe0cf3178382608dfb", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "654dc38b6427e0e14e172527ea75e04c3583eb77c990ce13c2a59469f05e8de7", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "a437cab2755211ab6cfe7311b755e86c264e1d71fbf5ca8feb28c24c90146cb6", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "ec77ee378d1d825d087f255743f0889e1b4b4f31599d8216f1a99b4ee0cf518a", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "ec77ee378d1d825d087f255743f0889e1b4b4f31599d8216f1a99b4ee0cf518a", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "5a34a2fdb94294beac16e0fc6f1ac10f98220ec36c6f6d1a76e72b912e40a748", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "fab1d049c2534fb4698b80abcb9d65498a85692cfbc5584d4b0d680628f8c5d0", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "28aa0fc5820a9b20446e669370c6129c9d86b5701b7a64b89ab098afff042fcf", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "c0f1f7b540a824b01773e381281a881616b78dfd0831cfecf361c9285310f43d", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "dda1d3d5e1a7f19683f87d97f628544bf98d19d71bf9bfc2380acc0851a5a9a2", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "489a9e8bf3faf59137cb4c4ed181020b2e8f4c0e2cb0f9da7c6e499e470ef538", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "60e577d205836955c3a384a0c2167c47686b9b4104b664f7142d1a3ee7169244", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "51087bf66bd536df015238dda5173466d2ebad5eb69d38f7ebab286b0816aba0", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "1efcbb703b9edb470ebe90c53df5f15ff0b4cbbd3bbeb4d2ec6db4f733a65ab8", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "f32e3c1d0d9d42413fe92a93da9e2a31a163a61477136982e9c5ce84d43ad86b", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b075b98674a92a6bc1d7fc9c6f98a9b9339356fedaaf10fb78783089240841ad", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "069c644b49eba20eb8595461cfe4d484d2aa33a3895da54b1c76f226f120ac06", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "20646fc414445b55171e772180ce653aaced7f01334b598b6e40eacc7e999a21", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "63a76bf8aa15984b1e895f1489bdf1fc1e60f8ecc781698ef7a4bfaac168f131", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[split]": "1f6a75e3d9213b08ed0972e978e58c9baa14859d1e5b8ebd97ddac3e71076d5f", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "8a3ba58408acc32be072fa057282b6fdfe2e7ed22aceade38b83b414030306b8", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "c52d071c1a94d85a352a2a44ffc6a941d8ed43bf0c92b198c57a8c01b523082d", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "8a148294707be782b73cb7cfa57a2f7efdb75687e7ad8431d0b2e3fce9a9ec1f", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "a1236a7da0932d4682148deaade49952d50cc21b7f9a1793ac7c43e1f6ca7edf", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "69f24f090ab42f1ec97f4771d96381b72ed399cc010756471d2ab5bcbf3f821b", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "2ec9f373935ea87255162491e82ad4e4d86ccd482957423fc477c2740dae2e33", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "62b0368aeff77ce839649cf1ef9157d6978cea1963ef647c87b8d29bad4f62ee", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "dee1b3d342d279573d557d5737cdb8899ded0b0a1e6296f1c7871999c4d065ba", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "e652826dcc36750a55be26120da9bebbc09634c9607864140508c7d1613cdb14", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "ea2fd2377008542b18e20752992574184fbcfc28b434de5d0a69703323c7f6f0", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "867f9e9ec3a6577e208b989ef27c689a307f269928243b22335647664f9cdf79", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "827210bd1787236c31b0acdac620b87c066bab0b36659e3e163dafdf694a1ef9", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "f790a421c467bb1de98d842c9d292d25b81a1ada6695f40a8571d5fda4b1b23d", -"TR_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "d3b410e94d90f18195f32c09e98308cf4905e03e1070d2b524da7e1cea5153fc", -"TR_stellar-test_stellar.py::test_get_address[parameters0-result0]": "525c3dc0530220043088724517981cc71932753a6eb3a84e420e007a8a2a12fa", -"TR_stellar-test_stellar.py::test_get_address[parameters1-result1]": "39f52231954401d77a679d00cc9e087fc773ffdcc09a2e346077eb8658fc2f00", -"TR_stellar-test_stellar.py::test_get_address[parameters2-result2]": "41756d94190e4022ce3d7bd9fe3975f7cc63cf809d2e73c7a210121041fede9c", -"TR_stellar-test_stellar.py::test_get_address[parameters3-result3]": "ef5a02abcb966e4a1f1f4b54b9540053ba9ec3a9d4ead01fcfa800e8c62f3931", -"TR_stellar-test_stellar.py::test_get_address[parameters4-result4]": "94242a939cf5a6d0a3b2f9eb9c8e5253314f061d488d777bb334727416ec5da9", -"TR_stellar-test_stellar.py::test_get_address[parameters5-result5]": "0c43d440d5bedb093138fc8883c0883d65c955ebb17f14f06895b14afcc7415a", -"TR_stellar-test_stellar.py::test_get_address[parameters6-result6]": "cce2953e654ed94aeac603ca1bbc2dae40012f537d50298178b704fbec292795", -"TR_stellar-test_stellar.py::test_get_address[parameters7-result7]": "6c60d3f003f9a7203b8d219b618dc3ec4a2b94d9bf3662028734e30376244799", -"TR_stellar-test_stellar.py::test_get_address[parameters8-result8]": "12726f0c084791d92f195bbcec3761dfe19fac3dfb1cdff9ffd1f2b89df5feaf", -"TR_stellar-test_stellar.py::test_get_address[parameters9-result9]": "914fb776985eb4ba398b27087ca33b894c5971d98323cc3460b3987d3e0cc40b", -"TR_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "3c93204d2d46d8b056a975e314522f790b16aaf60293becdeb80221fa344c85e", -"TR_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "34b0a87b00da5d82441d741102952dd032e30a528248cb9aae34e172dbf8b633", -"TR_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a21c025e4f654d74842ea9a683ebff8dc559160a635a9d035a0ade6a4f7a4d33", -"TR_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f294ce3bd568077c319571d1c46b6aa568bfbace5b034efb5a69ba89e25a47c8", -"TR_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3d8732b3370eac774a32025e94230c7a15ae269bc329c7530c61350691165887", -"TR_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "f3f1a365442b60ae6d7b77779884ce9ed638617dc2322d69e2ae02bd5a691704", -"TR_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a2cd2ea0c9f73e6569c01f390bb2f2b836fe7bbd4da00372f89587d9ba6e5a81", -"TR_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "4f7df86bff1b036ecf0d8f087b855d37f17b143353740f041ec660495a4bad45", -"TR_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "aa6fcb823d51bc75fdb175a7529f861b499c7f455e72657fa7c1283037ce6406", -"TR_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "3922d9cb650ce64e2ead7720d1217e98755b1a742d505fb6da9afe531f38ea46", -"TR_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "00419212c5cb1b9c31dcacec46fb472be08019fa82baa6a978942a478c8b5cd0", -"TR_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "72c6d04563f1d7a6f840c2cdded67f94e50405b1603144e364a66e56812f1f6b", -"TR_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "09fe7367d16b35311fcfcb070c3b76bdef3c8a7fb85713af9f64ee908498ea0c", -"TR_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "ce42cc79760f9d8f07ba2a70841a86272f51d99811b40187182b31a23c4b07d7", -"TR_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "5e3c7fa84f906cd97ceccd40166f24017352488c3d71d3a784fc025423b002c5", -"TR_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a1aac4f91cacca5ec354eaf40f0fa524683135c7412b586e6c4ed4e22f53bd93", -"TR_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "c69daca444b493b23dd9b9682a03e5b9f993a7d2276c2285f61629231b43bf15", -"TR_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "89d398b2bc331f1bfeb85386dfbe020cc61a1c906ae196e73d73de2838839fe3", -"TR_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d6877955f02711d8da08d8f3de6f85079c0740b88fdd525d93cba00e50912a11", -"TR_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "bc268b30439540da1f037ea83f438c18b7db766729f9fbb5c590257da8efbb46", -"TR_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "83ebc1a4e3922f720cf422ca6e7c3749bf203e151d463b803f26d3554f0b29bf", -"TR_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "9776a07190c35e202da74c5a661068550b58325dc7779b51a9e9434f03417310", -"TR_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "17a890bcf0742d462b8634673833a6658b1b873bd4d242eab6a2cb08f6116f41", -"TR_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "00aa221b9a976c7f4859c61ed5fa58ecd4afd770e56deefc9a8a5ae1dbc98770", -"TR_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "6089998b3e02e6461a14163b6aa61adee5e6551c6e7e2ecd3989fd1587a63d50", -"TR_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "70462417b0e6f5de235b78a4f50f9283f5824160f7db397832019ae8aaa4731d", -"TR_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "95b61e5185139d5ee5a0f652f390e0c2a605921f1e14e33fad21c0b1915aee69", -"TR_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "abaf8235cab797a27eb25ffa0abb21ef8bc7dccc7770561cfd12e7b5441489de", -"TR_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0f0af9968dc57c90d8cfed3c6278b89b5dbddf67724d3756696fc702ae8dbff7", -"TR_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "633dd1e8b2b694e6a237c3ba2f17f5e48b43d46b9daf5cb421a4434fc5fad468", -"TR_stellar-test_stellar.py::test_sign_tx[memo_hash]": "93c0f0fb8f009d53ca3291158581e4afd8438e4fe5bbe130a18819ff88c181e1", -"TR_stellar-test_stellar.py::test_sign_tx[memo_id]": "2f05323dd62a5afafefcf444bc78b80cf62f999babdd12c12582b8d2f60e4fba", -"TR_stellar-test_stellar.py::test_sign_tx[memo_return]": "f7b3554efdbbf476956608cdb2b149757f3f87d05a8076857feba132c54de662", -"TR_stellar-test_stellar.py::test_sign_tx[memo_text]": "903ef9c3ff8fb09a9f10be1eefd55ae74a250d2101344b01040ebb32c392512c", -"TR_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "5284ca685a720a8d5cf7fea05924057571a657a97696541f984016cf75139ccc", -"TR_stellar-test_stellar.py::test_sign_tx[source_account]": "a4b0d9a35cf8abdd278b47cc26ad90ee5ffaad067f1845f6911411c5888acd61", -"TR_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "f871bd95a6cae6ba83acc351e2bc23c0d32bddb1a46702456500e956371a10b3", -"TR_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "09d4e09b215153b3da47dd8c4c54a42cc8beae6e2f469717005ed2d63a59ab76", -"TR_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "48a6baba52ec2e50051c7c9c9d7d153f5c747d3c41c4b5b2eec5257238ab84bc", -"TR_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "95b61e5185139d5ee5a0f652f390e0c2a605921f1e14e33fad21c0b1915aee69", -"TR_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"TR_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"TR_test_authenticate_device.py::test_authenticate_device[]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"TR_test_authenticate_device.py::test_authenticate_device[hello world]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"TR_test_autolock.py::test_apply_auto_lock_delay": "56e15781b06dd59696c03817efe7f8716c95d8b65fc0d3b0be3281a0901e6f72", -"TR_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"TR_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"TR_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"TR_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"TR_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"TR_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ef2f9b8c04ff989954c46942460c32e32125b7475c35e16fee2c15c121205a0f", -"TR_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "6d1ef42b15d88fb84c17b9b6830ee39eba964dd31978022c3dc0179bc04b2f45", -"TR_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "94946c6e986f351aed3af94ccc67166e08906ca4fe0f37ddb43305e3e945198c", -"TR_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "43009515b95e657ce19bcfc2699f6dac50fe18caa58e91eb8445a5e2d9d7053f", -"TR_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "bf6116bcf72754cbb490330b4d629121b6c271c275133fdb5137630db2460978", -"TR_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "14fc494814c65309be6a64d0c954758e3e4b459054b46025e4917a259e6f34e5", -"TR_test_autolock.py::test_autolock_cancels_ui": "1ee27abecb32d42ef8f9a3601a603e787eef338c49702f8c5e5bc30d4807800e", -"TR_test_autolock.py::test_autolock_default_value": "d810436f4404563b1a3dda410cbda2f42969ef6bc746b85fefc6fce2fe835369", -"TR_test_autolock.py::test_autolock_ignores_getaddress": "c5e41fe24ab50d93b40d5ce91a2b4232cef22046ea0d6c0e01603b01a333ada6", -"TR_test_autolock.py::test_autolock_ignores_initialize": "c5e41fe24ab50d93b40d5ce91a2b4232cef22046ea0d6c0e01603b01a333ada6", -"TR_test_basic.py::test_device_id_different": "0abb37c5dd2cc89e22f3952cfec9191413873c9c291df8c8a43a7c89f23b5fd5", -"TR_test_basic.py::test_device_id_same": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_basic.py::test_features": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_basic.py::test_ping": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_busy_state.py::test_busy_expiry": "0cff54da20c3c70d5b5de75a45fc265b29683fe322ad498f947656118691eeca", -"TR_test_busy_state.py::test_busy_state": "7bdbfa392d76bcf551685c356042ffe4463538e61e194c1381ad0eb70ef0112b", -"TR_test_cancel.py::test_cancel_message_via_cancel[message0]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", -"TR_test_cancel.py::test_cancel_message_via_cancel[message1]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", -"TR_test_cancel.py::test_cancel_message_via_initialize[message0]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", -"TR_test_cancel.py::test_cancel_message_via_initialize[message1]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", -"TR_test_cancel.py::test_cancel_on_paginated": "79f025ebfbdc5a81dae1385b17d2d802280063479c8480fa5281734fe1542385", -"TR_test_debuglink.py::test_softlock_instability": "cff029b728b242ec07f405a0fcd12a77212f0a28e9ec14f1b9e2db1b63293783", -"TR_test_firmware_hash.py::test_firmware_hash_emu": "5dde95f0c09df69cdb1e6017ff3269781e499f2c1894db677e1d06971e45d0a1", -"TR_test_firmware_hash.py::test_firmware_hash_hw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "fc78876e183a82d8099263e5b3858620f65f7842f7d31f4679dddcb045f1dfb2", -"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "57dc2b38db364a7ba43566c700ab27a3e98a08e64efc564db53b61aa6f4098aa", -"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "5f2cecf0c5bf0e7c8743a3a9f241149abf4a09431d21b801c6989c171208aa6e", -"TR_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"TR_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"TR_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"TR_test_msg_applysettings.py::test_apply_settings": "e84453642c927b2fe15325a109672814103f2f94d7b5d70a313d921f21b88a37", -"TR_test_msg_applysettings.py::test_apply_settings_passphrase": "5775d63130fa4646263cd26d47bebc87691344dafd9e849c9fa361a1ea7f7e6b", -"TR_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "caf5f9733414c8edd4f13800250d7d3d0d3a4012844b826ed314db5c608508eb", -"TR_test_msg_applysettings.py::test_apply_settings_rotation": "28c4463b15fdd9d455f2bd6f229fd22432bfe9ba48606602e2ff637b1bc7a6bf", -"TR_test_msg_applysettings.py::test_experimental_features": "0ac7ff5ebcc73c8922545b14e8584d13199ea0c5d0712189b16e24ded22e3c17", -"TR_test_msg_applysettings.py::test_label_too_long": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_msg_applysettings.py::test_safety_checks": "a34a867f1d58b2a29c5d1724378f269ce699b380fd2206cc8cc4c06bcb76565d", -"TR_test_msg_backup_device.py::test_backup_bip39": "d8778ebc414b075141007dd18f9ecf652338947187bb2f9770101ccbfa56e233", -"TR_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", -"TR_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "2292ff8faec75a418fcee48235a2333843fe1458b4e3ec0af673b5153574152b", -"TR_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", -"TR_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "fb35ceaf56b93785eb465f5f6b195a4db7fcb0db1cc6e4be32691f5a1a096828", -"TR_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", -"TR_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", -"TR_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"TR_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ea276d47a239b8389071eeed9fc51e962340f808ef642343fb30db48c8ff699d", -"TR_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3c12cf8b0abe61410de9eb830b922c2ef6154d3cc67a08c9b30f7f861d25293a", -"TR_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d9304c9e8f08c28b5d34e4e3575850febe0b6540e526a4a6056a6af16f5c9ec8", -"TR_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b0e4f94c4255c5dcbd6532f3b93481344cce89a44aa3cc186ad47c2abd34bf92", -"TR_test_msg_changepin_t2.py::test_change_failed": "ace510751a5c91022e21e3e088013ff4260dfb1c25732fac80cdc88345d0cdd2", -"TR_test_msg_changepin_t2.py::test_change_invalid_current": "c8a5fdc1a70727a9992d07f44d6dbdd9886ccddd99b3a50b41eb75a7e2c2647c", -"TR_test_msg_changepin_t2.py::test_change_pin": "a218c9db7f5567458053cf075cef32d3afaec724111c3ba9f23d53b468d4b0a2", -"TR_test_msg_changepin_t2.py::test_remove_pin": "9e69d8a6e72383d4b48af12340790bef5e55ed77821f80c7ac959522885097a8", -"TR_test_msg_changepin_t2.py::test_set_failed": "36a5cde2473ea82c5031826ea4c4971043850332ab9eca1020e1ea068e97e3f3", -"TR_test_msg_changepin_t2.py::test_set_pin": "762965944766f817ededfa4eb23166542ce71412a4d5c817a7bd0c65b974d3be", -"TR_test_msg_loaddevice.py::test_load_device_1": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"TR_test_msg_loaddevice.py::test_load_device_2": "caf04f8db960bf67885209f02f53bb79d5687aabbd63c1d437daeebf47ccea40", -"TR_test_msg_loaddevice.py::test_load_device_slip39_advanced": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"TR_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"TR_test_msg_loaddevice.py::test_load_device_utf": "c125e969faf756918c52c2452495b8cbc024d84484c40352dab4a47774a9de40", -"TR_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"TR_test_msg_wipedevice.py::test_autolock_not_retained": "d5b209e9a37b43744388a798a3c1ada135398727b8cdf91bccf074209fc3dda4", -"TR_test_msg_wipedevice.py::test_wipe_device": "0abb37c5dd2cc89e22f3952cfec9191413873c9c291df8c8a43a7c89f23b5fd5", -"TR_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0c1d2e8f1e4b43ee5071cf1d6e31c134297ba8315f1f4568765875438e7720f5", -"TR_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0c1d2e8f1e4b43ee5071cf1d6e31c134297ba8315f1f4568765875438e7720f5", -"TR_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ed4af0c4901c1f682a4ab2f7f741721265a0829d6eac91b3696f6c2c58eb8b0d", -"TR_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ed4af0c4901c1f682a4ab2f7f741721265a0829d6eac91b3696f6c2c58eb8b0d", -"TR_test_pin.py::test_correct_pin": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"TR_test_pin.py::test_exponential_backoff_t2": "3785284a7044f46b47123c8867801b989a81ea1d7fccbd2186c944f9049473d8", -"TR_test_pin.py::test_incorrect_pin_t2": "e0c34c861c8f1d9a1a4cbc0bd8c96d3ee05183631bb7b5161450bb90cb0e4416", -"TR_test_pin.py::test_no_protection": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_protection_levels.py::test_apply_settings": "5ef2a8b4abd91ffa462afeba9aaff358b280dbcdc2f9486505dfdefa159cc630", -"TR_test_protection_levels.py::test_change_pin_t2": "eb1e880c4ef5318605679e049636ec2999acd0f0bc6c8312ba9546e40c174ffd", -"TR_test_protection_levels.py::test_get_address": "5cec735f5e5577477fcf06968c197d9e3df43d2d2071bd6fc73822d28245f4dd", -"TR_test_protection_levels.py::test_get_entropy": "cdc3b72ac640e0e9307ef5c21a7c2df7f0e5906b6ff714e4e639c6c44802b0b7", -"TR_test_protection_levels.py::test_get_public_key": "5cec735f5e5577477fcf06968c197d9e3df43d2d2071bd6fc73822d28245f4dd", -"TR_test_protection_levels.py::test_initialize": "d22db62a01a9522abe132e6e4c1b69d62b7e74e7d558ad103776a36b71b02b6a", -"TR_test_protection_levels.py::test_passphrase_cached": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", -"TR_test_protection_levels.py::test_passphrase_reporting[False]": "c5a8172367cd2a97f9b446512c4349bc2e2e275eadc055114c3c9c2c0cc74055", -"TR_test_protection_levels.py::test_passphrase_reporting[True]": "ddf4eaf9c9d1d341cd484658135750b684ed31a7d77a5f4e6972fa8553bd0a29", -"TR_test_protection_levels.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"TR_test_protection_levels.py::test_sign_message": "3bfb26e19709830584f27aa1b1f114e7bf41cf15ca57a4ec9bfa618fcba80ad0", -"TR_test_protection_levels.py::test_signtx": "e8f34f91bacd50ffc4c446e5e381c06c18b2a376c2ca9a99c77dc637e806a90e", -"TR_test_protection_levels.py::test_unlocked": "e76b12522fd28fc08af0135271615d63a13a0ba9f013ebd1afe20ef72abe0803", -"TR_test_protection_levels.py::test_verify_message_t2": "5f04a88b0acc2daa3e87c02074a64969aeb34157006adbf15a3655e94f838bdf", -"TR_test_protection_levels.py::test_wipe_device": "bc06c63c7f5b9e7f0ada0d3d342125905b4fc463fb0eb2ba363b300909dedb9c", -"TR_test_session.py::test_cannot_resume_ended_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_session.py::test_clear_session": "c4ec976d3a6d21237c46f4bae10a16d792cda271feae0530cbe570b91fd81a49", -"TR_test_session.py::test_derive_cardano_empty_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_session.py::test_derive_cardano_running_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_session.py::test_end_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_session.py::test_end_session_only_current": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_session.py::test_session_recycling": "ed4af0c4901c1f682a4ab2f7f741721265a0829d6eac91b3696f6c2c58eb8b0d", -"TR_test_session_id_and_passphrase.py::test_cardano_passphrase": "909cdb9d1b284fe0a1a0f4c0cc5ba25c0ede8ff77caf7a820b5b00f606299264", -"TR_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "eaf5aeeabb4bec1846ff03e81ef95fc9cd12f949fa7c5ff4be4ffe1dcffb7416", -"TR_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "1e7dcbd0569b57c17d3f177ae48642bc262a581246ef0db9aea1354ad3b48a67", -"TR_test_session_id_and_passphrase.py::test_multiple_passphrases": "de4cd16001555d8cb75a00f1d1e3f78a0c7613bf5ccc3bdde28f9780a3c0c6d8", -"TR_test_session_id_and_passphrase.py::test_multiple_sessions": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"TR_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "ac3be5842712eb2d53b443d6b1d5a1189e481f94ba124e04ca75c61ad199473d", -"TR_test_session_id_and_passphrase.py::test_passphrase_length": "221e1db4c2a92b5b7fa232c0bd2ecec16365d83b544b22cc47526e59a0d9321f", -"TR_test_session_id_and_passphrase.py::test_passphrase_missing": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", -"TR_test_session_id_and_passphrase.py::test_passphrase_on_device": "033d6c8d27b79461137aa78d9a89acea049f52539bc0d898243e392514e36ff2", -"TR_test_session_id_and_passphrase.py::test_session_enable_passphrase": "69281f35174e284b0aa08b107bc7be6dfa13dfd7d315b6d15c8fb2677af0c731", -"TR_test_session_id_and_passphrase.py::test_session_with_passphrase": "94d8f4f0b384923e5e2e54ab0aa86d064872915061bda987c8bd042ebe80f5ad", -"TR_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "718364f43811e6e8366675fb29661438a924f5bd59a51a7c253a2297f902ce29", -"TR_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9208f4ca66bc8a7be9ce0f7661cab2d6f102500a0fe5214f6c2042a452b45299", -"TR_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "53928e3a3f32d480e096b063c6700636fa6612421dc3b9708db25e4b4c7f136c", -"TR_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "30a75b8ca64781e76af502045a34c2b08a8bbb96509b6de2991ea6b88faa1dad", -"TR_tezos-test_getpublickey.py::test_tezos_get_public_key": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"TR_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "bb6277c10508c66434b78c00900f69241924a8af5363416003edc338b3588ed7", -"TR_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "6d6707c052afa001dd326f7c2a75f8fdf1a792e79dc3dde0ecd22feff60b6794", -"TR_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "9118737aaebe86980f3f318413b2b4f8c9321b1ac157579dd2ac8b7622fefb07", -"TR_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "a7e4e8c2224855e3da7a46260e7881e67745215d44a0b5d26e791156c53871b7", -"TR_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "801b375b822b625a9da05c6ea900895503f580009258583ac3ca7246ac10825c", -"TR_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "3206320e637f68a3a43859df8976c52fb8a1011f9e8b0b673486655ad43ab8a3", -"TR_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "6f59a5800116f1cfb0bb3092d3a17c83dd15bb4046ef2ed0e1c5043e7c4d58f7", -"TR_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "6e0b5320536f399ee0e49307924453de1ac7592e7643a63e0bc70f5474bd6630", -"TR_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "2d4ca4d5951086bffa7d6ee400529da8a463483d01067f42731a3c6b0d838377", -"TR_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "7fe4eae75a497f6f58f6f6fd9c157d2446ef0b2e75414aa3d50dfe70092bd7fc", -"TR_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "3dccc92989c6a6bbc5a408d07cecba4093613b800a2d2e0c08ddcef549ec6f1f", -"TR_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "457f062e77fff8d87bd37c77ddbc719b2847cb1bef46799428966b64eb074ed9", -"TR_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "dcd41121e57fbb1386580b09b33f3e5ad9934aaa741061b5f7cb832cbee2c782", -"TR_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e8be8e0c3a7b9e565ebeaec54199fe8475a7b1ffe9dec22d001ccfb9ec4927ec", -"TR_webauthn-test_msg_webauthn.py::test_add_remove": "d8385fdba14ee5d71f75145ccd6574a736d2e3c3915acd15597cc40618b14c94", -"TR_webauthn-test_u2f_counter.py::test_u2f_counter": "097bbc8fb0ed96383c110ee6430e1d168d837ec110ba04d29179bb0789cdc3d6", -"TR_zcash-test_sign_tx.py::test_external_presigned": "234d3d65084105e95d632c69bd0e8624988cb98479f02da591104911877f01f7", -"TR_zcash-test_sign_tx.py::test_one_two": "f99b201fb591f2a94c4aeac0f41c509a78b09d6113833d995e312ff7e0953e2f", -"TR_zcash-test_sign_tx.py::test_refuse_replacement_tx": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"TR_zcash-test_sign_tx.py::test_send_to_multisig": "0a786b0abad93ef3cf66bdc60384134414e83aecf0bdf960c49a79fe8fbcbdb7", -"TR_zcash-test_sign_tx.py::test_spend_multisig": "f85e7c0dbe7919db2c8a599ba17cc2c94f90a29fb259546089fc08494cdd894b", -"TR_zcash-test_sign_tx.py::test_spend_v4_input": "eda208bcbe9c956ddab927e5189ae25d79a92f6c30cd1b13f281341f2333d18b", -"TR_zcash-test_sign_tx.py::test_spend_v5_input": "e8ebe34d69bb1870a8fadf3ed0fee90c228ede047b99b91c02331e79ec80d7eb", -"TR_zcash-test_sign_tx.py::test_unified_address": "704e29c0e444f569843ae894614af7f774580d5fd23fc8e0eaadec4cf71c794a", -"TR_zcash-test_sign_tx.py::test_version_group_id_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095" +"TR_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "c1c9bf1c7853d8e6b74d8c572987371ea54ebe25642ea6e4c9064ef8613eb9f9", +"TR_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "f0028d124184e632e0d73c0cf269530f7b9784a052de020d60af8de88499f1f7", +"TR_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "e99472465d5bc847a5fdfbae421968c24e71e82c15603c11f80884dcf9560199", +"TR_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "821e4bfc414d1da67b2d926cdbca8f6bf13753aa74a895ee9401f080f97fdc04", +"TR_cs_binance-test_get_public_key.py::test_binance_get_public_key": "7bf8ac05234675fc23ecbdac921ce689c46c26ddbc73a9abb9b64d540778b466", +"TR_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "5669f8b699a16b2215610b9c002a4b07689132da575f3ceb0c3c4e2ed25b50c2", +"TR_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "76fa8d4495823cf62ca6659db3184b9e07fd304f0ceaf27b9ae86d145b3ab4b8", +"TR_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "701c8d10d0e36df1f4c454d80c2ffc7cfb9a746ebffb3b6d87f5f5900f572471", +"TR_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "5669f8b699a16b2215610b9c002a4b07689132da575f3ceb0c3c4e2ed25b50c2", +"TR_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "76fa8d4495823cf62ca6659db3184b9e07fd304f0ceaf27b9ae86d145b3ab4b8", +"TR_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "701c8d10d0e36df1f4c454d80c2ffc7cfb9a746ebffb3b6d87f5f5900f572471", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "29c851fedaaf39c310b5e3eff3731d7f9ec32173cc5ed41b2565653989a67ed8", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "258bf35300577cde079a7fa11eb6a737f10a43ffe835c758fefe67d7c02ff5ff", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "90ac322fcd7b07b6888cc84b58651b2f38a0515e3b8fa6b89f30615d45e799d1", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "38393fc421320822c2aebd2ca65230c6d9e066fc45a170d0906bccbb3125218c", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "b3e4024c801a5e8a41294168a0bf2a03a512355482fa5cc2d6ad4a5b45af3572", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "b3e4024c801a5e8a41294168a0bf2a03a512355482fa5cc2d6ad4a5b45af3572", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "714e99b74222ab37167710a2ab5e6f1fe3ff7a2838b7cf49796d939e58903bb3", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "21cccb7cfde83f5464fd7579615e2ef8e9638d6a0abb4716d68df84278338077", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "2616a1ba0bf84c11aac0ea2e172ccaa6b31e2e7abb76fb5c6cf3ad6eae53dc5f", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "b1c8511fc3da6e62e8b33ea5021fa56cc916849475cb3626f90de218c203aadd", +"TR_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "b1c8511fc3da6e62e8b33ea5021fa56cc916849475cb3626f90de218c203aadd", +"TR_cs_bitcoin-test_bcash.py::test_attack_change_input": "e72170b7b70694dbd6d19f4d9b5951984a66436e8829c0bda6ba49e194004250", +"TR_cs_bitcoin-test_bcash.py::test_send_bch_change": "0d851582c259006feaa54a24f1eabe8c22b5141a6c5a1f66546b38df3db0402f", +"TR_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "d1a3350d4492df259c3601c1307cf73887d4704be197ea79438184065ea85183", +"TR_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "842f0fd8cc9c1d927c755c142661f9771c7b449b0471221752dbdacc468b04a0", +"TR_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "411f361e570f8a9b52284fcaa7b59c71494062b1f3a0299d312ae67ad9c48ace", +"TR_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "cde17ff6191eba2790f9a4e2f1ecd1a04cb9832b03f122ea098b7947de1e1efc", +"TR_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "cd8e86544b96fe5c920921246ef164816b78fb8d3872b1400c10f389c28c94bf", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "3c2bb122bf3a1b5840835d86bc1ffef9da20e4080434a0871617d45eeb9c81f3", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ce60eb4dbc006b193873fa1809e4c692628387055fff8cfdccfc023e022f0abb", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "1aa86d34d93490e7cef4b4d867ec0405c1c334be0b35cc84e932c7d964d31de3", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "1f95e54f1f3ac8865b4162ad5f2b9506235b90f2a04b80573e022174c69bb72e", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "c7ae7c69ae64e60de136d9b097a25520ec087505d329d76c3e20ced8a9a47e25", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "28e2d8fe854f6ff5b078e5cae24251f1a4c82a0781d80bf1eb1fd5d68cba4c74", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "b06e565362de0c47084516d01665b7c61937b5946d2008af23bacf953c3afaf4", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "200b615f8cfda41ec19520301e506d1ff353d0d9924d0ac8ac6dfd1fbb714a9a", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "27cacaf9fda8ac19a25b372ab1f1ab06b91e36a00fea0ee530dbab593c9a4952", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "e39855050defc2d3addf70d62dd5f952313549d23ef4e4914afcde8017eba15a", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "667cd3cf4c7f0c4ba7cb2bba77b8940da7b8d1e3e762fa106708e4c2919a0528", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "a49621ce8685b96b6d3a08a051b2ac7c22f7f17ee1e7d26e208354b8e38cd78b", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "c2754951ce817fe1d352c124e6d9fc4fd24cac1d4aca33a3e1f9f69efb2501f5", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "bb0621a03c0071c9f1ddf6ec7c1652fdf465bf8259c7398d06a39b1225da4331", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "29da55552cdd22e7c4e0418ff8ecda9070aab059b529d908bb6cd5848da1cc24", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "8d8d20f737d53510920425e8b0529355ea7d95f10bbedd9e8ada6fa6ca28fe5c", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "207c3fb4902f5fecbecec8b2318d504e6c7cd76dfd30709670bfe7f793e03f8b", +"TR_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "cc301e98eba0f7c9b3f2f6d0291685f61530e55b0a3145b9e039dcba421cf268", +"TR_cs_bitcoin-test_firo.py::test_spend_lelantus": "c0da2aed35ecbe58f7cfacf7e3f6e5cfe327e180fadc7cc5dd6b366a473b2786", +"TR_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "a78fc575048b66512e10ab817a8a9eed2e3d5f2d7e6b3e354038da4eaa44b1a0", +"TR_cs_bitcoin-test_getaddress.py::test_address_mac": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_bch": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_bch_multisig": "ab5c750ff3b2c278a1ab7d5ae9bedf4ac53a2d169642573826f7c5253e53bcfa", +"TR_cs_bitcoin-test_getaddress.py::test_btc": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_crw": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_elements": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_grs": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_invalid_path": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_ltc": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_multisig": "cd5d1f297570e7fc54a8fa3b58564e54511af18fc1adf5230ef0c6796cadeb56", +"TR_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "e485cfb8494c8bdbd0e5f51efb2150feefeb7c225fe2c3085105d768fb4d6338", +"TR_cs_bitcoin-test_getaddress.py::test_public_ckd": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_tbtc": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_tgrs": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress.py::test_unknown_path": "eb9298a014ca206e57c5a4680c857264cbf9e9e0991925e44be44864b6392fa2", +"TR_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "7f89deb54c154fe9ea19e4d02c3f791ad9f00d02e945ca0c32e8857ea2c23996", +"TR_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "e8d79791566f57fd62cf6ad2a4ce9bc907202b46aa84d07ed293f221aa8bf651", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "56b9348b32eb43da986167ec3ff5b9bc325908a4333ec2a8c65049343ebf3b88", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "b458cc7e22bd6fbecc7a06fc04ae79ea5dd188889c88064947bbd9fffae7844c", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "31083da1934de7eccc1b4b0d2d74864981a5a4447c9dfd0cf6dd11a7a7545edb", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "5d3b3c63c29b2e62953483db8a780d7bfdde961a8bce95f425cec2e832f8d127", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "5002c790620e044ece6ad36a0c49a96f994ad89a1bb9267ffc2b02cc29eb5351", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "4509c8b7d7619ba9f2a5c6f6f9fa2eff0418161ec6a01bd0c6f741eb8c792fc7", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "9bc3d9259ce517f59ed8e1393dd4b73028e9033b0b5873691c75463fa0f6b950", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "17a8b644e288108984cc4d550d320746f8c16e6934092dd06585faff0b28963d", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "2d0ecc7e548812dfdc35eeec577206421cc5e534b3d038d15752a57917cc280d", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "b25f98af765c6d4558274bdcd7d83b6d94ccaf4edb6a1a1926093f7e14dcb737", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "9a0c52a72d919cf9ad9dab42a6f6fadbef7b6dc8283776d56742861d6bc0fceb", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "8bfd91e9da08ce2f374814c5442fa95e0d3b9cdfe9c825d78da995885d1ceb62", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "8e8a8b2802b4c6ef2858cf473ccc1270fce2735fa7edb3c81b450eacfc89e677", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "b14735c94f25d41b4c346336fb6dd513eb38574c39ea085fc4068b868d95c387", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "9cfef8bbd0fbf490dcdc1efa2cc9d1856e0aa35d6d893cc4cee83c95cc37f7d6", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "1a8b26294594f6e6dc53ac60e30f089859923719fa0201d0aa4f79f10f319a28", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "dfa1bc118fe88f194fafed148c5b8fe3e40fcc850f04a83e353537bd7d712348", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "c7b5821a5979910f1edd2094290ef09d0b847b6a631d2617fe582b29e6e8ce5c", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "9a772ac319d7e9e6e7bab43b978300a745292a1f6f5f3afad20e9b811208e107", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "6c8dddd021bf131a6dde2e5456ae684991266c39a212fcedd7c995620ae996c0", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "37589b1b1f764402ff1539c655f48aef17263f9c640d0faf550b334538159ac0", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "d0876d46428b4d416df8fd31e4730b439c406e8d168828b1a704894a9853c3a9", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "d0876d46428b4d416df8fd31e4730b439c406e8d168828b1a704894a9853c3a9", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "c2f2f342962e77e65d957684af3713203d1664bf626ca0d0ba3659aa539ca577", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "b5ac1bc65f7c726907a54c3a829ff3810f1e85cb9cdb7b0a05efeb91514cbfe2", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "82e62e8896316bfc5d7abde724babbd6271e13fdd72b3d9b95370f8c673ac19c", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "a50ceecf262859713025098126ef61045c92efa9203b2987471aece77a4c174e", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "c3b7a5ada811d31955b7160c4dc53bd163ff83db6510727f975fab27be2accb1", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "de71430c4ffa80c10f667ce4392bbeb55c487d1ea0d69f35356ba91a1701db3e", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "61424c524b5def622ec9109b305f5940487db7810c15a8dc1198ebbe321a2b19", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "bc34ffdc8503bb32f54602a6a96b1d6f67f38a6b7589caadea4f01f7883d88d8", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "093b0ad7c76da7d864700a01a145b27a80844f0dd597fe409565cc66c43dd195", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "4895e8e48b51405df8fc26af6a5410897f21eeab5b06f7cdc1e0a0d824e1fce9", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "521cea9bd8d33cd01e79e9e6672f0454f43656835dfef755877dae29c66a30fd", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "c2c1f9830b53fffff3f12cadc824ed4f8c472b032a0f4b9936a8a68dc445450c", +"TR_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "00346541a92340a4a67a9cb85be06c4b5f0e7ae8e28f0455b49d0a9eba0fd2fd", +"TR_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "dea32e04838ce772610c83f536117b6b430ad3fa88288ddf1e8b18d24c5d2a55", +"TR_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ce60eb4dbc006b193873fa1809e4c692628387055fff8cfdccfc023e022f0abb", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "994ea45200f99114363e8e30a110480fd79ce6c22ac0d0a1ff20a93efb338170", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "c7aecbdda3268246a1a42e3e7c0382197e1de3a2161595d3715119a2d5260f38", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "8419e8b21a987dad29ab4622fd1b433a6de2f3f301b9f433396ef40253703a20", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "b15e92a2f7366440d37c0d9d76a8f98c0f6416ffb2e273d6677f590ee344aaf9", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "a8044d6a8c3485cebf7619b8cb249e72b78e229c05c47b42a3f367d8c5616e81", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "08610d19838a4c752391fe42ace86430eefc02359c1d2226390da77f38235569", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "8aec850408ac490f74c0173ede10349b3ced104e8f56ac1e30a455a4b29427f4", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "9a49f7d69e2f31e8545931f629e4f9766c8064b110838886ebfc9767d19e98ec", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "667cd3cf4c7f0c4ba7cb2bba77b8940da7b8d1e3e762fa106708e4c2919a0528", +"TR_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "cac617607cbbf97fe8e08c9aa0d2a7944985583a65814abca8b88b7aa7a1d93f", +"TR_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey.py::test_slip25_path": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_grs.py::test_legacy": "10b7cce5ac92066c867ca54604dd6cf518272577cc93c9ec6f8824d04e863710", +"TR_cs_bitcoin-test_grs.py::test_legacy_change": "7201164611ac50428fb7d2010130c227fa1a6a6179d8ea1f03219637025d37cf", +"TR_cs_bitcoin-test_grs.py::test_send_p2tr": "31ddfeac95dcfb6f8d36fd3cef210ab50bb5793c3db618c2982d5cc7c0dd89ac", +"TR_cs_bitcoin-test_grs.py::test_send_segwit_native": "cc6fa87f73c3dc4b2ae0b1bc9089bde504f6c3e1835f1db40063b1bf6917af5f", +"TR_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "5d9fc31d3956af1507115c80fc28ff3836af5afa5f7dcf41c23bcff5f28ecd36", +"TR_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "1e6647d7be1e8e2b3caa33347168ce3717ab0334ae18fda8e7c6484ef6df9d86", +"TR_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "7bac51b3d0422edc9ca101b93a14ea41620d207330201b86f8a615506756ec8e", +"TR_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "1244c592c91819b43e743fb5555c722776d69590a1bd1d513b0054669f485599", +"TR_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "2e3eb6c083276d6daf93e813827142e7dcd4e607e6762a114b67fb3642309659", +"TR_cs_bitcoin-test_multisig.py::test_15_of_15": "41609621e244d4e8bd1e9f913c63faddc810afe8a9ba918962e0618a41ffbe1e", +"TR_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "d31fd048434ea30e222797405ff806419a43f2b3463ea99c89ff207430411d44", +"TR_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "6e5100fe9aed5adcae796523ae475e7f6a9600911438835e4bb8164e55d289e8", +"TR_cs_bitcoin-test_multisig.py::test_attack_change_input": "0072a8ff0dd9c4455d147170e6cfedf314042d4e641ae2c1200580c42c9cdc9d", +"TR_cs_bitcoin-test_multisig.py::test_missing_pubkey": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_multisig_change.py::test_external_external": "1a74e6ed9bfad2f09e031e24d8818a7e193690bf41aa0fd83a439d2c07a207d1", +"TR_cs_bitcoin-test_multisig_change.py::test_external_internal": "f3abb792dd48e7475943d70f0cea9b0ac3671823c3c19db2f4b96d2968b51669", +"TR_cs_bitcoin-test_multisig_change.py::test_internal_external": "0e102927298f0bac1353b40805b83fee4f789e5e0d7eefca041fc1e058428d1e", +"TR_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "0f8e9eb8031efb2585c9c51b0b758dc3a914f3d6cd2ad4025b8d5760c558e83a", +"TR_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7ed6f2c4917b935d7134eefa3b5fd21bc7f6afaed20d34561cc2abeb02961588", +"TR_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "0fb3db1dcba63ede4e063947195db65f24bb988e870733236e56790a2383836b", +"TR_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "51d2714ddddc387001df31b161be881b8f87701fef386c42953eeb7b7c23056f", +"TR_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "6ac851334a2967c82db983c001852fe370a67596e247b39bc514376eac8cc5cd", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "7038e84af5897e29af25d33bf25025a61d59a13581b68e319999a25d4ee4d6c1", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "614a50710fdcb744e29f8cce405030e01c9216e690e809f485c7e704401185ad", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "90a003d473c1cb180d311243563bcc213aadb569bf2191f7c9f6049ea372a8f9", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "cf6d2a7395bcb13654a2447e793a6f1368eaf25099f84beaaf51d76691363a64", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "f7107747a34b1377dd1f0a8b37309403121c54a42ce2c45bb88a0e7d3e04561e", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "1a4d431e40b9dc04494c7ff10c47749b7abd1e1216d79777fa4615fbc1d34534", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "8965fd16ebc41f75d29a8f993f9818efbade8f112128b6fc788089eecf977832", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "233d2a22606066139ca1b1251e9a207a35a78756ee074b7727caaefb53e47621", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "f1e07989ce3c0bdac489b4356cd1f3d971fc938f2ec4a6bce3065aaf7be66210", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "ba016a0e670c6250783d9e46fcbdc7757d1a682b2f3725952a4288b889c4fc9b", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "dfe22c744b7f67ec57e04ad53ffb528e4662486480d026ddc0993ddd5faca30d", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "6ec87bb0c3a1e7b556a93001b2741ee791dc2f1093196508e3d9d5c2436cb742", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "97e8dc0306b8ff99eef739240f235d61c08943f12793308b1d84ec41f8a1ccc0", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "2fc2e33589baec9a4b9229fc8402f0fc61ba7c2d0507cc09bb4198d2378cff01", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "b1eabdee8cbaa3f1dd291adcc194a2c82c8b7acc538cd661df07771a0d908992", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "7d0e991373f6a53e685e8e13a38dd1c8006f72666c87f22efea59214de224896", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "a06b3a2cb764d22823ffc378f8c26d77f3e2890f365c7bfc1c11331cc70cb60a", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "09d6d38b14ddf703d29caa587d445c6938ef92d7cca938a4dec09d3b382073c5", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "1919549c87f795775743a172004b3bfff17352d5deafebd09354b1c27bb5a564", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f5458fb1e03a300b56e9868d40c014790e9503ce7804e07d174606c81748b3d8", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "b099b5d2a3cf3906a9cf47f35abd9acb78ab8dc6f49b1ae64bc724b52a1fa583", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "c2144cb82ab7305a965c446e6f911d3e68bb4e9cd5a1b8a23b69540528fadec0", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "dbb9ba815fba631842e94c8f3837cd896a34e58e880a395e43086e35d96543e7", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "55aae56dc266834776ac7613624ed9c929df224aa2b53f7a466e7d48c5cf5ff4", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "35510e55921ba4306be04ab1795329ded1b0331e0ad3d641e1c2ed76706ede9f", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "c801d2f87335d7ead6a2332fd5a2c46c1e2bd22abfe5ef5ddf0daef0b508eaf5", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "145eab32191e856ff87b934d30af6c763c81a035e4b32c31c443716addf96182", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "e365c8e3747603304d61e99b882d46a5d4a58742d62a9b2d338918ab2a5fbbe8", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "62faf3886fb6a4d93b81cd7d7397e5439f7df097033971edc31aa92715764bd2", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "77d2c514e671c8e2e33db5d9702e1c2aefbe5fd8ba66a9ebb4a1362f531e2b1d", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "b9858497ffb166a5e8d211dc7623ea2f4671250bdf69de34c42f5892c1423309", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "7ac63bf992e91a9758e312a49d10a21e7830e9efcfd14abf0ca55c508ee2b173", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "cf932147109225c9ea08aef101ee9b6ff0bd4706b715a2b40ee83f4dd8b74c17", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "67d00d7ce527c0e358019007ae81efa8fb2d58a2311cc61a8c1481512530e852", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "464745f21e686c987b0ef8276e772457576ffdfc402348dc4f78f2dee5499033", +"TR_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "bae4904fb6136c59c2272771d78058101e2559ef2249f465660b4658e0809310", +"TR_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_op_return.py::test_opreturn": "824c8738e16b3f045caedebb829134aac4099a05b71f56d68ff59b326734bb55", +"TR_cs_bitcoin-test_op_return.py::test_opreturn_address": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_peercoin.py::test_timestamp_included": "d30e660ee3afccde22c147f651ab7214d83572eb6d2286a538bf51970bf31202", +"TR_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "b77518908b2ce0b3a4b657f3a65322023c801d2fd12d45098561cc858ead19da", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d50bf87412a4e21eebfc4fadc2a56e4c2b2502e800fe55e51bb00df0ab15a8cf", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d50bf87412a4e21eebfc4fadc2a56e4c2b2502e800fe55e51bb00df0ab15a8cf", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "6d5f37e748d61e3c9ea68ca19805299b5c0e96d7ad75ea901f055235c7540500", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "206e54b17cd956a1e5feb5614abe652795ebdf2817a5bb585190522d3940e106", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "8357498e5f20fc353b47598dee28861485e76776ea090f89ce612a862aa2930f", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6566c4fc5aa4b0e14abc89b4b9608f3237beb06af1be5f04336112ba28bf3e79", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "16b7f74ad4e09105ba7a40b6f2e71761c79a93952e5f18956f318d6bdbdb91a1", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "1acc3a7cc712af6b9213a8c7d2c32349ae4ffbe35b1fe856a88ed1d2610a7c4d", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "1acc3a7cc712af6b9213a8c7d2c32349ae4ffbe35b1fe856a88ed1d2610a7c4d", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "770d8615e349e921473f85c1adbbe75edb3f3d7f849a866d0b490e6b3e8ff22f", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "044b9295c4f0dbe2972d5ab7f70b236ad08c281ba2ff5fea38e60e80eb3f258a", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "9dfa2d0d430cc4418d2e88b7f6529f0c91a2c9432c9796d98fbdd5fa9261ab84", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "9dfa2d0d430cc4418d2e88b7f6529f0c91a2c9432c9796d98fbdd5fa9261ab84", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "e54519dda9e76ee6612093d1b27cbbae2a0ee1b22dbfa15fdfd5437339b4c681", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "5569ea53654f6dc358bbf950ac765ec61e36099681a22c97c02d88bfc5a3ac89", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "73cbed6bfd1a41343c7278f14d584046b63d4f2578e694235fb24733528a3dbf", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "73cbed6bfd1a41343c7278f14d584046b63d4f2578e694235fb24733528a3dbf", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "aa2f285f6362a025bf0e17a9d32dbec6d083df845dc23d403f9daed8ae993949", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "9594e77efa1248002b98ad7fc9bf58472241780a15b00e52feee3ec0c686a989", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "e5a3622ed49d9f41276ced851af02d11690383f884171762e65878cb4b61bd62", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "c06db2f948c0e518cec1f993c8ba4ce7901ce87bac1de9c5a9641933c287ca4a", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "cd6c0ed22f58ef80969ff3fb7ae4b74024f308a7c702e6500ab3b840a944fdae", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "2876309223280228224e5886e81f4d4ba446607bea7126dfcbc065040d59b28c", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "3b69fdd8bfd85a63166a006619c5ef993b9d48f27b5d3e20c8691db373810bbb", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "794e974ac2918cbf2d3a7fed26730e2f432e31a071a76b464c06c7fd5c4aa486", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "6fa3f965f32305f265598cc2ef45d8e77af5a6457082b53e7832d2eedcf966cd", +"TR_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "c4a61573740c941ee7650965fca84304cd3e04e23077f3fa8e25913c20c96176", +"TR_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "1f47e4abf80c4e440a8a73e160a3f709c6403ce4ba0dceda00447596c9e21557", +"TR_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "fad3b47d457d36c6eb96cf371d97da32a1255426ad487a360b4c2c1e9edf4afe", +"TR_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "c3cb8bbfa3825062d578a0f8786ff8dd9cda14ffbefecb916221dc92a3ba2d95", +"TR_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "c3cb8bbfa3825062d578a0f8786ff8dd9cda14ffbefecb916221dc92a3ba2d95", +"TR_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "d6f01fa95e1d014ed9eeb8bd7f291d6dd89dc2017c39070008dc3089d9a17b91", +"TR_cs_bitcoin-test_signtx.py::test_fee_high_warning": "78eee417c6ef496a7d4af87fb4c1105ee05495dcd83c491343aeba6606063bd2", +"TR_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx.py::test_information": "f4c3e3d087994a1c3bdc3cacf8caee63695fe70ffcdbe8fdcad89b64bb03a6b5", +"TR_cs_bitcoin-test_signtx.py::test_information_cancel": "2dd47574e2fd9afd3015d14abb8d9858370e541b91e8d5a8606f85e1423a5997", +"TR_cs_bitcoin-test_signtx.py::test_information_mixed": "f267f6566cca5a484a4733befc094e98c4d5bcb9e0359a304bf30eec6baa2067", +"TR_cs_bitcoin-test_signtx.py::test_information_replacement": "b602094d838bd3dbe770d9c8962a12f87007518508a8db8b7072f3d2bf03034b", +"TR_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "a061cab70d5762b714f53b4fe4e694c95bb9c330b78ba8be9d4cdb38c384d24f", +"TR_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "f44e0bfc11a89aaea8d0786a7514eba6509f4da5fe3d6e0ef97955e721743f68", +"TR_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "3a264015cb1fbc8962c6015c5fa24da6ef9a5627853cc13a7288d516491ee027", +"TR_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "2fe209e33b1a8a2057602ad521213fc5adc7521d54a49153101c21b23f038a0f", +"TR_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "75198168dcf920777eb835b355a2476cf05cc153b83d9dcb49a508de6d57bca7", +"TR_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "bf706d36b8aec59d363fcba8d19a6a3e8ebdef3adb31621eb75e0f6969cb7738", +"TR_cs_bitcoin-test_signtx.py::test_lots_of_change": "a925e1e9a579f6133cd76b6c7df1a683f8caf014448ef1cc9331774f2b58fb44", +"TR_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "dd3ce30fb12143de08e2cfa498d05654cbcc412f164f3d00d2f0b227cfed6060", +"TR_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "a6c2c901dab8c8c7df7991a0110ea3fa7856e79ac611d3c28381a1615bf490e8", +"TR_cs_bitcoin-test_signtx.py::test_not_enough_funds": "15613c4a8e1f24364329c351d33b499f0506eb201a4e43dd3997d92dd0173f4a", +"TR_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "48ad797a3b4f4d43c21acc35df6eceec1dc3e81ca5d4941cb46a74e37e1399b9", +"TR_cs_bitcoin-test_signtx.py::test_one_one_fee": "37cdf32525d1d1c80c9ddc50f36d0bb7ccaecec01e19af86e6ed445813edfac5", +"TR_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "28a2c45de2391a2f75bc5ab074df083e73fec8ca3ad4e06f9331bc8b9a208a42", +"TR_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "f546e408bf4b2848e9a094d0e71f8b2dad1a05b62591ea1161a8e6156d8153b2", +"TR_cs_bitcoin-test_signtx.py::test_one_two_fee": "fb2dc5e79077d2ec331b7865ac6a1669bec877af5379193bc5259921a63b4c0d", +"TR_cs_bitcoin-test_signtx.py::test_p2sh": "5d29cf4e77dbd11e6df4d77619ad5ff4a510733e513b13d3d9680c76793f5421", +"TR_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "58cae5bcb80af87e0a4f4bfb2e826346e9997ad81906bfb0060b7130e736eef8", +"TR_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "58cae5bcb80af87e0a4f4bfb2e826346e9997ad81906bfb0060b7130e736eef8", +"TR_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "58cae5bcb80af87e0a4f4bfb2e826346e9997ad81906bfb0060b7130e736eef8", +"TR_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "58cae5bcb80af87e0a4f4bfb2e826346e9997ad81906bfb0060b7130e736eef8", +"TR_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "58cae5bcb80af87e0a4f4bfb2e826346e9997ad81906bfb0060b7130e736eef8", +"TR_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_signtx.py::test_spend_coinbase": "af379552447f865c38b5e2d6d693f82814a6b53ce170d0d0fd67ec13555adf87", +"TR_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "452816982155f38945146135e60ecdcd7bcfd61133cc01f90136f9a1a1c50ffd", +"TR_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "d6ad6aa6648dc801d705191cc68f0cf6fbed06615a823dd5a413d38d7d7580ec", +"TR_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "c3cb8bbfa3825062d578a0f8786ff8dd9cda14ffbefecb916221dc92a3ba2d95", +"TR_cs_bitcoin-test_signtx.py::test_two_changes": "db45bdf9efecfca43fd91815e2a3f3e99bb5acb52c222f4c46ae4b8acd346d74", +"TR_cs_bitcoin-test_signtx.py::test_two_two": "f4299a1db91523cfdd93b0bda9a882e2a18d5312720a12661443e96da142b13c", +"TR_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "37cdf32525d1d1c80c9ddc50f36d0bb7ccaecec01e19af86e6ed445813edfac5", +"TR_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "ac77ce336c969489f44b9dce1bdee12a4e82385ece9900727d846fce9d244a9c", +"TR_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "2a266525e123a4f72b20e791f70a4c0af2a90ed049e0a1929d2b2d4a53c3bbe6", +"TR_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "02e1bbcf9cf818678f54239cb579da3d97f2214886e6281aa5b49969493520c7", +"TR_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "37cdf32525d1d1c80c9ddc50f36d0bb7ccaecec01e19af86e6ed445813edfac5", +"TR_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "fe526629e6c7ea1d6d9e442747585f481cb63924d74cc9f22f83ed88bd8d7123", +"TR_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6f7210adb6e0856a2753e06d005b62f7b4315fa50cc4be3b5ef30bd840857655", +"TR_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "4aa99fd59460f7f02c8650f5d2a6db6cfaa637567290ea08f9fbc59d9afae2bc", +"TR_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "936fa10204921b59d027bfa3c71ee1b9a0ea399b72c711eb5f4bd6b2b29ddda5", +"TR_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "fe526629e6c7ea1d6d9e442747585f481cb63924d74cc9f22f83ed88bd8d7123", +"TR_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "9d7f769f9c80f22f21fca72d6e64e7448ca30b277ce2525a1b302f832a3d235a", +"TR_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "0e7b7f575cb7b6df7f84bf03edc3db8a42b7790a0cd1c9c07ff6ea26e043580b", +"TR_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "ed4129bf879dca3b0b80ca504b984cb0c79bbc848b19f8126574f4e8643dda2e", +"TR_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "0e38be6143bb18e370427d1ac1d13bafd17c3fc603c0dd1fe78ffb1492a253c0", +"TR_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "65801b7d2910295596ce6e808684a1c106dcdb3497267dddf827a2118233f0db", +"TR_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "b386e6ab9e57d6efc464e7064db5239a20630298dc5fd1ee4dcfea44cd619a16", +"TR_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "c7864e9ec5cbaa965534cdc843156a8d3d05770594954114025574432eea5e35", +"TR_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "171f900d065ee00b8629ce1097c4e10b7ec7c6b0b1a1ff0935fd69a0e2de3597", +"TR_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "47548c550ae01d1508e46306ce10be5b3043a7d19b4792efc4475a9fc5eb5f78", +"TR_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "3a5ef003310c94a656ed5a13488c5446c31f7887ea643d57544eeb689e5c9971", +"TR_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "0fb8a4fcc71933ea69c080311975a5a0c20eaf1afa6f1eb2e6a0defe35849f05", +"TR_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "73344f12c485151601e0ae083d2d9ee12322679c208605c2f3a96ab57d6c1deb", +"TR_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "2d0755017035680ae0ab1c8761580b1379cee5e9bbc0a6654db5553c9b086948", +"TR_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "f0f63ea6cbc5baa20b18a0a8dbaf18134fcbfb61007d686f4c039c0876708895", +"TR_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "2d0755017035680ae0ab1c8761580b1379cee5e9bbc0a6654db5553c9b086948", +"TR_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "1f06a64cc80697a021d6262b4764e694a1627a133c45b8d44906b615c1d42361", +"TR_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "abb323c0d3e75b336c13b277010b232d55dc2b305d574ca13315f3a6cd0a8a2d", +"TR_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "e2d66c7452ce4401c9a7d240a9aee6f77e1cf0cc0d1d83e33f173025c12ae70e", +"TR_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "372da36143539164794bd98d7790b3ecd9fbda687e40e802b70b720b27ab6085", +"TR_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "b2ffa896f3f97ba57b2a8c9287924f3d0dd142c374155002a7b4d6292839f721", +"TR_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "254a3b3775630f1f4a312d28f8facd357d6344a10a3c86d0f4f26bca9bd41d01", +"TR_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "f1fe6685ee597ae94627b323582fc5e1731042892d7fb393ab2b321b877eb0ea", +"TR_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "964d023c1a0922a121a8546db4e992ce7c0cf95679613e8e9d540121d232d140", +"TR_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "15d69c59b005a4e6312a0766b8cd3908d8a26d263623c0c885eba9de6531a12a", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "15d69c59b005a4e6312a0766b8cd3908d8a26d263623c0c885eba9de6531a12a", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "15d69c59b005a4e6312a0766b8cd3908d8a26d263623c0c885eba9de6531a12a", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "15d69c59b005a4e6312a0766b8cd3908d8a26d263623c0c885eba9de6531a12a", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "fe75fcfe16a6a588adfdf07843c91b3d9834af88b6ed5cf3cf28dbc07c6cf9f7", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "fe75fcfe16a6a588adfdf07843c91b3d9834af88b6ed5cf3cf28dbc07c6cf9f7", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "fe75fcfe16a6a588adfdf07843c91b3d9834af88b6ed5cf3cf28dbc07c6cf9f7", +"TR_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "fe75fcfe16a6a588adfdf07843c91b3d9834af88b6ed5cf3cf28dbc07c6cf9f7", +"TR_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "ca734534370e5e1120ad52489e080e876cc1e956092ba384646c200da261d3a6", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "031caec04f99a59628af156a601f5a524fdd7750907a046587d14e39b6a811f1", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "366872a60d7d723b5e2d7a6aa19a9e88d17869ced31a55fd861d559b0dc457e5", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "366872a60d7d723b5e2d7a6aa19a9e88d17869ced31a55fd861d559b0dc457e5", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "e3811e0077c3b25583cf5dfc8a373c324e73c830d4e994130f50e7b5e54a32b7", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "11d868e0b60ab1c2d58ec18d34d93d85e81bfa078e10350b0a412d69824d580f", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "18a8142cd496eb28f8957cf7323ec84fbc804b011f3256e310fa836c26c7d1a1", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "e3811e0077c3b25583cf5dfc8a373c324e73c830d4e994130f50e7b5e54a32b7", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "35cd4775f460d95f9c708ccd4e4e39e63754edb5b85eb677457ef57af8e7fa2b", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "7498adcb3ff794ecb901df3c30f7f6668d0fa7bea361b8052f64dc7ce891a2a1", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "7498adcb3ff794ecb901df3c30f7f6668d0fa7bea361b8052f64dc7ce891a2a1", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "7498adcb3ff794ecb901df3c30f7f6668d0fa7bea361b8052f64dc7ce891a2a1", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "5468c17d877aa9db97b29806ba9167f8edb309e1cf85f7d51f319adffa8a578c", +"TR_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "7498adcb3ff794ecb901df3c30f7f6668d0fa7bea361b8052f64dc7ce891a2a1", +"TR_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "5afda3dc7be87b9ea2f6ea157532b2f95de9c096150ed8122042fb99b6fd2866", +"TR_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "5297a1689715da40e910a55c96762f9b86a3933f045ad6d2c67ef69cb94606a8", +"TR_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "af51194e5f10e1d78bf56d515513f956ed107c32b3465a5cd04007e7f89a12c5", +"TR_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "852e594a6998ba832eaf30b957a3be4e0e6931943fc764f4ec74f5ff503fecc6", +"TR_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "0a2c956167e85fe53d3a126241d77c7632236320150ed71434cf45115876c181", +"TR_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "060f0fba3065ebf67e8529bde26f1ce64bbf63692d16c386f05ffb7215d86132", +"TR_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "df0bce6cc60f291a16b045f791ce5d0bb27fdec3e8b06ed4dc02a42366c1a438", +"TR_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "31759652dda22ba91d9bc5a5d3a98ecf4c7b260bc2099bb1bb50c89944aa7f78", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "11cc6363dd98b6b558d4b21f92d880dd318815daea99e2d39b46c06f4491ad2c", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "71a6fcf072aea4014f0ba6e31a98c9bdd26ede1fdd1f290001de0559982ff482", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "c973fd1d952184e1a28e1934ce8987c26b09f09e91c26af29f50055f0bfe7383", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "80637753220d5f921a0d254b7d7713cef94abb76a9b01d2bbdf7720421330b5a", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "fdfc2291d71f3e3f4d7a2979cba4775ab3511c570fb9a50166eec8d7c5c59db6", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "4d21a1a97f57d0cea51a931be34992906b6219cae5f70465216e42e62c557661", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "fe526629e6c7ea1d6d9e442747585f481cb63924d74cc9f22f83ed88bd8d7123", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "233daeaa80afa745e4c7c3691cbd8cf3d53aa7d29ae339f7f66caaeabf65a57f", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "153c6245424522369e74873e007a0180f3ee819704deb9ade4f75cc91e24dc9f", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "89b9677ea7a8cd15a063f719392f8cc5a552d1b41ce4dc754b70e1ccad1432d7", +"TR_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "90214f6152dbe95de45aba21a071b7c33996cd8980661e3aac013052a9fe8922", +"TR_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "01be21ba085b6c8e17c3929592a6633ae1249e2238351f89e234e3a2a8336adf", +"TR_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "e0bcb5781f279c9a5d47ad5ed347588193e3bf8753f01035be5681534e04bdd6", +"TR_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "db2712cad01591435deaeb38f1f9507f5f1fafddb87c9462c48bcd824ed45697", +"TR_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "3da30fcda2ae1ec8821b56a3a29942f2051be23b600fa2913d242701c573cd7c", +"TR_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "f49560aaddc2e41d1367eedeb975eae21df090978ccae84dc807b0fb46a6a16c", +"TR_cs_bitcoin-test_verifymessage.py::test_message_grs": "8a20b14e8ba85dff175cda2444bbba0af0e19ac9d304d044d0804d670246b090", +"TR_cs_bitcoin-test_verifymessage.py::test_message_long": "2dec0557319d09050bea2d9393afcc7c1208455cc261b535eaadc59d40f050b9", +"TR_cs_bitcoin-test_verifymessage.py::test_message_testnet": "0bb987f0d306de4dfae3bdd0f01e4b9346dd84debe3a891fc26f0b1623b91983", +"TR_cs_bitcoin-test_verifymessage.py::test_message_verify": "3246c2c7cc199bab3188c0dce1221c1faab2303dd7f7420f2e66d0e313f8a910", +"TR_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "28113d30d13426e956840ce32799cedd9e4f59815f7ef761bcae1768f6f41985", +"TR_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "7fac8c68052b118baa5031817a0151fb94981975090259357ee53fb6cb07774a", +"TR_cs_bitcoin-test_verifymessage.py::test_verify_utf": "5fe28167ca2c423972d8c0ab2f6d727fb5fa95ad89cc367307e3c12ba5f3043d", +"TR_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "4c0b6b64f08db9f9ccf4dd99259caa90e7bfd7c59291ba8f8940d4267b8441d3", +"TR_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "52b231ee27e2322f1b2377716f8860970868242d7e69e9a5c0003f497f39a97e", +"TR_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "b4093e5497434de6501e594ca79bd6ffbf6c4bde79210a1fadb452fd280ad4d4", +"TR_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "a1fba4eadff1e321a09723ec50ac7301a59734aa93b6b0f4a945226c0936dbab", +"TR_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "d49f2d111d6e8033507ceafeff41028f3cbd8d50745c6cbdabcabc3dc5d34685", +"TR_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "37d28745fcc3235ec4711935c34e0b3f3d49db30c97829335f1198aee4c3d7b5", +"TR_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "48c57012c80baaae56ed21ce3267f268f58b20e714d1ea3dea045a4573dd5199", +"TR_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "c76ac57a365c47ac90a675c307e803a987595e5178944f2d95f87f0ec44d7f65", +"TR_cs_bitcoin-test_zcash.py::test_external_presigned": "07fba93ea6c6ce31ca09fcf988327296d539a0e379c4ac6a5929a5fdbda7a72e", +"TR_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "28ffc43d6a2f3f69024722bf2b53da4c7c1cfcfa82f90e82a89ed65e1985ffc9", +"TR_cs_bitcoin-test_zcash.py::test_spend_old_versions": "4d7163f73fec8d2dd2c0f702c60c2a671b5e17ae372be07807f0a83b8e18e1b8", +"TR_cs_bitcoin-test_zcash.py::test_v3_not_supported": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "0e44ff8cdbeaac77c2138f7f5fad2a400b360bf16a3a004c1563d2bbb0098f37", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "f225f5d5cfbe7c5c5b62a2968089cbfea326f43213d5a53b5ad1edca35ffd3c3", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "7e90389cdd3e2e281b121f9775e639636bc6e2157672cbb98b4fd7ca347cb637", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "bc5c777a5222516f84ebc1ee3e847cb7fdda40e1466943750c7fc39b0f3d4cdf", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "e73e80ff4253020675d5350fa0a2b548e4493b11081cb03da7bede7d321453ed", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8c7ff69629959104e98fc586350a56479fd4826b34cf995714b0cc9d7adb5b43", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "11715162164e7825958147837ceb1b72e0d487aca6bd38c77785c8bb1770cf39", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "8c78ed92782ad2a18d7f749c509e89eb35ad12f177cb9e0c0443f354e594d322", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "96bb8661e1c742fda9b4357d063771dd33f932e7f1516aa37284028a7288e8b0", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "997d0564f601beeb0edacf595319423612da74e1eb94d817eda7747fecfbc7f2", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "4d1a94726d503aa7fd27a301325166244332395475b7154c2a2e16be3af5e96b", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "ddceed358fd92d8c6bf91c41012808360a2001aa92781aeaa33412314ba27b97", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "56c4c6ad8e5c4b4b208f913376d2778ee7d3c448da6b91f3bdae52df3c3b93f2", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "847081b050a75b6c5221e577f67c40eaf2f4b33c3cd90a0fc594a7a1e4c5b033", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ebeb14f65ee14564efbe8c08e4849435035c783c273e0b0fcd49439bd0bfff81", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "560a9bab7e76c1d321578b83320f349a47c49b3ca856126ba772fce17ad3f257", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "8ac67c05f905f26e19881c07c9a3e2eaa3a6c7f564879d7bb54a7793cfe3c328", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "15f4d7c9e285cbbfeb751719423c521977d9321470adac903d930a0c1953cd08", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "e857de038e8bdd713e980bc144841c65a23f7ec057b20e087f026f4c6defd81a", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "cbc56be1e837c0f9b915dc03dc6233df832a6f94273db1f54dfcf99fc97ab050", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "13a400b7918d01fd43f3ebaf854e7581b4454aa169fcd458236537bee52a3131", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "340e3b14964cd8ae09e6bdfd878c999b088127b16d84f70e1d89baed353e7f02", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "f4207d6549755ec91d455e67dcf219372f9f1da69f930056e4eed35d2ec8e8c1", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "b76751e4073a8c433afc4f24f556b0400863bfd25626f43e2bce80adbae592c4", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "0a7c3e4a9e64003cb444144997c5422ef8b41c6e078b7b30f9e4813b0c06ecd5", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "d34a2e53514c375f12cbf89c7a4289e8441ab98f28f296735e4a267862b0994c", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "5ff17e0b64058cb9ebc5776e235cf4df6987e50c24567e9bfdc08d80bd963866", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "d98f96f718bb0cd4d748086ae1b5f4aff363c96d3cd8a7ceae488d51038113d9", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "143eb4443dbe2e1985f75f38c70475ee659baef044ac13dd99705f0be26c592f", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "baf079a3939fa70ceb46709f7db53a1fee2dd0fb3bae4952297866f8e33757df", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "d7999b333fd26b3308e9ebf6024026704d200dcc2a70c4e9c85591679d331b54", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "49dcf1ee5483fb724f26a2374385746d00dc1f1a6c777e6ce7755dea91aa42eb", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "a1b319f43b529e9743d5c22902260ac267ccb6be5dfa9617ea46f7aae0a867bc", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "353ce4f08e52b6994c3940575e3b19a34148408b5fd3f555af660731bcb5d40d", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "83c0b1b8ea4f7d723bf845b6fd6ba9f603b63dc78eeb96853410bf929899ea18", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "de6c6188ab9d1ca018a654b8be76bfc0dd137dc0ea5485bb8565a64377e2ae5d", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d48f3e14fa686725a3b02053e64b8b65711a730c2ab62e2704e88de41e59395a", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "bbef97340dec99e61fbe1aae74077a1f628bef2b391f105bdc09312b94d1b585", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "419ec01155c43e88055397a65632db083268b59643470a7c225078107b847785", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "cde967eef9621f4b0dd4cf0ddd6f3e1cf8ef9284fdf523786e1de5e59dd48e04", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "6cf948501d23f3e19ddb7a0622b38b05b224973d499a05acc9ca5ba27cc4d8c1", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c56b2e5014f7de950e4472233b3944eb612d7c54c59257ae52f05fe77a827719", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "4931259ead53d4d8987a60f6c29891ff953ccce96efd85408d657074d9448372", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "e020be159484eed964af9389a159efd56fa1ba58461927d71e8fd273f21ebfd9", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "99c1fd5fd152edbc6be85eed2f3af51a94ab5296eba954add8a95b98dcf0711d", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "acc1a9420c5ac3a0231d0f1236d9843444d5200a44e2345863cb75abf392c579", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "e9c4e30efc4e2813f662bbfce0ab0563c55aa2e1b4da5e650eb21ebaba0a9278", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "26fa06239d1ed0bc9ef6dd79922fe88ea67e166a981060ca18ed376a47222c9b", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "db376c9127c29c9856325acd7cd64997e88b0b195a1942f261cae1d31cb29fc6", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "6056006c82d9d98f3096df47daeb660cffa9ee654c207b392ed1f394d59771e6", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "fd814719bd0fb778e89e46c36e6942e933515693026300c149023a260f490816", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "1f2134e5f859bf498a52afd902cef23c2e1c4f6e9ceb6ae704109a03cd5138dd", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "ef06e1b71f297a193fe8aeedb0a9eb88674b285852902935867795cbfa642dcf", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "4c05554db216577e2e88cba98976ba071c76906b90531a54179fbdc1cd59ec46", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "d77033f872ecd9e3711d5f9e1bc181bc5581000f52a3c37af11d6093e4d9cb6b", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "774d1b589e2c735ecf79cdee23a12a546767f038ca20353df4b20b39853a914d", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "a570a53bc91c4fe3398eca35ad3629abb8aeda10c2a8c8ef4bbe93b4f03643eb", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "355565b0dc354a7729bf63fbe921f2520c6cc71a3d9fd65df60487cfa299bd56", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "dc22fd89a3279505d96ae3a3dbd8e3dab94c0f243f9163374dad4bfa70cd637c", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "32637d7add9805cd7494f06b71711a86f5ac119ecb6bd7f9dbbb517bd76018f9", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "7ce172fac6d437a36a99d0442a78fa96fbebba3c4fd08f357308feb1170785e4", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "1cb115f89816381cc7fab395029af07bc1d27116aeed6db1fc65d70e49c408af", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "2991f313b45792895dedf31a293a7732164cc52e58c204bc2d9175ea6c3ce217", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "eab82942eb169fd0135424aa97707272126dca66b0476d6f2c4877de84f99125", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "d0b836df00bb4595a699df64a1c7ab071adc64f735ad2e6b1b3335755ef4bd82", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "e1c40787350d95da0f3e071674f502d9ebf1b35dfce55256230dca3675851bca", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "4aee762e55f08c511ddd216f8b4eba6410c26b40875e5c3e88c3b438eedc6251", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "063e031a6ba411582c464dc70303bbb699f93cc368d426e2ae1711f85aa0f4c2", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "873f14fb143acde74d10df79fc1bcaf3b1e40b7c4c96ea71835c4845229bc04a", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "dfe306fd8979ff89c0184739ac7f84700ec6fded06f92049580cf5e692e8ae2a", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "d4f7d4574227b1f15c6626066cff765fbc1bb555180ffffeba9675b135aa0393", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "d6a342b2e019204bb227138f1946e1741d46cdfc2b0eff41eb473662c4b208c6", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "b63309ff96bb1f92dfa5743f42ed1d04e909a585fdb20cba7413f968cc85d9d2", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "74e7582bfc071565e9177bfb33bf40f6790bc203a14f393027bee3858a86033b", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "1ce40b82bc79f9bbba1fa13a1ef821ddeef7a2a723e510a0ba8008c32aeb4f5c", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "cf5cec6b518064f255fc6a8be742e755449f18aed7705ae37055e202cc17dfed", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "127b7bcc2ab4b25c1437d73eec259884f83c1dede12c5810b2690c4e513b4e6f", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "76ee2785feaa7e50b0850e5d35628e0ba72aa5088cc298dd5cedab42d4d1c88f", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "9f51845f2fb24c324c2b2ed5ffe0a07bb39bf0e9b5427dcd0ce7fbc5a0bf087e", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8d4eb5c900ecf381e362ac53d4b38b4e6d99feddd4fdced90f1093c74a023a4f", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "e3908f62ffd03bf6a95b70d28a2668e6b04dc8632bba08ef73b6549dd7de0fbf", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "8f48bf8d017833d79340a9f691950ba9e7a5fb31062533645cc0f4497fe582ca", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "20a55832df844a688ded451a990631739e574e0f27135b9f39651303455edb70", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "0ec2abe6dcae3e9fb682b7caecae8b3b9d4a451639c5e666623abe8101485974", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "87e3941a10b62ab540370bc12849818736f09da468e3e6efe8ec82011a73e222", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "d96cfa13ad7212197204059beaba7e038a5d01477a070cecf3a036ecbcaf6e8b", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "04e62bb1340106d1df85732d059c034e7a6993d15e89458cd5d9330b15641615", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "febacd8f8750fcc5191e9a77ed8e71e79ba851d33172ff497f70479f349a4af1", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "f5f61e1c063506efa670eab0e45014a35c15f16d60e1f69091d48f8563e290f9", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "1eb0b22e60fe1d3a2cc561487fd3c79f5eaa5841f86c267975eeaa4212b72f63", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "bde4f58464a7a904045f496bc3f86f3e5d573b229684afdfd57f39cded7fe6ce", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "ff35504eb363c13c9407bac767622b8523807a1e28bea27253c2c273a641ad4b", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "781d9d1e769d646358cfffe2a61794ac1ca3089bcdf02a2513cb8043022412da", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "b3a08b029e2a0f0a1de19bc77d07ccf77ecb62bc875cf220fb71b7a945dd00e9", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "11147ac3a7a5664a9aed22286760c17fea73374f828eda793c8a09e605e253f6", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "39f7a1bc2f5ba7c50a9509019f3b29346bd469779975b4b8587c390251b47a73", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "521f979150b3ac989846cdc70b07fb90733c4d9f5a215fe3bef44dd0f7b127f3", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "62ff20955790965469fdbeb93c59392ebb24897501dd7d3069154e66a4003ad6", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "f52944b94b8b438bc57c95e46b5a746b4fa3b7f251a958d70a22f0368fd70744", +"TR_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "d94c2002ab19f20a2f414b555606b1cb14f52168233d663cdd9d517123c08fe5", +"TR_cs_cardano-test_derivations.py::test_bad_session": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_cardano-test_derivations.py::test_ledger_available_always": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "a4ea57070a6d883f49d19dc0715b9a4b48230d48528d5b1ca7a057048bba552b", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "c9728c1e89a928429fb984d56d5cb47b15aa836ff089be568f7350245fc7c4d6", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "9e34470409424557d954d3650e0fd2f38c07d56414148d91ebf4ca8be8ef788a", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "baad2101b8a968376f6cba115d93161ed88e3e4446d5c2df27f2a7b0b2002053", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "0f8f49bf21ee22db7bb8d4986edd067deff4dabed6c7eef3e6e535b76f3a963f", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "a518b9da33c59e84dbda920163db112f83d5fa1b75ce3836bb0841b0b6bd449e", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "b8e858bb5415df2d52ab764e6e2392d661dbf872e0feba0e117e5105b7a26bc5", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "63a815de49331da6862f7b779629890c5ac80821665caad2ab4a4b87a5c1aa01", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "3e5f21d2477cc7d783e638fb8cb831a32d4ffdf5c8f8d9f247cf4ec1222d0135", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "65d84c845245313d9a08047b1660dfc3b2d4660962018909dad86dfbdf7d9a17", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "5d087978e1fd4e5d8bdb5a185cf152baf3755d72dca13ceff2ebf81ebdfc3673", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "030049c67044e4036b61db23c42d1b57380f913dfd6f86f258268727140199d0", +"TR_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "54b1539dddfba4103bbdb590ce4e3e8066857588fcffb96bf36757c7ec0dd5c8", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a5bd575eae2d4666ec35a237ebbddd60c8356a605b85ad1112151f4e5cdc2eaf", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "70c4e11b7c02e53e65dc0c8e29b0b6809813e6659e65c4a0f72443764580f06b", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "74a17539b7e1ce6d0e486cbb210da24f5fdbb8f9b78c5d8123b08c833a2b67e1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "dacebdd20a045231fa09bec4365181b3b079acc244186be2c0c6d0bd9af5eea1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "dacebdd20a045231fa09bec4365181b3b079acc244186be2c0c6d0bd9af5eea1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "43e6afa0dcc44efa0413fb6147397ff5f866bd39d15c4edf22f0ea62b9f64397", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "5ad780a00a1e69accc4cc25e3fa07487c07c7fdf99ad7bbec136aad68c4feed0", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "1187eb36b4729d1ef90a8fc1cfccc442e4eadce06d1e9252e7fc207ea40f5560", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9573ca7548d5ee2c9d5a71a976428d5484004818ef3de05918ea67b17e8de3f0", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "354b74ab976f37e6f82925014f8758f7155fd1346631457f9954b821dfc63c76", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "8cc14e58d7181557844b87bfcc220293ea71b2eaa6b595f6087901e763f90440", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "34ab1f707617004c6f897df11cc4e64bfbc52be90a54272349437acf63d8024f", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "358aebefcd1942909ac1c940e2870ef9080684b1fa8521776d06c08c55f03238", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "aaee48021e404e4893f5ac88f136d02223ce4c51e4ba769b897ed1e58add9dc7", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "aaee48021e404e4893f5ac88f136d02223ce4c51e4ba769b897ed1e58add9dc7", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "769f051994d9809357789d2a2ec79b3e7670766a032f7835393a0432693601b1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "ab00a5ef2a777f484d0ebbcd237d890e7908df39fb0175a7bb84380df62ca218", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "4eada842046e4bb068dede9aac3c290db381126d13ff4fc62980a81da9e2baef", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "f2e605e9e1995cb213237593839e3949a11b94ef8ae29630a7d55cb40c163a31", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "061de619d1cb418399998d2ba117c3507e06d2a6aac6bbf568590f448eb39023", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "ad5d93eba4abfa50b533a90e384b0495a6cc82e9e140b76ad09cd8cbb1d9a943", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "5608bc7fe3862a4565718d9c85a4bffd3328adc8612298d0eb846a4b4925ab83", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "c41d41c29f6297ac8d808a9c59fde090e6a37f29ff758d0359a6666bd6437f1b", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "dacebdd20a045231fa09bec4365181b3b079acc244186be2c0c6d0bd9af5eea1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "dfda0ba7eb29f96abdaa0e3787d4f0fd43f4974d930a91a1d9386ad68b1e1af0", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "f2e605e9e1995cb213237593839e3949a11b94ef8ae29630a7d55cb40c163a31", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "3d1a996bd2b96616e1fe5189b2db7a1c5ce5c85c7b87038c92eacfb4e9b192e2", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "ad5d93eba4abfa50b533a90e384b0495a6cc82e9e140b76ad09cd8cbb1d9a943", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "5608bc7fe3862a4565718d9c85a4bffd3328adc8612298d0eb846a4b4925ab83", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "31b0d2c2a7a5d99eba5c62ef3928bacd9ba4538f6f652e026226694aa92727ab", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "f2e605e9e1995cb213237593839e3949a11b94ef8ae29630a7d55cb40c163a31", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "a7827d1f51bd44813fc57057a93d7126290d198745806b103494c9d408be1ac6", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "352b08876696379471c33e314d4e72df238c8cacf7c553ce5807b761b633c385", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "fcf9e0e808fd14f4f8bcbc46e302e373a0a9d22347997b0da53d83c09c125865", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "aecf2f45979beb522f8c07d202eb968dc810de9f8f2e68593caa49cbf6b56987", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "2c752fce105193670c1e51cb4553b1b63ca78bcf9c3f21992e47a5c006ec38ca", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "2e6a9dd071be5a45c7c9e5ecd993a7700eea91c9eb1395cd1a760dc025e3cd0e", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "4cd13823c4e5a3554ecf2d23247faa8187bca13b99108434e86c7307559e2501", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "d7c577cccaf6da5fccc4d0e54160b5ccfc345c985d3802a8c32181ad55ac0026", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "5eddffb497915533192c86d33bb007d64c57edce25584205c5904a0f3369ca46", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "83bfcf0f6401cf2a153180a8ff2518b685e4ea8ef5504e5c365a496350941cf1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "315cba9b9b59674588ee0892144094514601d18ca82f49a1aa2c54baf7a39f69", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "82307fba0680c1f6f4d6d6362b88e0c697132922ddef956fda4e8c1cb54d008f", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "bfef81806944322e6412bc23bd5278d7c27932762940c04a111a80993029c113", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "980c9a72acb949465d256294d9dab7fb8421745dd3759a7244a12120385d6285", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "67f5712e981f7664bb5a24106a966cf1d8600bd866c9ea7bcf2aee6b9f89aab4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "a98be2b781016c76c0c82a1cb7ad2731119dc94cab1edee02166026d3237effc", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "ce57d37e9cf43936aa96fe6af68350215eca3d632d47d902e8ebc38ee759cd9f", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "02196ee5503ddfbd1e741e3eb79309174b319284b999a72de01b606ff8341315", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "46f07daa1ea0ddb9dccb989cdf081a9ae86dd616ac5a95829b089f6b7c459d01", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "4bf6bc1d0b781bf227b3c11661a5d5e9736bf00eaec9c02a6650b22f8eb13044", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "502c7368fd49339ec2b2b8a2dfc0793b2aebdce50669449a743b2d1234eda6c4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "5fe684667eb218757ee7748cc6523bb069c45b14295211e862fb21c8b5a46376", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "5fe684667eb218757ee7748cc6523bb069c45b14295211e862fb21c8b5a46376", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "1a7f83bbaf514465d10271f8031ef994e9f60ff124a62699eb3846469e659dd3", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "a91de0c3097366bb28acac85d86b8b88f0b93a0ac599c2d519e65ab93936d355", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5a8bc90d13232f6b8e52371713542a9b039fd6fe9d6c8ee98fcc683661814624", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "07d860c560322b205b29412a5a3eeb05b3f4611195c6ed3574408c25dfc18041", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "1033b4df404477f24c2038975741f743f8bd5b4ca76906fb7c271eeb17257fd6", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "c5f8a2f015a9b6c4c51e2020f4f28026b7ab0ee74b39bc71abaa34883c8f91a1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "be1cdb07b85852c05d4469afbdea9a60306c6219ae1dd391bef8023f8653156c", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "345411c2336500c63e5fd208c00de48a3d89d8818b22757868af9824b9c0dd47", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "f2e605e9e1995cb213237593839e3949a11b94ef8ae29630a7d55cb40c163a31", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "5a03295d25b7ff339e5288e787eec3331f21248cdc33f0bc34aad840031c7642", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "d5767ea9232b4bff959957bf8dac424c3e279cf0ea3b52c56ec710ef88a1fba9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "9b30d27a2d09e4f096d0b1601a38fddc74f40d898d8dd914754b2b5aaf2ceea4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "b2f13c456de27c4b0800218f52e933c44e54d236bb42d30700e5e1384d6a1534", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "8daf6756170db8e616bceef65f89a8e617e87c14d03778928ac83f54686670a0", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "969f1583d789dbeb01710fec0cdf6b9b1f7b732304a236fcda3ed14d9ff8a77f", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "2d474632fb1245daff5a67195a72e795143cfa9e4f7ccaaa75234a1d0c7aad63", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "f2e605e9e1995cb213237593839e3949a11b94ef8ae29630a7d55cb40c163a31", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "13725b1e727029be84c08129ce736f65e27a06f10b0650312aefe301e1831c52", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "0f5ec4bb9d63250ceca190f40f9a21eafbf59409d51bcbdb929f323a29f2bf00", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "ba41aa53f05786a3294970c6923947b065b30985b25e91b917f022c7a304dbfa", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "b8771e3d0185c46c6540a516cda4f24bf9326b1e76bbac87dc53cbccfe6e8ce7", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "f0c3a768325ae89bfc8ec67b80d44b3382b20c61c8c4c588e63636507fecb6a9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "0e8edb4a1b0dff3633bceac8ce72f956327c3df6326812bc10a6db796af69fa0", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "f1052fdf72a54c6bad195f4ce633d9f6d9683e8be2abf4a3b82fe62adfbd14b6", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "eaeea6e6548352c44aab79e0390d57b74a6dc967870f428dff072e5c503a72f7", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "6e777c0f163a11824652032f3efb3c5aae2693e7a9f9b15bc448f4bd56812776", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "61ddaf62545a7b7a975ee80d273f81af5dfa0af5b0eb7c0f76a1a680fa3d608c", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "61ddaf62545a7b7a975ee80d273f81af5dfa0af5b0eb7c0f76a1a680fa3d608c", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "419bdb22294cb9f7533caa81f9feccd1741afa800700fae5034aa4a4245d05bd", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "53810591bf63e20e47096cb492e16bfc16702fa88c1552f7426d1bd52667fa45", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e78ba78e17c85cd709c075f2890d197f8ccdd293fbf709b4f2b6b8a6579d9891", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "a1a6e68ea6382653a1ce3d0824583600cb3b74e83a7a044eec39d5bc5b569473", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "5df63db88640596f73b2529ef9c2b00b5d741fef54bf2fd4214481cf495d7733", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "48bcb7a5be90dc0a7994f7d64efaba3502e5d96842b8d4c0a692ef096a4ba335", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "dacebdd20a045231fa09bec4365181b3b079acc244186be2c0c6d0bd9af5eea1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "dacebdd20a045231fa09bec4365181b3b079acc244186be2c0c6d0bd9af5eea1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "561de04629942fc2616a47820433fc3ed430757a8ac7be36d96357de6099f757", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "b17418e515a3078d57d762d25c37c27a1f2d0dff6abb1d81ed84e238ad8a48f0", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "13861cf20d8962f4d150095d56eeb9ec78e32095d8176cfdeb71ba65eab50c4a", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "a5bd575eae2d4666ec35a237ebbddd60c8356a605b85ad1112151f4e5cdc2eaf", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "9573ca7548d5ee2c9d5a71a976428d5484004818ef3de05918ea67b17e8de3f0", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "c0041b686d2c60d1e4286642d15e362e9d37251256d5e186c759b900b7e73b3f", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "59038e6cf685b3b4814ecd59a8dc387d4fc3a086f3dec3895b99c95295a61379", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "59038e6cf685b3b4814ecd59a8dc387d4fc3a086f3dec3895b99c95295a61379", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "31ea4b28d92eb2bf6d65f60fc16d32cdef4f8c799f4b95af27545a33a5853aea", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "7dfe92018e7bf71aaca5176ae367aa85e1f87e164e486b2743f188427c5c82e0", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "1a63b766f211edc617835ed8fc76d58e412cace55e68f43e80fc3f46ce9257ec", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "f2e605e9e1995cb213237593839e3949a11b94ef8ae29630a7d55cb40c163a31", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "31ea4b28d92eb2bf6d65f60fc16d32cdef4f8c799f4b95af27545a33a5853aea", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "31ea4b28d92eb2bf6d65f60fc16d32cdef4f8c799f4b95af27545a33a5853aea", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "38f4dcabb7cd1b480730b8c1a78da5ca69084fb013ad6d8d55879c86da363a9e", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "8bbbdb04270fe94fef99bae0493661c1989d7a32f1107154a77dfcacd7303302", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "9d8415344a91a5cefd62f1dcb7bfc93b1dc4990811327f516caeaf8cb7e392e7", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "a4c7a06c309b4a227f74bb4e1ea0398054eb22bd90104604c999e64d2d1e48f9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "ba091db1d4f11181d533ddbbe715e22cb4be5f7a8549a8a83266dfa7e7c35f7d", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "614f9952a1673a2b9c1c252410e356ff4dbc661a6909fe5bce8326ddc9ebf9d1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "614f9952a1673a2b9c1c252410e356ff4dbc661a6909fe5bce8326ddc9ebf9d1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "614f9952a1673a2b9c1c252410e356ff4dbc661a6909fe5bce8326ddc9ebf9d1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "614f9952a1673a2b9c1c252410e356ff4dbc661a6909fe5bce8326ddc9ebf9d1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "614f9952a1673a2b9c1c252410e356ff4dbc661a6909fe5bce8326ddc9ebf9d1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "614f9952a1673a2b9c1c252410e356ff4dbc661a6909fe5bce8326ddc9ebf9d1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "ba091db1d4f11181d533ddbbe715e22cb4be5f7a8549a8a83266dfa7e7c35f7d", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "ba091db1d4f11181d533ddbbe715e22cb4be5f7a8549a8a83266dfa7e7c35f7d", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "ba091db1d4f11181d533ddbbe715e22cb4be5f7a8549a8a83266dfa7e7c35f7d", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "8bbbdb04270fe94fef99bae0493661c1989d7a32f1107154a77dfcacd7303302", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "de998d9f4e9a290e34048d86d52b75b3fdb63db5fa1f47191c46c69a0ebcbe52", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "5764f5c420fd703e5e863d90d678a4fc329b2ae72b4f017d6996de6ae4efc7c5", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "a76619130dbb026c40a2b51aed1630c8ae4d9d14e8b3df672b9ed5536d291991", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "68be0f66cb355c7a51a916d33b3bfb868436351d4dbb83d39dfa1ea8559e2d06", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "6330a7b70c71787f0e8043268c9746f561da1c55c1628c99c18430a58f540326", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b005963fd179a51c803dc562e410d914016123bfa14c88a87bdd23717d687397", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "5ab49235f9d858a682179764b8f4340f35c5e31e2d07b5df412e47e594b835d7", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "31ea4b28d92eb2bf6d65f60fc16d32cdef4f8c799f4b95af27545a33a5853aea", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "31ea4b28d92eb2bf6d65f60fc16d32cdef4f8c799f4b95af27545a33a5853aea", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "8e05586f5cb941df7c7302bf757377f42987faf4fbf233c9079ffc272900a790", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "02cd30f64e4b1485cfc06f61e20bd3845673382dea273a86dddad880168d8c80", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "3a04ed54dae54f5990b21723709d2da9902fe9e08ff5fd559655530e42c4cfb5", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8af89f5e6ebf9f20f08e9bfd8613930af2df28dd1a0d44522e06311ded4b5d77", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "59038e6cf685b3b4814ecd59a8dc387d4fc3a086f3dec3895b99c95295a61379", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "5fe684667eb218757ee7748cc6523bb069c45b14295211e862fb21c8b5a46376", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "5fe684667eb218757ee7748cc6523bb069c45b14295211e862fb21c8b5a46376", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "f95b8ace8de06f96cf2e13b2569d7e8e5aaae928a918bacb55ba1443ba286212", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "5fe684667eb218757ee7748cc6523bb069c45b14295211e862fb21c8b5a46376", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "31ea4b28d92eb2bf6d65f60fc16d32cdef4f8c799f4b95af27545a33a5853aea", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "31ea4b28d92eb2bf6d65f60fc16d32cdef4f8c799f4b95af27545a33a5853aea", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "7cbff830c0e9625318c031c4b8020313ebd781760f8f09555342f343d7e1bae2", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "6166dceb45f7aa644353917599769c99a31c78d5185b3bef1a37794fd9cadab9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "f84c1d732848fe1f0eb8a8a85a95f6128462bdba77e07295fbd92edff5971616", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "6c65df249efe67ca5146a15031a90d16bbb7e2a03a94fdcdda54d61a0778fa6a", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "99c503880afd10a7d1d1725780e77f525a33c1a42fc90b7d4a3427479da958a4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "614f9952a1673a2b9c1c252410e356ff4dbc661a6909fe5bce8326ddc9ebf9d1", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "51ac003c8c6d24d22bbb0dc17ae5e7a1ccb125f2eedd3c314b54ee84aa4c84ee", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "ebe6dc9666f82bd4ff5023aaced6c9fd6c827b6ca85b3cb81625547fba559a5b", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "feaa0fe681f506c1e95a21f79fbe587de2ac3ab8227e74d8c3d761fa72acfcf9", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "b164db12723e758ab2348535942ba7bbf53f41d78009e3a6b5bf1ff0d60ae131", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "d7442c2be770e9f966fd62182ffb7f1ce338aa9592a759a41d4caf11b8f61be4", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "b814d3bca5b8b45b18da0e1f6a8c96ed034eca51b4efdd0cf5243fb2d71742d6", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "5608bc7fe3862a4565718d9c85a4bffd3328adc8612298d0eb846a4b4925ab83", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "99ffb60f29d4f81029a71154ac0671f241a36c08f59f2302ce55b2d836b6489a", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "aa98132b61a096e7777c02861571004081d2c565f68761c7ec460136ca574458", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "7163af5a1a3241e1cba85a7cae0c0e36ea38fe0c2e0af56dfc158d9033ba9914", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "e32c2a03178a65829cf89ffb9ea110ff0ce96d9f956e8fc30257971360ba3f27", +"TR_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "325757997c2a254b5b1a79d051821bddf3256531d2907780430ae779a11403f1", +"TR_cs_ethereum-test_definitions.py::test_builtin": "c4919ad46951bd5648108b46c0af9fe0baacb89585e08b2bf2d16d8d2aae3e98", +"TR_cs_ethereum-test_definitions.py::test_builtin_token": "27b4a482b4a9df5afe96f227f1e8fa49fcac682c9632369fea166aea274c9b57", +"TR_cs_ethereum-test_definitions.py::test_chain_id_allowed": "64806e3b2542d79647ad094b6511ac87ca2d376a7214372eaf00bc7a7ae36967", +"TR_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "bd8ce9eeacfaa723df4e3b400d932f1e3ddd146d3d1494333157697825665731", +"TR_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "b0a7ab55975189089ea22b404b180a55a9fca15f99d7b61721d43e68effa0239", +"TR_cs_ethereum-test_definitions.py::test_external_chain_without_token": "a0b78e5bcbd6f9f58d6d5f24867df5a0f473691749586a35758972a6d0425290", +"TR_cs_ethereum-test_definitions.py::test_external_token": "66d8ba89e4f73808b101394de42af3771100275ec4f91597c8742f7fddf68c4a", +"TR_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "e2aac7ade595dc9c5ab665b56cf30e2e4678227c17f685452dcaf225bb348c2d", +"TR_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "4c20f50a5e57feeb040f358fe735f5bc2c0b13c2225f0462372bc8ff9e98dd5e", +"TR_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "f15c301afa696971f1419c7c220a239cb56b9181004cc15f1a047627363f5fc3", +"TR_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "674541a7978723385061877c28de30bb5767b58ff4c68c91fe4cf8ff57e4e1cc", +"TR_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_slip44_disallowed": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions.py::test_slip44_external": "484b126f175f88e0bd72ceadcd4cdd0ff98e82bd5a417e9fd2f3c8d5dcea6a8a", +"TR_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_bad_proof": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_bad_type": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_missing_signature": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_outdated": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_short_message": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "defd2356d92abbe7a5e3481d1b21ae438d548055468d6c2ddbc8e8bd9965555a", +"TR_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "65f61caf3c3e23d308668ac904e9acccf64d3611245b515e7fe7ebe46a8cece1", +"TR_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "249b5718418d9d5967d2a4efd7365bbc4e05a8936cb3bd4a8bc08b20791042c9", +"TR_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "57984fa542ae0728509643b5fd1b36814e943f6fdf8883f87a8e91cfaec472dc", +"TR_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "f72ee284de612251cf8260e962ecccff12905b01a932910d511933c0ac4eb85b", +"TR_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "8cb25f751819c55614dccad2dc3f8a619010bbf50c8d8137992378de153da6c3", +"TR_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "9e9780e77bb8f708590c53bc7095f4de85c6444a6ec409020c240417b7ffa345", +"TR_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "ed5a88ad9e6578404a223b998b52000f62565a7a54ffc0615042abf0c66ce839", +"TR_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "bf379dd962de78839abcf2a052477f9a1ae8ff58cf2b498d18e67f58ff68bf51", +"TR_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "aaa29b167d2ddb1fe949b3c87e97ae662a7a71a9e4cd160fbb07d4a784249a21", +"TR_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "c7e40adfa24a9cd5d63d84129072fc6ddea5ee19a7d35e0b2664db06c147268a", +"TR_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "98f65d909d90aa8a96e36a6aa0adfba6e28a554e13776fb124355cb36dd1c3aa", +"TR_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "37f522e6b62deb2394720b3e64addc2014e4b0fb23986d66b8d880b5441b3b5b", +"TR_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "37f522e6b62deb2394720b3e64addc2014e4b0fb23986d66b8d880b5441b3b5b", +"TR_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "37f522e6b62deb2394720b3e64addc2014e4b0fb23986d66b8d880b5441b3b5b", +"TR_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "37f522e6b62deb2394720b3e64addc2014e4b0fb23986d66b8d880b5441b3b5b", +"TR_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "2255646845c1f7f66c3423548da6e11537f2c447b98c2d4af840f84c63909e6b", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "8223402e3fae1f97ab61345b4990bedfa3bbaa7ed77c162f92a4d904f32a05db", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "238d5e291501a6bab6cccd2840d783e294e4b560efec7475e2a8784e1b3462dc", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "24a779a724c3c73ab2c5f58e9f3caf37657788274f190d507098a0fd22a64039", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "8e05be59d164d0c83d5952d2eab9ec9ed5e763e8703bf9c49b83ecde03c69e11", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "fe530206b18991733810ecc4fe81dce58f47bfd3ad85f4e0b5869d9ed780ffe3", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "238d5e291501a6bab6cccd2840d783e294e4b560efec7475e2a8784e1b3462dc", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "238d5e291501a6bab6cccd2840d783e294e4b560efec7475e2a8784e1b3462dc", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "238d5e291501a6bab6cccd2840d783e294e4b560efec7475e2a8784e1b3462dc", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "b98945aabeebc28357c91af78a32ef6994165ce80f80a0acc4dad37cf84f8d0f", +"TR_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "eff227e1eb6461267cd1a1064e48daaa8944edc64cdb8d7a5e40b3ea7a3f2661", +"TR_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "f3d2d52ff4984e3feb606e5f8b2081fe84b5ace6de76249d95bf95d5c1d66ba7", +"TR_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "8c6a12681b6be44583d852aad7a92d8191bb60b21383a66d63a346ee44cc8e4a", +"TR_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "5f8ec56700ed81281fc1e0e9e345774386a43f39e066fc8576d23e57a7072d0f", +"TR_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "2a13142f26596842f55902a75860900ae8483df50add563616f23bb51ad7cb9e", +"TR_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "082af79411c91ea2da9c3567c5d61e07c5034c378597c70eeb27b7777e558324", +"TR_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "514853ef2fbb4a4b1060dae59ab5f62c39cd09e3ee3eca69b3da7106779fc25e", +"TR_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "0758645d1dce5a4ea32767ea83eddfee9defed47ed0940165ef232306d9f85f1", +"TR_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "bd9205a5ece6a6e9a6207cf50e3606810ff3723099b367a6309fcc85a34fb157", +"TR_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "3b27909e1d60be570082e23c0562620c5c446486fa9fe552fbffafd345dc4d3e", +"TR_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "d5f353837016251d020961ef2cfd404bd4f3c00e4c931622599bbc0c8ee320c1", +"TR_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "643b2184c14eeef1bd93c48e05089198b0cc9c71c6d7c80694ebbc322003ef65", +"TR_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "c64cbf50a78fab57fe3c4059788e8d5768144dc4851053f1008dd708009fdc97", +"TR_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "f4a0eef74207b1c9c7822c3954d1bcc7abad128f116b5935836b42819bff954a", +"TR_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "7bf97d008d9967b3184d76de731eef376690b33206cc63fbfeb1980bd0c34eb8", +"TR_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "46f71304780919708dfcf5a7c7a9826e5d0837a7c12da5cee4af239ef464eb64", +"TR_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "5f57095eff0883850adc59ab667e3de007b5a2b08b2f33e23b89e5ee215722b8", +"TR_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "58c67c4d008a4ba5f38efbf34b1af20c68ceddb3a2f8b55f3ef0da9b37546d45", +"TR_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "d5f353837016251d020961ef2cfd404bd4f3c00e4c931622599bbc0c8ee320c1", +"TR_cs_ethereum-test_signtx.py::test_data_streaming": "a5742309dfcaf0e84c4b755b4a77ba147d587822f54fd660b5865ae117c38816", +"TR_cs_ethereum-test_signtx.py::test_sanity_checks": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "664d3f94fbed41b11c2942b160e5e40d386219930a913b71a81745f9537a3688", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "acfda5870593c50a2e50188fc398c468dee3046741d6584391423814caa95812", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7a312aaeb8cec5c62de9d38337bf34ec688985aae8f6f06347f164387d2f6484", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "5700f683371462edc14d26d1a0487c9f35e3c29cab3158689ae80c2d7e53ab20", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7a312aaeb8cec5c62de9d38337bf34ec688985aae8f6f06347f164387d2f6484", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "664d3f94fbed41b11c2942b160e5e40d386219930a913b71a81745f9537a3688", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "664d3f94fbed41b11c2942b160e5e40d386219930a913b71a81745f9537a3688", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "134466cf22fe9dd9b51890b6f4aa11c95d6cac5e8e81d11da65baa372cf2b4be", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "134466cf22fe9dd9b51890b6f4aa11c95d6cac5e8e81d11da65baa372cf2b4be", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "664d3f94fbed41b11c2942b160e5e40d386219930a913b71a81745f9537a3688", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "664d3f94fbed41b11c2942b160e5e40d386219930a913b71a81745f9537a3688", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "c3120edb1e9d5269beb1502d4a4c9dd4fac87a6c0d95423b928af6e2007c230f", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "15dec9beb29b746cdb55308c52da87390b7ec1bf711cf31f23b9ea6b5d40a5f1", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a4f205f95de404152a302377040975dfa33960843bf6f22f847c19a934e56c9f", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "664d3f94fbed41b11c2942b160e5e40d386219930a913b71a81745f9537a3688", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "664d3f94fbed41b11c2942b160e5e40d386219930a913b71a81745f9537a3688", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "664d3f94fbed41b11c2942b160e5e40d386219930a913b71a81745f9537a3688", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "9754cdc58fc0e2f893650a277cf648b04441d0c65e7ea5e770888d54d61512e4", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "b9819cbba9f509c5b909d2baa95804b78244a979a7237a4276dac3ab6010236d", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "4876a960614dd7c4c6972cd2d3d3e7e276a32a6609492dd3c7a8043c4e53c2c7", +"TR_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "fd277e1a86f0872b601519cf98c1d145830738f598d7c2e883c61a01e1038438", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "09f19bcee0c731d2d130135b0a677a164a80206f8c37ed4ca9f44a61d4f91aed", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "2a47d3ba0fe633be30ead772f2deedcb1a01dc508496e065adfaad859c23ea34", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9c484e41343cad3e2ba2bb2f0e49e00ef0fe172f3ec883d0025ba31ba164f98e", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "45e2b8e95731ac3c0cee37331944e3cfd2a0ac6759e8261a9ef2733da3dbeec2", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9c484e41343cad3e2ba2bb2f0e49e00ef0fe172f3ec883d0025ba31ba164f98e", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "09f19bcee0c731d2d130135b0a677a164a80206f8c37ed4ca9f44a61d4f91aed", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "09f19bcee0c731d2d130135b0a677a164a80206f8c37ed4ca9f44a61d4f91aed", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "6395bd322ee900eee6443e03ec8fd39152ed621cc56973b432f3d31a2b4a5485", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "6395bd322ee900eee6443e03ec8fd39152ed621cc56973b432f3d31a2b4a5485", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "09f19bcee0c731d2d130135b0a677a164a80206f8c37ed4ca9f44a61d4f91aed", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "09f19bcee0c731d2d130135b0a677a164a80206f8c37ed4ca9f44a61d4f91aed", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "15ca69a9b86bff2faf53330a6343411f59ae133bf59088d5e07fc0332d5a9f61", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "4ccef78118015e8e78df2cdd31bae743d3bd7eb9ef6e22a3fc98c65e2e896f5c", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "dd944b85228eccabc2d257974448159cc09580c49f758ba1038ac05bc19f5dce", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "09f19bcee0c731d2d130135b0a677a164a80206f8c37ed4ca9f44a61d4f91aed", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "09f19bcee0c731d2d130135b0a677a164a80206f8c37ed4ca9f44a61d4f91aed", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "09f19bcee0c731d2d130135b0a677a164a80206f8c37ed4ca9f44a61d4f91aed", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "9754cdc58fc0e2f893650a277cf648b04441d0c65e7ea5e770888d54d61512e4", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "c6ad031e14d1c39bcb3b2d3ed4459317605268a95de1950476a356a03d84e96c", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "f6847a337f2f03fe84ca5a6f7880bbdfc110afbc84fce48664625f533d597706", +"TR_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "d13902ee3cb63dbf3424f9a453bb026454899536e374027a112599582c8fdee4", +"TR_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "7ca35ea8e4a3dcf370478676338cc800ac1b95830f7cc81e5cee39a458c70fb8", +"TR_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "871f5ebed711eb2ee17130ad73b9dafa5cdf51f2ca222eb91af8b34b2ed42b4c", +"TR_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "923a421cc20f4d32d3f70d2f858094aa13326ad2e5b4c75398f09c6d8639852d", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "2b4d529867d72241b326437f51c6ccfb2c3ac473eb8122f3876ad177c1bd588f", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "3bb5f4503bb8a3883886d799ebcc3ac18a7c6766c3b242be3fcdef388bad3189", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "f9231a4f6dfa4adaba32a4233625d19e52015d2d860199fea26147376cd0d642", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "1fa7d4f4f3198208bb2c69903e9334d35226e83756dd54af07b84241e018b279", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "d41d2147521e85e34d4eb8536e0208e7a6992b38d92ac31a74731986e14867f6", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "c91b60702f73f3fd2771083bbdf49b9e1119ec31a857da2c64617f4e745d9014", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "2b4d529867d72241b326437f51c6ccfb2c3ac473eb8122f3876ad177c1bd588f", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "0247b1f34030310d987b229c8bb59d4090d41c46b2e941bc81c97e4adbe28130", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "ae256e14c861e6c995c22049e79810d8d46b67462568650fe20d504fc1eda4f4", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "a12a65dfb227ab1d4ce6fb4bf26902d81a9da10289176f9129e3a6e6ec2e134b", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "8f9cbbac5d874408f79804fff40db9b31d8d1dc711f2ba87c200beefe962ba80", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "29f7eb5793a4176d6223461ad81b2d5c7f01489a80b1ba1533a5f36667ec1e61", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "45ca61a0b8fced592700da433f3d10e678fc34b9b08aeb08d520f9f196a201c0", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "0247b1f34030310d987b229c8bb59d4090d41c46b2e941bc81c97e4adbe28130", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "5cbd59e9edd2e51cffd5b2b9efc89168433912f0173faf165530507d89b11733", +"TR_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "5cbd59e9edd2e51cffd5b2b9efc89168433912f0173faf165530507d89b11733", +"TR_cs_ethereum-test_signtx.py::test_signtx_fee_info": "6ee91626a2983d9088c0998a1370abfebf24b903a1294accd10021dca30ccb2e", +"TR_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "6bbe0be38bf37a73e62111fda6caae8228cea3e1a07182d726cc3c27ea9bee44", +"TR_cs_misc-test_cosi.py::test_cosi_different_key": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_misc-test_cosi.py::test_cosi_nonce": "7c6676133215a5d782bd022e28bcb7c4774f4acc7b09cd9694264d85a4a51372", +"TR_cs_misc-test_cosi.py::test_cosi_pubkey": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_misc-test_cosi.py::test_cosi_sign1": "7c6676133215a5d782bd022e28bcb7c4774f4acc7b09cd9694264d85a4a51372", +"TR_cs_misc-test_cosi.py::test_cosi_sign2": "77ce2c6909172e9e80f20935499aedbf240222d121959e9a657b7c386089ff1e", +"TR_cs_misc-test_cosi.py::test_cosi_sign3": "c020ad20faa4b04d7f30b9f4b45aaa345091175c613de2fd9fe25a94e2d2a36a", +"TR_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_misc-test_cosi.py::test_invalid_path[m-1]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "535a0b8dabd4db1d2a34d0577db800c252424167975a2eede561883db60b2c43", +"TR_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "9147117414f69522fb5105fc5f5c8d788ac7d7b8a9c7402c95984afb0639e86f", +"TR_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "0f447e4bd1b1020477e8d1815b0014198f5854b4d8b12cd49f104d6b82430738", +"TR_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "8d818a5a481d2dff9808bc0f823c543b15c4449f89759b227f57782fb628c833", +"TR_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "01e00a7843ded7c2d42a9cfcfaf5509ec3239665acc3f961af8111ed834da6d2", +"TR_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "e24a4a15f87be2b008bf34e49e81cf98a6e1603308939da5762985a54ffb33ea", +"TR_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "c435bfda14e7210732fd9c89eca3863851ec65d92ae73da39fdcbe62fadde95a", +"TR_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "72497d6af6bb082863f4843bbdc281763eda5f12deb03fbbb5e557f0aafc782a", +"TR_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "00b6fa0d3080422ce4a6198dd9a2a59a8271bd6319a1d415561da6c831ec851c", +"TR_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2432cb2f0af1164e14f9fd8d709ae9c5cb0b45980f13f8be46058fc3b2c16efc", +"TR_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "4fa7cde84c5a952d82eb6cc2af5e0f7ec28f299ca059b532e64ee67bf580534e", +"TR_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "f16cde48750bf6f64e528dca98313e8bcf0ad5557fe78921c3a8e1134b903ccc", +"TR_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "fef88a8bc6ecb2d00092bf3d5171017894f4879b214a71fb3b4181c701e525a7", +"TR_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "67531c62b4c66114b4794612dcce8f526a2807aa00074faf51028dd41d510d94", +"TR_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "14594e56125577c54794b4d38e2707dfd42c298af85a80f7111b0dae8fc615ab", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[128]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[129]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[16]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[17]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[1]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[20]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[21]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[256]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[257]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[32]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[33]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[3]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[4]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[512]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[513]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[5]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[64]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[65]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[8]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_getentropy.py::test_entropy[9]": "59150a1e77e5e4582d4bebd3e0f16752ac1c8554e67cb875c98228e5553dedd3", +"TR_cs_misc-test_msg_signidentity.py::test_sign": "f4d5b9ccad52fabea1a03961c00e1687faf31319378d9ebe39cffc53ef03bd5a", +"TR_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "54e00620667c94e8b8bee3eee9dc4e0196cf6342ebfd597596f16c04963bf2b6", +"TR_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "106ba634969a797f231208c224721d13b17e5b9ea38ca23c7b3c0708e19217d5", +"TR_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e9bc0d83d6fbb96bc1f3734019376f16ce87cb548f38bf60209211c033978761", +"TR_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "9da4dc487b37a94d1f10c4675b2328b48effcd6f626bf217c2f7de0528c6141b", +"TR_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "1a83637e2c4052c2a73f46065389d7a10acc938bea2295a83bc04b578c83d62b", +"TR_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "5995c7bad44bc2810d3b4baed5974b857d503542703e92e23bafc69db304abca", +"TR_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "846e6daea57b63b6645908b49d146776ca545bd90cd1df54d5fff9ef44f08cff", +"TR_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "45840c6a5c66b09b35bb4982eb503eb9e0c0f542ca711e08bdbdbef1d8f9364c", +"TR_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "b75b9ce5181a3b52f2c5e5ca7490a32472ae0a0921010470af52f5747c812657", +"TR_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "59eb492c5042bb526ca48eaa26dec8b3dad2a1f11db52cd3af2a0c936f1bedef", +"TR_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"TR_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "f685356791f14f7846f7fbfc3ec1a97b02a646205dd0192a18d081dcfe18c22f", +"TR_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "68aaedb6886148b3105c8e7c6d69f5507f24fefe6c1f3b9179f46f3f639b8042", +"TR_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b9e6b682e72ac114840d7bad5d83cbcf3e19a78f0c698acafc1e20f56aa97b08", +"TR_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "f59b47ee415d3799bf5662f6beee1e8f2e827b408b1340ba386f4d7fcbad5773", +"TR_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "5323ef63b4643ceeca98bf4fa818f7480db20edbbc97c21dbc3af995e3fb7f7e", +"TR_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "ae8a4c8a85e32d51ea10acdc6dbcc0e224b8def26d510878684178df6c2f7350", +"TR_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "dea22e6025872c4a6ef31f80a8f803318ca1c86d27c561973a0a29db341bba59", +"TR_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "2e737be76e3d6e3ecf54467475ecb782eceb62fdc17a22263f4169c76f60b8fb", +"TR_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "83e2046f94493f8dfca440a49e549ca81d2ef6cbf06beaf9ee9718ac25d9e0e0", +"TR_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "2e737be76e3d6e3ecf54467475ecb782eceb62fdc17a22263f4169c76f60b8fb", +"TR_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "83e2046f94493f8dfca440a49e549ca81d2ef6cbf06beaf9ee9718ac25d9e0e0", +"TR_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "00a6163c9f05a077eb8de3abb9b960340087ed503868b309b8c72b13da78482e", +"TR_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c0d62c0571ad31f57ad755d6cbe5f0453040c5f8e604ee5b90e959ded3110c62", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e2b23c1a99fdc934197d4374c6f9e6b3357b604f01efc34d48308580e25785c8", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b9e6b682e72ac114840d7bad5d83cbcf3e19a78f0c698acafc1e20f56aa97b08", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "b4e59aff9fb0acecf3d56633a66067ae3fd48aedf0a9d22716e95fd8f51c4b7c", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "9a964e8cf8e40905d00883e72ebf64344d9062ed0c89f7078527ceddeda1815e", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "ccd1475cdd7e7cfb9dca2397b3a70159b56d85a977ef283096f390fa76104286", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "dbe41e1722162051629da4471a9c2bbff29f25473ad280b4d7e6a4fa1ca58973", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "622dca33bc94f55f1079e141f51b90e0e13db70e6746ed72c9944177b34382d9", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "328f300ae4beb5d404e551a0031539d6a23b0d9b64685aa1f76fec9dfee6b674", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "b49af9794e8071f6b3dbae4c733b330fd7d0e06e80fd11b4d9625df1f0788421", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0cd2950dcb607d2996d538c70aa5a691599fbb0ac863918eff89e144140032c9", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ed717821db8133de5fa86f77729b2223dd5447160e3e060626c49333337911cb", +"TR_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "75fb0339cc1a7e2e44e88c28a59ed6b28c29f0dea60cb4026babc92062ad2db3", +"TR_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "3ea2c656521149edab449d83da0b3839cfc2406279a3e25b103c951edf17f18f", +"TR_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "4691e47425b8a329239096e8c9160fde2f1bbea3209b8f19b8e20e85a910c3da", +"TR_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "69d29e07c2e9faf1fa36758d4d268b083926a1ff3a2a2915c84b79ab616e8719", +"TR_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "c704dcdd39bf86e535d1c0f6d99d14261b45cd9e522649bde985935ad2b0bc38", +"TR_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "781474d79cba8788091f08974372fb06b4cf08da8e2f0a37aef5d5a401250455", +"TR_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "fbab29ea837ba2f56bbd34cac9963df07a3d491c23e6a06b3a13b48eb6bfc4c1", +"TR_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "6d20977c56c93ab8b778212ec936e780b05d9a44e763d602b53a1989f43f71f2", +"TR_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "e8ac2c854217b377cdcc45b16eaf1d0ec929082875bedf535546108658ef2fd6", +"TR_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d40e11f061f9a5b5f2d1bbf9a8fe2616754b06cf73cbff3fa14a0032c88bd815", +"TR_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "c3df8bf9a0fbfc237d5c544a3adf6576164cb7d7f72e048cb214280a99ccf93f", +"TR_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c01591714749701888fd961e146fbe074be65057ac46e11776d12ef35f1b6a99", +"TR_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "24baa33a63a6a03590ee1eaf0c16aa2fe6b749605e567ccc6d5c2c1f81b4a4c8", +"TR_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "4df2c5cd12e818c7e3060ee107cc777d3cf10120b5732a1cad8c8bc1628b2668", +"TR_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "af1877ab92152c7e19e472adb6ca323089f2cce50175d104c8b0df02d40eb248", +"TR_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ed0e83be9bc13bdfb73dfbfb99ad769a3b85930baaa75bc72149c205f62faf8f", +"TR_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "bf1a0db87694d55b67374e02c9d6dfeb055c2d9220b8fc541ef26af03552080a", +"TR_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9d496ee40fbfcc524adcb04eee32d1acc3fda3f3cdc9e8d5a9b88c25f3cf8fe8", +"TR_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f9d86df73e7a5f77e747d627147b47cd0502bcc9808d0e52ca96acf29106a343", +"TR_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d3cd06d32763e40a776261852f1629fd219a4d2d87993ee6f5d608e5a103221c", +"TR_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "46f9383e1c29e0a73a9a84f9f84346524cc77580f6638cfbb00f639e5938b5e7", +"TR_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "f41154a8579db864f11047de9eebde338812d1669222f3729b9b4b7975d4e10a", +"TR_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "ef303103267c1c7c572279ab26bae761a056e99f3e5549354245c960b92d76f6", +"TR_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "0f20611359df493a63c426826ef2c359c69f7813a62b48f61bc26df06c7b45ee", +"TR_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "22578a1c48c4d2483c50cd0a23b20e394e558fde039f0eb78a66b67f25fb753f", +"TR_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "2a0bd7c97aa38a29d488c4bd751032110482076e4cfec184a8c7bfaf96817981", +"TR_cs_ripple-test_get_address.py::test_ripple_get_address_other": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a0cb924e385517e82794dd64615d0cff4be1d99c3da05e7c8d3be2b03058b711", +"TR_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "8844f83cbeac625e948ea14d160d97e58bd5b651cec132ff71d45aa5118f3bd1", +"TR_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "d226bac1e314beed87f6f24bcfd230c743b387f43f810dcb5a47b17a4327687d", +"TR_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "64921afcd26d83258eeec2a487dca7a3b8bd6c54d195bd5590a2691e771ef360", +"TR_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "e768d23bcbf7e4cdeeb6c0f698c5a04b47a233c134d0420901afe26832b84935", +"TR_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "233957e2155e696fbac8083a7ea760047495d5f3e8da43aa42f69a4ee492d7c3", +"TR_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "f4fe2a9c511ee252859a0824e6604887e534dc6e635ec916c56538e41bba29d4", +"TR_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "495c130446274eab743eee79cdea7a092ea36e074955d0a05aace32f281952b0", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "565472073922209f149aa5751e3c9f4f603cba5ff81973008022c219c8a7f62b", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "c0d10115dd8092aa716192547766364a633fbe7fe8e36b3abdcc63c6bc30cad1", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "324bfdb2013c9c2e4318e30306778939922af44bddc3f4a24165b784d93baf3b", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "e8769ebc99614899bdda6f1c9ed69a3f3cdae63e591aa5e5d5369c3b9928c327", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "6f4221c4a02af8d7136b470135a187300064a6ba8c1ba3ea3dd5bee4e0c462ac", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "0dd7110bb607198f0d947ab4d57898a3c2c3922dfe25d28e9c03d1bafeb76837", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "58c80e1187d78f0b3431e2ee4fb1c4fa0f47ec2f5aed302e464fc1eeea76c304", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "2c82aa27e692970768cdd911e6caaec0997e047d66d1fbcb7dc9053c2c18b2a0", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "834b3616c6a3f0a8b607d824b65d4217b723327551cf88bc58549e56bd39b81f", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "d532dfe3620fbdc08847f5ed59829d93fdd158a0bbbf3fc9cebe85b2f243b8a1", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "f64fd0290080e8061201fae7aa3cf4b389c61b9981688e2a1b82fba7615f3d63", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "d483658f5d4a2f7b76ffd0fce9c68140d823e60076afa6f8d2de3029865ae051", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "b14cea2b1f61ff7f90be684af41a0d6c32c6205bb34162354b132a9e1f02984f", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "4013735fe5432501b279e276524487ed126958ad8ddba29c79fb6a4078d4ead2", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "c8eaa2897e8574da69a7bfa4a775b436221d71ea7eccea9c04164dde9961a23a", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "f813eab5fb954591884feee9da0e0bb3a4c45421ec4b989db03b9bb03a8439e7", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "df4f20e11168d9b0d89ad8f69ceec254ec0a82ac442a949900b92a7891f5d282", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "5276b4aec6270a9861ca03fac0da94ac0b2c81c19b20a3182697998ac1958233", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "ea31a23bc48520e3b7b0d4411f6717ad50ca1ecfe86955af820df7061eef1fc3", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "e7dc914bd16ef07fc28fddff00d4336afc894a5d4eb648cccb372d65915bdc15", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "897e289c17a5dc996e137ee633a51a974667c0dada406832ae3893bab3a70dc7", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "897e289c17a5dc996e137ee633a51a974667c0dada406832ae3893bab3a70dc7", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "57fa086988998dddc050a213092e443d85d7ba1da5c4ac68d9aa1ce93e6b084d", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "6e5dd96a90edc7ce649afd3f3e7e7d5b6cf03749e9196aab20ba704d5b612772", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "c013117fa0bb9badeb122aa3ab5088e60b174f25119a1bed68856f9eb0c69ce2", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "951e4b2e6d98dc05c09c632aae8225e86959a74de579f9e2a47940e14e94554f", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "2742d27076ad945b7d4ca8b2130bbabfe78e637e861459f456c9a6ef5fc7603b", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "1b456efda1e247d2afb09d0af98a02321c5438818c621364a4172c8c26022137", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "08435a21d3a0001c45f39df2ef90848cbe85037d3fd06e7c71726316ad2289ed", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "88906480e685870c27968c82ddbafbd07a7c420995810150ce1ffe5a4681450f", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "2b8e81fbc4f5ef9f29db2f6639402fd502573e593d3023d15499df0def00e4a4", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "8b11f64b6d0f6658b64f64b59b57190008d2dc0eb8670adaad0353a94644a004", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "ff4930bc8fa196dfba1579f5c40557111672db92fbc3ca7edc4ca54d56546d5b", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "76d8f27ea522ab7fd637496fd3bf02ffd1648671ebaf98243fe87f1891efb589", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "449b017afd005ee02731099ca1f25acdc92c8fda2c8a7e31902c8911cb3d4abd", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "449b017afd005ee02731099ca1f25acdc92c8fda2c8a7e31902c8911cb3d4abd", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "8758943a0564280aec361d18df07ac4dd768f4062d232a17508f25436b1e8189", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "43b188f796d21bfd55fb65883ad87b271ced4e4cbafb4672512ee14fd72e0956", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "65ee7d339e5675ef42be787ad0cf4a1441d9ef5389666013b1500ea82c89b3de", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "1d9b6544fd0e5648a5ae337480e711e3682ec021244069f559525217abe865b7", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "5d885f52acbdcbc599c701ce971a340c3a3092c9a9ff37da08c787a490e247e0", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "fcfbfb3459f6c8d140c1defb0a9a84729247109073ddf464621f2d598560a2b7", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a7e9e04cf3b19648d972f1fd44e698194844000dfee938270dfa67822493da7f", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "017bd92deee8afac7175bd65dc71d6854bab7868815ba4ed982ff1e957e27075", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "43638f3dc5f330ff74f034f834642e95913648392e8885924a1f3a8314f42048", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "1e2379a6dd3ff507bd85321b28c79d56d365b35dd2b6f5bc9ed310efe3f40b5b", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "5bdc620ccd7edf6f42a297c2997faa7d9f276eeb9846c859220f441311268dcf", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "e048f7db7e72a4f79deb671b1a3ae7e4543a27e8228180adccd8a67830bf7120", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "04ee852dd6219f442bbc86befa69276d073179633a53cf42d64f1cf79f68430a", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "79ed822f240a93d6e45277cbd7c8f3103a609ef59cc4b71069e9eb72556e5ca8", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "d30f4a1bf6f35e862bdd84b2b45848f3f57ba23db052a2bd0a9cea27094ef620", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "251cf571a46c19978a182aa49e34e263512e32d8f78789db4ca154549dfbd8e7", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "8e30f3e62e646cccd8d87b7773f2d70461f6d47aa6ec78b798c2e59e5b0b33f3", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "067504b2af2b618f0428314bc3eb11c084176a8bfe6d5b711f4eccde8a26fef8", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "cd0cb9ba7e254b87e905b215405248690626b0239a566dccf4fcd7cd6d19c73b", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "103fc3d23cd0af9030630c7e9d928405fece974aec87cbd2c9c66497be84ba21", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "6143db3cb6b7c6bbcf71343e01c81b95bd4950589644e31750bdee46b442e9f3", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "cc4a1ad3b68c79cbb133386967c2f30728b02a6b5d1eb1d4c50033275ebf8acb", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "a97798bb62f3881db34794e4da957b6a21c1d9edaef0ac1fee796514f97fb9e6", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "bdb9e0f1bcb27ad4f4e14ae652e69f99670f7638e1b37712a0cffd429880b7c7", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "2fd47715a133aee8373daa370fde710314366dc3d1431e12cc8fa6911bacc8fd", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f9fcb4e1749dea4aacb45fb58173aa50233a83daf1eb5308060e2ccff9d07d26", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "5f0b33a54e07c18a4cc174fc0158d949d3bf9b3703f4bc33f26cc9c4185bc927", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "16f46ec6384072ce1b32e78cfcf376680343271b9169336272a76f031d04c7f1", +"TR_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "583970dd7b7a16fc351eb0cbdc5f70fce2a1ecfaebd1c8e68759cc26328adc30", +"TR_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "01264a69adfc4b36a81277315e9ce95faee0fc454d7896c41dfb38b6174786c2", +"TR_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "bd4921cf286cf4a0143e8536559e869b9502a52083eefc4cc9e0569fabc2e811", +"TR_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "96d5f2bfa5c4f15e6b6c4d246917e4c6ebee5910305ba3a8a454cb6934bef53c", +"TR_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "1dc10c8d7de389b3d2a337abfa32b73e8f776ee9f0ac4060a0e0d821ae2bd7c9", +"TR_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "dde24058b7da1d755f0d7c3fff780d43dfe83e676ac0642a904cdc44389e7f1a", +"TR_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "8371b3f138772889b0d956053579ffc7e53f72b60025620978f2e85e8ac51ec3", +"TR_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "c30b4416e93acf0a614c0290150c2032dc76e90e67d90e43557c243e875f6d1c", +"TR_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "3aca53c2d9310895ed2b2e1f4140608ed8e4d529c18282f949447e2eae8c2918", +"TR_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "ed7ba3eef389ee8201e4db7a1f09d81795dd861fdb9de29db4527fb94ffc12ae", +"TR_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "bba37604a20ef6868b6e0b35ac4f3ccb424430870a6b27d0a6e434201f30e0df", +"TR_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "0be263db8008ece393a3520118b6c24b7d58451bffa868a218120ae50bbccac4", +"TR_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "5a47e9d25facaf59969895aa4d42a1830be402951f1c804ab87aa809d0672062", +"TR_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "176192f63092ba1462f5eb06ac4fff793375e2fc3df48c3f9eac099a0c17f23f", +"TR_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "a435c1252faa32ed53b4ab4ea193d005c1d58445e7cd7bce8a92977e55bde298", +"TR_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "c208682d66d8dc65136b84195d87db35c0a594ff4f5e342221732b140aa71f90", +"TR_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "8ad2ed24a79aae4cfba72387cef92a3ce75e3b4c95ed4ac6ee5ec36545d1f3f0", +"TR_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "1b658a59e88b9898f71137f9f0b7150d5c34a40b846b3ed0f7608b8d15aaba9b", +"TR_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "5c3caf5747c54311b2a3f996540fe31dde05fe8c4af07b3c6bb14ab72aea1ed0", +"TR_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c1242d82bcaa1cbf92865af3a3560e9a052a512ef72072934d3636b4c5d1c943", +"TR_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "35e7affce822cec4c6ed3bb797062093ca338658d4cdab19fcf0befde1c55a36", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "191233f187b4ab69ef6ed73ac71898981d21337e519f89e3b20aa8622b4d43b8", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "207e1c957b1b3af2a0daa93c13cf73f36529f3da493c0c3083a48bf920f1286d", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "10d741a180efa099e937fcffd01e76934606d602c31e013b3488f6d611ae7b3d", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "48dd53c4eef0ed5b792e4649d027fdb055ef0117c88fab03d1412e428ac7fd7a", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "2f4641f314962dab710907b807d078e296ad7870309b27279ffdd4e36953d063", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "72b9876a5a3eed3fce495b91b241516dbbd6f973f143ed5d21a6475cd3f6e2f3", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "8eef2283ddc506afd21d9411bb249008293c6cd2b4749d8e0518f2d63df4bbdb", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "2302acde427537851eb302239dfbc69651b69b73b4713b1a3788504434f1ae72", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "1edf93733e9f7e2be58425afb773b52e457d52567eca5aaed9d68fa16af38ff3", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "f42d65d2211c06bf5eff722b6b681f6cf427a2def77927745c62e2928c0a147d", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "4e0dff62a7e33fbf379798151947b66b74a14c8f3cef913909905d8bc7affd51", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "9700e5d668f38696dc21bd87fe8100049b82dfd386dbbb141af517e325837ccc", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "24aa10e481ed977ab7e39bca68a906e73b736b5cc991fe2fc96f8c62a847811b", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "f5a741c70a30dc06fe1bd5efe77e72a44a9d717639ca7442825fcaf184aac7b9", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "30f9411463edd11bc77dad79ad23ff3ee4e1a174aa348f330ea4b9d3309c58c6", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "a65f6fd6f9674e5b26667c574037e7c75a24adbb1918ae4b29cf0898c30af144", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "11adf2276715cf50a5fb09e0571183d5a3cd4b916d5a493fe6d803d9fcba96e8", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "02c1ed0331aa677bce2c921ba1c6d3de3ec75b21bb713300eaaa3b8ea78b23e2", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "69149f13371a7144bdff4d5ed39194728bf8cd0fcbd192a4411cbef1c2afa68d", +"TR_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "a535ae852f2684bae51af41ee6864ed1ca973a8e261485c5f59519a0bc5ef10d", +"TR_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "dc901f56cbfa774e65165236d0293ea59742ac1d000e188e332cff979e647cef", +"TR_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "61e014bbd1bf4148e0e51c17af1cc16127cb6fbcc72b97654d00c9115e9fd4da", +"TR_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "3469a4da57ca610962c913a4ce441d6609c7b74e0783b32856b1f1695a5f3487", +"TR_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "14ff23ea8c4d40c1621ca71a951f544456a1825fd7d581972b5733532b3e0abe", +"TR_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a1a7f556f6f1e7d4bf2ff12f9b011265c94c27d323b3651b8d6806fadf4ebd89", +"TR_cs_stellar-test_stellar.py::test_sign_tx[source_account]": "82243a06808876083b7200114df672bf7a81e0a40e30b5156399ae66849d09f1", +"TR_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "c6725c4a26f9b22b81aad9e96c96649848b2529a3b88e8b048bef68c800d44a6", +"TR_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "74d64c32083eac2b209e22749bf4317140642ab2d3cf165cb02a0b3fce70046f", +"TR_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "b197fd4d8d175e721ed34af818b7180d8213840e55712109e3beef7cf93bc76b", +"TR_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "11adf2276715cf50a5fb09e0571183d5a3cd4b916d5a493fe6d803d9fcba96e8", +"TR_cs_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "c8ef0d0fdc9535aed7c2af7bc37f9947c45a5c0dc4ea2a598961fe4c9de758c0", +"TR_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "c8ef0d0fdc9535aed7c2af7bc37f9947c45a5c0dc4ea2a598961fe4c9de758c0", +"TR_cs_test_authenticate_device.py::test_authenticate_device[]": "c8ef0d0fdc9535aed7c2af7bc37f9947c45a5c0dc4ea2a598961fe4c9de758c0", +"TR_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "c8ef0d0fdc9535aed7c2af7bc37f9947c45a5c0dc4ea2a598961fe4c9de758c0", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay": "98e2f18affb118d3bbb74fee6ec28cd1c71bf1a5af3eae0805da2fbf0616f625", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "ef51219692b2cf1fe3820101863ee27ac9e29486d242654bca2dd0995a05f77a", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "ef51219692b2cf1fe3820101863ee27ac9e29486d242654bca2dd0995a05f77a", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "ef51219692b2cf1fe3820101863ee27ac9e29486d242654bca2dd0995a05f77a", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "ef51219692b2cf1fe3820101863ee27ac9e29486d242654bca2dd0995a05f77a", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "ef51219692b2cf1fe3820101863ee27ac9e29486d242654bca2dd0995a05f77a", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bb3f63f624ffa7ca08a616317820cd843e0d4dc5963b44c178f3ee4419a4f274", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "d63b7141b0829c5338e2442864fe63c70474f9041727e8b7697944230d480268", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "72b6428a3d26cb763d48ed7c59eeca919783e8e559c7a875482068e3d7c2436d", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "573eab76977f2d762a9741e553f18412c84747f01aacc393291211486ed9ec36", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "57106383d4187af3d6e9fe40ec26524c115ad4b547082492412692abc65825bc", +"TR_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b3d48b3a9ed8d52ae4cae3ff42c5675ddb5a10e3be5d9023aba8f9f79b4286de", +"TR_cs_test_autolock.py::test_autolock_cancels_ui": "fda37eb39072d36423ab2de523d05cf5f52eb8e681750b8f9f4ae0e2ce54284c", +"TR_cs_test_autolock.py::test_autolock_default_value": "2cf032b5e7ea2994acb9e0121c1e10dff929dc572a5a7528cbf29b49110a5ef2", +"TR_cs_test_autolock.py::test_autolock_ignores_getaddress": "ab650843258bf8e5a11970cff721f85c7e32bb032d14c7e8fd73e7d8dcbdfbac", +"TR_cs_test_autolock.py::test_autolock_ignores_initialize": "ab650843258bf8e5a11970cff721f85c7e32bb032d14c7e8fd73e7d8dcbdfbac", +"TR_cs_test_basic.py::test_device_id_different": "bec90ea7be13f6437adf5c70496bb66def054ef2919d7b9ec3a131e00acfea6f", +"TR_cs_test_basic.py::test_device_id_same": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_basic.py::test_features": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_basic.py::test_ping": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_busy_state.py::test_busy_expiry": "e3f54edf320c20e9e7c816ec40770849c384dc20aa175eda073e6369c17b3b30", +"TR_cs_test_busy_state.py::test_busy_state": "b326ba95448d1e75bba9aa375d3545f03a1bb9702aa5021914a555306732fab5", +"TR_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "87bf53a66c61bceace665d8492f2dd6e2e1e821c94b55de7ba90632881b55005", +"TR_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "87bf53a66c61bceace665d8492f2dd6e2e1e821c94b55de7ba90632881b55005", +"TR_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "87bf53a66c61bceace665d8492f2dd6e2e1e821c94b55de7ba90632881b55005", +"TR_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "87bf53a66c61bceace665d8492f2dd6e2e1e821c94b55de7ba90632881b55005", +"TR_cs_test_cancel.py::test_cancel_on_paginated": "082875ded21e32c3c79c4f87dc72e43b267ebad003f9e33eca7e4407f8906d74", +"TR_cs_test_debuglink.py::test_softlock_instability": "ec8914818b334f60fa41f7c1aec08cbd1bd1892769fdb15b4cf31372a1aa75ec", +"TR_cs_test_firmware_hash.py::test_firmware_hash_emu": "c16fa36975e29218b18c72e53e4dbbdd8cc2154af4bc59473ac19d9f27f213b0", +"TR_cs_test_firmware_hash.py::test_firmware_hash_hw": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_language.py::test_change_language_errors": "71a89aedd03ff90c662b0190e0d467442b9ba8f75b42737c50eaf4d69817c6fa", +"TR_cs_test_language.py::test_full_language_change[cs]": "99d0b7bb982c85a962e32412c4c6453c6aea8b82f5d73ea2c306e1e8a831dea5", +"TR_cs_test_language.py::test_full_language_change[de]": "10c2ee3fb2760a772dea7bcc194f7362acd83d0853676de9721cdef7aa389335", +"TR_cs_test_language.py::test_full_language_change[en]": "f88a93b5fc559b5b3ad60f8db835f0c887fa6db9ef7532066d6dad96c5efac83", +"TR_cs_test_language.py::test_full_language_change[es]": "b3a92849a6c67941e062998be8d5e77d7df252b96e7e0aedb82202d910f00555", +"TR_cs_test_language.py::test_full_language_change[fr]": "2d9533824d7a87bb4a236ef3b19e8549a6f8fa0b5f33f22128dad89688315790", +"TR_cs_test_language.py::test_language_is_removed_after_wipe": "3fed5c087d565830eae7c0647a4c1ef9350595f550062ae575a97f50cdd7d826", +"TR_cs_test_language.py::test_translations_renders_on_screen": "be601d81b272fa966d1392ddf48e8ed522fcb4916bdb9c712a3c1c06c9ae553a", +"TR_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "d2e9ddb474a242c5bee49b3647d1151c3b078976b386d9a6408ddca8138096f3", +"TR_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "e54ce8daf0f240096612320da0c75a794bcc021bf17d23b0af1a7ed2036443b4", +"TR_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "d3376ab1456fb3f4a2dcd4923402b89a3764ba0a9c75a2fda347800c897b1994", +"TR_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "ef51219692b2cf1fe3820101863ee27ac9e29486d242654bca2dd0995a05f77a", +"TR_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "ef51219692b2cf1fe3820101863ee27ac9e29486d242654bca2dd0995a05f77a", +"TR_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "ef51219692b2cf1fe3820101863ee27ac9e29486d242654bca2dd0995a05f77a", +"TR_cs_test_msg_applysettings.py::test_apply_settings": "9a3105eb716a33a177246197339493a1e921916522c79087c1b707e548ce7fec", +"TR_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "e964ccdc0f58d0d74a70493f7a727b5b991b91f94a8a2472f35fad0c6b82f3c7", +"TR_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "d8fe25c622e3fc350c0402d8b98b85ad6cc98d026a91ca8df5dec5dc7a7e2aee", +"TR_cs_test_msg_applysettings.py::test_apply_settings_rotation": "4846c3f83d2f1c7df8b2a079d5c928d8182df5259e79b84370893bdc5bb29e6e", +"TR_cs_test_msg_applysettings.py::test_experimental_features": "a8d21c24aa66e5703fffeed971ab22b1fb031e71b6ca9397bef9f3216c01eb06", +"TR_cs_test_msg_applysettings.py::test_label_too_long": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_msg_applysettings.py::test_safety_checks": "1198896f5f97d6f3f8beabb6ca4b89b3c711ff18a84332e42039fd2ad5bf5457", +"TR_cs_test_msg_backup_device.py::test_backup_bip39": "e99960de677ec19158b831112919e851e2b75d219e13f1aa5146eaa11db38f4a", +"TR_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "bd3f74df2c5f33af96149c17d9c7b5899ab7feb6b54bdfb1298a294b10b1e188", +"TR_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "a4dc01b9bc0d6d960510b395e7f42cfb6999a3e828d9eb9d643ee18eee3745c2", +"TR_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "bd3f74df2c5f33af96149c17d9c7b5899ab7feb6b54bdfb1298a294b10b1e188", +"TR_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f9b08973ff9675c7586dc3637b6f38bdf0db3f264959d49905232e07a196d4b7", +"TR_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "58f1bbc5f4c696e1c4825fea6a482c85ecc25f5f804e487dccdd5200cf505711", +"TR_cs_test_msg_backup_device.py::test_no_backup_fails": "bf068987e576428e6a6ddd02a1cf8643c0c82ce119094bebeb0e7b372a4721a2", +"TR_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"TR_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "fa2714d32b92fad5bfab6b0df6352fdc7eb91fdef808fc795d83977afe32f955", +"TR_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "fb624110973fd095e0b80a102e442aa3c40791a85bddd6857b799e2c5e804ee2", +"TR_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "63267ceb633f75f565f6d71b8b18b1f20687b134aed10e14e8a3bb9a4f4b4838", +"TR_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c16b21752502290161603c1f9f7f12e2e047874c45cdafc001a5eb697036f199", +"TR_cs_test_msg_changepin_t2.py::test_change_failed": "6bff164e808b2d1cc18bd3ddf52ded62ed02228316875757e950811abe2169fb", +"TR_cs_test_msg_changepin_t2.py::test_change_invalid_current": "f5bc65a70222eca7399074c2a27db0d4b06ceb5bb54f4e788adc56176c28cd67", +"TR_cs_test_msg_changepin_t2.py::test_change_pin": "e4f9aa4fa001d9ffd42c07a73eda092ceb7aed225dc78c0be075845900f90328", +"TR_cs_test_msg_changepin_t2.py::test_remove_pin": "e6c93a9aedbca2ea7bd70f40baf87350887645caa6bbc7381acdb1c7f913a97c", +"TR_cs_test_msg_changepin_t2.py::test_set_failed": "8d26d626b6f3fcdfcd716c73f8db53ee29bd640f6077fd6f7bc7ae604642ed3f", +"TR_cs_test_msg_changepin_t2.py::test_set_pin": "d5fcbca7fd029a0f75162e654e0bbd73e5cf4c229133a540460a94a07ad53b9d", +"TR_cs_test_msg_loaddevice.py::test_load_device_1": "e668f89799a5e0ae5c1240fe7720d3d201a11a527cf9521b9a958dcd7122f8fd", +"TR_cs_test_msg_loaddevice.py::test_load_device_2": "91c0a3540367ca0f49352f18d6869e8d16d212772cadc2b3d61eee78a99960db", +"TR_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "e668f89799a5e0ae5c1240fe7720d3d201a11a527cf9521b9a958dcd7122f8fd", +"TR_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "e668f89799a5e0ae5c1240fe7720d3d201a11a527cf9521b9a958dcd7122f8fd", +"TR_cs_test_msg_loaddevice.py::test_load_device_utf": "7663f9d874e405e4ac40618214df3bb00cc5dcd779be9816962c90c73646dba0", +"TR_cs_test_msg_ping.py::test_ping": "a2b5261f44c793f02522e00c03331210ae4f52f022d4ff3a1af1691d7d0cfe38", +"TR_cs_test_msg_wipedevice.py::test_autolock_not_retained": "0ddd221ddb615a88e41e6448392efadba7b8698dfe133c192ecf9e244dcf282f", +"TR_cs_test_msg_wipedevice.py::test_wipe_device": "bec90ea7be13f6437adf5c70496bb66def054ef2919d7b9ec3a131e00acfea6f", +"TR_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6cb7f7c079c18d6696e2d6a0284042335ce1980a35e1a7367ba43126b5559fdd", +"TR_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6cb7f7c079c18d6696e2d6a0284042335ce1980a35e1a7367ba43126b5559fdd", +"TR_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "54b26d0fff1825442e022396122fcccc715e2e5b456c1a02d712d722bda7713e", +"TR_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "54b26d0fff1825442e022396122fcccc715e2e5b456c1a02d712d722bda7713e", +"TR_cs_test_pin.py::test_correct_pin": "ef51219692b2cf1fe3820101863ee27ac9e29486d242654bca2dd0995a05f77a", +"TR_cs_test_pin.py::test_exponential_backoff_t2": "989a049daec4b558733a6b0e5db867c74bfcf68ea98bb85a6b1a1feac6d8853a", +"TR_cs_test_pin.py::test_incorrect_pin_t2": "118008eaac295da71cd6a1920b22223c4f47f0792845486dea8521807a04ed5f", +"TR_cs_test_pin.py::test_no_protection": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_protection_levels.py::test_apply_settings": "924a3d79e91ea3f6c2e713c5eb1a535cd587ba9a324a7f94a350c96ebbf613ac", +"TR_cs_test_protection_levels.py::test_change_pin_t2": "452a503998ed531f435587e6c3f91ce974d4c5369f2e9e65348156f641f01df5", +"TR_cs_test_protection_levels.py::test_get_address": "b4752b4bc47f786cf916e560f1b9a44635834745817c0af91f9090650ed1e922", +"TR_cs_test_protection_levels.py::test_get_entropy": "386e3ae6d7689d8ea7943dc28ad0798b20866b9ee07cbf259a759dedee21dc38", +"TR_cs_test_protection_levels.py::test_get_public_key": "b4752b4bc47f786cf916e560f1b9a44635834745817c0af91f9090650ed1e922", +"TR_cs_test_protection_levels.py::test_initialize": "fbc2c548daa650636be5259c090993103f7cfcde5345981d11a02db0720e9c3d", +"TR_cs_test_protection_levels.py::test_passphrase_cached": "4fd93269d71015345710d222504d8a8914119973382a448290628165027b537f", +"TR_cs_test_protection_levels.py::test_passphrase_reporting[False]": "4583e9a9b37ee4b65106b350d354195d955c3eb6980899e1f034495d673994da", +"TR_cs_test_protection_levels.py::test_passphrase_reporting[True]": "16ec5a388d75571d555f872743f968844255c1f944ecf64c8eb979de901c6ef9", +"TR_cs_test_protection_levels.py::test_ping": "a2b5261f44c793f02522e00c03331210ae4f52f022d4ff3a1af1691d7d0cfe38", +"TR_cs_test_protection_levels.py::test_sign_message": "bece5e120417e7b1022df0204680cfa30437ffb432cdfeba6dcb60502552cf71", +"TR_cs_test_protection_levels.py::test_signtx": "3e059bf3039c66e1ce96a8f05c1645c1ffc02446b54cfb4233f1b6d9e10da6c8", +"TR_cs_test_protection_levels.py::test_unlocked": "816745061fb7ad656d913a6391e23f19b089acbf90523e8b84178848bad531eb", +"TR_cs_test_protection_levels.py::test_verify_message_t2": "f20382a7d0e6a2cc7a35292e423b24458df8f2ae27ba6fafd63102d6cac0a41f", +"TR_cs_test_protection_levels.py::test_wipe_device": "1ad3efb21c7ae94061a99abef2847c088c9f65ed957c49378242d2ff7abad3c0", +"TR_cs_test_session.py::test_cannot_resume_ended_session": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_session.py::test_clear_session": "ec286e253a8c05cb396b50c48fb6752d75902d44679dcc64a7298c15d5e1b532", +"TR_cs_test_session.py::test_derive_cardano_empty_session": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_session.py::test_derive_cardano_running_session": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_session.py::test_end_session": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_session.py::test_end_session_only_current": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_session.py::test_session_recycling": "54b26d0fff1825442e022396122fcccc715e2e5b456c1a02d712d722bda7713e", +"TR_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "ea9bf1c542ef3366f48b2a90fd412ea8007db1317c68475e6f513372e1a06a1d", +"TR_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "bf8029f96318f8c58edceec3ce2bee86683e4498a85bc86f39efaa6795d5ac03", +"TR_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "f4e308dcb92309d61afa2ba5e308188dbd2d64355a38881ce3a29e32c8d277a7", +"TR_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "559132f473e06a1455addd24c40686150ae4ea48f31f20710320bab6b4e2a5eb", +"TR_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "37f522e6b62deb2394720b3e64addc2014e4b0fb23986d66b8d880b5441b3b5b", +"TR_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "463c3697ca57ccedbf283ef6c5e620d1d37cf45003340a595e1e6ae1a75483d9", +"TR_cs_test_session_id_and_passphrase.py::test_passphrase_length": "6e850b77229375ede5d3c07e75a272274d5ae0b401fb2832a030b8edaf75dd01", +"TR_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "4fd93269d71015345710d222504d8a8914119973382a448290628165027b537f", +"TR_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "843f9c8e596a56be694ca804df4489d0200b2b861cf5f44d8ac1a59e96a8f026", +"TR_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "970a23051cb0ebe1d2590e70c97b6766ae4ecdd565474fe39fa44f402cb20fa4", +"TR_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "b4368385cdc22960d54304326c72e1d9c5eacd8557145ee5fb2aeaca57115408", +"TR_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "7a8411b67ba2b05a787a49d9fe80ec49993fdebd670b8813ff293e344c176b1b", +"TR_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "dad00367f614ad33002ca780e90835efe5bbb3e764c2b8fa1d6f3a5e901752dd", +"TR_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "107a52fdd129d505ce27e5768a7e3c60bc0dc67704326f92b31fff2b6422e3ab", +"TR_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "72ac5532b9d02d3772f781e68795bfa012ef7026c57347191c74e5ff7e96ea47", +"TR_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ee267639f299bd332bbd1b38275636dc73fd6363a209ab54519f7b9c5b133d80", +"TR_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "fae3a2bf3462c869835055ec1afb1d0323e8e7b5c5b29511bd30c13bd3078b92", +"TR_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "0ab195089d76145bad6af52983083efab8e86a9e3d09d181980bd836ed2fa795", +"TR_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "d7869a0ed41e182183f89bed0ff570823cb751a11cf63cf37997ce53b5c68aac", +"TR_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "d3e3f39845f7816e8c95d7ed09d4858f6147dcd2d573b70cb9c4abb5afe758e0", +"TR_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "1b553306565061f34655784a6c35e6d7037f3f5c9cc092183ebe97b1be6d6214", +"TR_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "795b7f6cda5a0227f63dc8f98672583c7f83d74394d9f0ee71cda1f42433cd68", +"TR_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "e0e364686452889a6b495aea2d46796d2005db9587251c8064910761b52beec8", +"TR_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "f534ae739f895a3e7f9f7ccdc0e2b363f29ca7acbc3778599e4368b43e64a935", +"TR_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "5cca94a331a7624e7d0b12bd8b43a005678508705c9680d6d8377ecc027c7d08", +"TR_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "0a4f289466aba848c79ad884f89c69dac466777fb5fa75bfe71cca27bbe85a53", +"TR_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "29edc752bc72cab2783234e9dba5c6cc5329017b642165dbb24fb874d499bd39", +"TR_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "b1177302237bc5def649baa3e63d14a6143e4c165c55a9c98d159a3d0003a27d", +"TR_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "4b51f470aec64ee09bef1e18fa37bc1982d9782fa232a5b36c48716b930fb5ee", +"TR_cs_webauthn-test_msg_webauthn.py::test_add_remove": "a16388a3573360ad3f3e0c243b653fc2706380a72ada012990b43f77e4037583", +"TR_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "5da3e9f233f3f15c653ee0d78389b4d82f9ec451f52ddd27cac95596f91a6e76", +"TR_cs_zcash-test_sign_tx.py::test_external_presigned": "07fba93ea6c6ce31ca09fcf988327296d539a0e379c4ac6a5929a5fdbda7a72e", +"TR_cs_zcash-test_sign_tx.py::test_one_two": "b38f18244e26751ef27b5c34dc8af16236acd62d680a75ad1e95a4fdad77588f", +"TR_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "0233c69ac26fb912329b945d48fee8fa1467042e3060471af938745f621a782d", +"TR_cs_zcash-test_sign_tx.py::test_send_to_multisig": "8905f476192cd923539cc06aa9f953457ebe8ad1389dd28ec75fd550d2b7d2c1", +"TR_cs_zcash-test_sign_tx.py::test_spend_multisig": "2332ac74f104702bae5e8d5de4cbe0865e4323a75ab12af2384c36fc8876679a", +"TR_cs_zcash-test_sign_tx.py::test_spend_v4_input": "1b48e09317ddf0f8624d14e1ca72d9c812bfc0c7b2e95e55d282981ffe0558bb", +"TR_cs_zcash-test_sign_tx.py::test_spend_v5_input": "863873622329103ed200d523d55cc0528e9146fbd3c0348fcd98b4d6aa687baa", +"TR_cs_zcash-test_sign_tx.py::test_unified_address": "5691d1437fbf61ed28050f29ecdd1517f07126b51c9b0c7c68a246fe7d616b7c", +"TR_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "cb2b7df43c09354e4c03fa6f0286109ac5051752699e8ca5c230cdc0445af2ed", +"TR_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "e161f7022afd565ac51dcd9eb3966f156ad8551bae054496c6c09e46fbb1a224", +"TR_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b82dcffdb045c064e9efbd088524afc98d103a85e7f1ed5e7a6f15c7ea92c284", +"TR_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "35a5e89f946086b17df1b3fb55800824b79259198be2bff8ea28b0f2b755647d", +"TR_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "bb278ac9561c5736c790f2e5ab419814f6c9e6e91a5473ac0cf14f5ccbaaa9d8", +"TR_de_binance-test_get_public_key.py::test_binance_get_public_key": "5aa3d1b7d32dc28e3c5d6c379914b7d8a6d522f349f44edb73227f4588f104b7", +"TR_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2f764f9ce8c50c9adfd8b3cb143f166cd7736892b90ac18196222e4217a66af6", +"TR_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "539d048b2d81fd28b188f154b5df1cb93bfc327b0869cf46f10bc14516d98ed4", +"TR_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "96091d170ba49f17fad86b635b8b51483a2f987217056da6a9ac160194944084", +"TR_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2f764f9ce8c50c9adfd8b3cb143f166cd7736892b90ac18196222e4217a66af6", +"TR_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "539d048b2d81fd28b188f154b5df1cb93bfc327b0869cf46f10bc14516d98ed4", +"TR_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "96091d170ba49f17fad86b635b8b51483a2f987217056da6a9ac160194944084", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "ef7f5137e87017bc241f78cbc5e2943edda1cde2dec989c9554ec032357d0956", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "e6e9ded3f88c4c4e32247d2e7123ac820950565b6a830c5ceb05e13a8ae33d2d", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "17bb03c889e6ecd1b152aaf69aea6d1db7c124ea2339a991935ce32479bc1961", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3450730bbe692c183d0b18cacdc978f2581ac86adfd1197ae04d2d5cecd2de3f", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "720d94ffd4566f84efdd0fbc490a15bc9d8324c6012df7201d0e83c3763398e0", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "720d94ffd4566f84efdd0fbc490a15bc9d8324c6012df7201d0e83c3763398e0", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "01bbd2b3b4e6c022b195cb00d3b8e1415ca01c77d1c75bd6674f4c4fcb8b5194", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a7860f274f1b843b7c41c86415cdd2b0d5d6fe803cd17b867d6dc0bcd7fc739d", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0b1925f38e4599f5b4a356285462f75a7db80e04a22349d5ee0c68c7942ce612", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "1205de8d8e2aa9e1488333a27af516d76864995db6a35f85fa7dbacc54332c1d", +"TR_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "1205de8d8e2aa9e1488333a27af516d76864995db6a35f85fa7dbacc54332c1d", +"TR_de_bitcoin-test_bcash.py::test_attack_change_input": "25fd6ce464e14a36a37f3ee507c70dbc8afc7ed7ceae2ef75b71c467c6549134", +"TR_de_bitcoin-test_bcash.py::test_send_bch_change": "3ef94edf0e0eb9aa89131abc233df9386d954a22c8908333e9ae29caa35c83af", +"TR_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "4f9e7e40a6d6de32fadbc219b52b515be1a94eb64eb6982250d23437a47436c6", +"TR_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "973a4dd0d68a8a0fd1dd9cec0140e4a2ff16769ef73533db19863fc8497fdff8", +"TR_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "7bc9a3bedd02e55656009bd19d934da06a12f3bf4fcb75016b1fea07b90003de", +"TR_de_bitcoin-test_bcash.py::test_send_bch_nochange": "461bda52005873b28db470d549c844f5e3d883dff7cd37c091c76c2ec2474d1d", +"TR_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "820e730feb6fd9e0198ce33993839520e409acf69987a2034b65afa277b667f8", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "616d246164f4d889ec8df71ff65cf0c84bbe7d443621432266da385ee9d68f51", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "612689e5968b5baaa2b55371fabab2b504c06599afeb860d295c776ac668ef3f", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "c974af7eb36d17937a904f928b0d6cd96b0b41c6591b00b6535efdcd929e4b0e", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "4659bf672e776048c99c4e628d3b8522bc1a03e1bfd715e756f6444896aa8931", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "d048880b7a6ce60afe28b138f014187236ba2fd14d84808371c9d25dc905b7f0", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "b57096448b5335237a9f01b32f6cc16fb5253b5721235872ea84f15d1bbda732", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "4c42b1dd237de58199e8167089f7b1cf3bc72712111ede5d80d4297f84e5b02c", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "6106fbd8574a3266712357221d52f8bc4f6c74e85e8cd6c419e617b87ca84284", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "431a9d00cec923e6ee12f02fc6699c187640c83ff1099226f10321ce47c96208", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "f6f4141fbe10a273f3290ae0e5f0eafbdea44b01145c33620f92d89126f531ab", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "5e96ea3ed4bbcd5ad0562683c0234a2ef69314507969931d632061192ee2c0e6", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "d14cf3e220f95ce63448da5dd0f9c72f95bb58f1a5c99c58bd77cb0c23090246", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "39fc944945af27fe067809707f51927085d867d5d431a0dcc37a6623d4d0eb11", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "28ebb3936a8c83054092d1b80c398d0b7cbf879c96f0940e7d5fadff5a880ba5", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "92ca8e0518b5d2325d0f64c5e114e8b9d52fa627e8b359cc9e3ea9f190058e19", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "252043f55c9690b86e2d08432f8debf9c066083a184e98f2900f2504739f2ba8", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "56dd0d7071de4522c88cea839b25334cf54940254965033dc782a9b8d787d923", +"TR_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "c12157316947db7f14048262ea3095e20c94047ef7128aacb973196347d2f05f", +"TR_de_bitcoin-test_firo.py::test_spend_lelantus": "e3963f3019f8d9cb265a0bf8f999955fc784548563a57873cc2f30a73dad867c", +"TR_de_bitcoin-test_fujicoin.py::test_send_p2tr": "2afb76d532df0254396d164721e8c7ab57e2bf0793950f7f5d51907d5c1c14a8", +"TR_de_bitcoin-test_getaddress.py::test_address_mac": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_bch": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_bch_multisig": "8600bcf1e6c9b317c4f04b989aac3b48512641cf4e04fa2502d7708cebb033fc", +"TR_de_bitcoin-test_getaddress.py::test_btc": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_crw": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_elements": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_grs": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_invalid_path": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_ltc": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_multisig": "80df8a450f879528d9228c4a4ab94ebcdbaad3891cc2789c05c1e18533ab84d1", +"TR_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "2855bb5c7609588c5b9a00003002e15f5ec37aee50748e495b411b9c74af58e2", +"TR_de_bitcoin-test_getaddress.py::test_public_ckd": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_tbtc": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_tgrs": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress.py::test_unknown_path": "0fc49460509208ca8646a4cf9086dd9d116cb6fb3494990acce5e7d852549e7d", +"TR_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "6a79748f92b87903d41d7433bc58a745dcb20c0d996df0b74e1c7aa0e7457e6a", +"TR_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "2c12bbe5ee0bdfec7730e07da74e26de43dc6610f4174d60b2e62ea18d87f427", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "41265def4ebd00078a792c576268a6668dc498bd5d0a1a558ca6e9222eb6036c", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "59600dccba13a9db770367714bd44035288c148937402ce1a5feafc9271d6196", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "672c8c171701b53283060aa2fe3c8e9be2291c59d3429ad813e236ae4e17aba3", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6c314b3f69315877ca5ece6837c47a859b2dd3a66a7e4f37c79653481045bd54", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "19c42325b47b4174ab256e2c1ba7504a4d69f4f9d3b3f3bc47143cafa33816f0", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "89f78c2cd27f779867dd6799354b60c2559699fa609dcdd4c8c6c061be37dbda", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "15a88734db6987063b987e9e2efaf42f12f7bff113ef45a482c6fc86260b44bb", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "bdbf693857efd5a07f2f71d37376f9e9f6d14d0728b4503e770372837963d6fc", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "c10e40dd768b5eb6663fd1b43bb3de0ac9e336491cda08194345b91c0b37fe24", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "db4da913424cd8fe6c686bca2ca5d0adfd079ed8935e5a40bbc9a2811232c06d", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "cef3ca687571ac8ef5df4338acc442f4577983f61b7029a86189ca4e39f2fc74", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "03626875da1f57e55533239c33771c77379567959f54f610d00c1d7fd52478f9", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "9fa6240395e1574db864305ef4f03414dfdaa83e923e5ad759898d8a101da9bf", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "dd9af437ab969cc924def75b7dd3016dec005fa65280502eb33b9c0c265976ae", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "cc8ae925887e071992e3f21c4624b089ee711b487d636ef8cdebdf15b050e2f5", +"TR_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "4107741c581e97e78fd5d06b75d5f487698ac85bfd50b9fa4406fc69c8e9587e", +"TR_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "75958f828cee766dcf239ccf54aa713e8a264d9ceb4ac7f0cce94f2aa5a1f2bf", +"TR_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "d238e86226e616f7505bd33fbb312e6d936e6d7523c3864def14f1a6d00892f9", +"TR_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "cbf1ea2fbed4f56f576ca307685f5ab5343ebdf88a603ccae0a707004ec9f7bd", +"TR_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "ca3f326d39241df8dadd54d7091b97b01f5f39c44ce47be64a9f21dd4b92bd29", +"TR_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "7ecc7ec88965f234ca2e35cbb9c20cfd95ba77e751da4266eeb77b7a313b09bd", +"TR_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "b153798a8d90e267d693f0522259a4e895d6af3719c3efad82afabf53d45adc8", +"TR_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "b153798a8d90e267d693f0522259a4e895d6af3719c3efad82afabf53d45adc8", +"TR_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "f2945e10d79b63890ad9061333b8c586d07bce42980752eeb5040adbd8e64040", +"TR_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "72856dc65b9799790e6f1f7e530989f671c328ccdc7cb2da0601a7527f9795bb", +"TR_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "a80735d8abbccf3873b00accd94bbc1fa45df436d62246c7625d01c67eaafe9f", +"TR_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "6635bf93fcc2122132719fac47acb14abcc1b588f0629754919d91d568126919", +"TR_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "f233301babcb642114881aceff8e9bcabfc36f65b9f508d73c3b2913fce21784", +"TR_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "aff2ddfa7c74a80481ce254bdfffe2649e7198382350d33c34e7433ea1f0dab0", +"TR_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "1014f35d1a9c8fadf17b6264ad5b7895a1e0b4a8b7ff59518d4845fa83e1888f", +"TR_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "223fe032549d55332610b289f38612139427ad7615a58e16d3ab86c123d30036", +"TR_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "e45137063c2c51abb59ac466f335222443508d994657a1c643393f0b6209183d", +"TR_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "19e5a225c79589521c11960623609218f5f8b295e2f30cb8adb1ecd9f48594b7", +"TR_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "c6e9dcaeb228e116ffbce2eca179a6a623f642c387db4d56c7721eb8a0d72b8d", +"TR_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "4ae160e6e9d4d093a933bb9199327e6fd5264672e9f773551b6bf0354c961368", +"TR_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "1065bb98c7b03b693a6799eb2e469e0d8829c55c84c281c6c1bc8f760e42f4e6", +"TR_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "7a3c482041e2b5183287451dd79a3305f6507756c134fc5509d02659e6b8bcf5", +"TR_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "612689e5968b5baaa2b55371fabab2b504c06599afeb860d295c776ac668ef3f", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "30c7b4df225aea4eeea45c67384d6205579d3621514d39e2d4fda175c3eaf55a", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "0327c736c852816aad4c6afabf372ff78ecf1dbd3d3294efc0b411457b834b53", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "6503c65809ed8eb39a1a64371b580995eff6abbadf718bda6a4d6c9790ae3b79", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "3cf5d81500130180e7846ec95a84c7f1766358aa9bdcc92cd7f86241d1e98172", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "a0adcc2dc6e539d91519c1c081592048910ca6f4b49cd68e425c40e6e7b26420", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "5ead28cb1562992880cd3e78f3751040a68a662765c524c2eb45bbe17b951a11", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "eee0791874f6552e8d1e376e25e2d9801366d697b6eef66a2b9126af38699355", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "186428a02460d6db5fcf2ef952f667b2328f8e4240963fb3b3db7efb705688e0", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "5e96ea3ed4bbcd5ad0562683c0234a2ef69314507969931d632061192ee2c0e6", +"TR_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "8dd3e9b7ef3030e2a35411b4b00bee503fa13afed12fc446bc8dd8ee251e674b", +"TR_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey.py::test_slip25_path": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_grs.py::test_legacy": "afe324938bf08d1b3b9a06d557c260e3c5f00b2ad2af07abca973994b0115b8a", +"TR_de_bitcoin-test_grs.py::test_legacy_change": "04a287272de3c7f54a468d32ad1e99fd15cbac5b30a8786144eaa0648e8f882a", +"TR_de_bitcoin-test_grs.py::test_send_p2tr": "f01984ef11d6be9ff75d4a94d733544818337aa9c0991df0d846f0a90e49c1f3", +"TR_de_bitcoin-test_grs.py::test_send_segwit_native": "3f13304dc6b3071ccee72b2188d1f8d23cc4bbee376f2e3db1e344268110618f", +"TR_de_bitcoin-test_grs.py::test_send_segwit_native_change": "c1c15845213c5b8a20e02db74a19bc6af847f2a9f68bc1b11f1f927a62db722b", +"TR_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "cccc97b1728b999ddca14ba526ef2a896dc1f73bf92f7b3497cc3e7149f1f1b1", +"TR_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "f78dfaf1022671e0e85f38c84a97186f0f9b94707f36ee482988dfe36ce45306", +"TR_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "35b15fdf65ffdc4403fbcc276fe0e9b03e6caaf8910909c60c1321a9056add39", +"TR_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "5251e460b1c6721534dd654a51b3379c3779056cd2101521ef982404979aa9e3", +"TR_de_bitcoin-test_multisig.py::test_15_of_15": "0f9ae6e7e148573a4c48fad89ec1aa1a4c6f11a4e4a5abf8eb97801ac2b1f2d4", +"TR_de_bitcoin-test_multisig.py::test_2_of_3[False]": "e603be799b6cbafcb67d271a7593a33ea3150fdd74a44762b07f0e411c48abab", +"TR_de_bitcoin-test_multisig.py::test_2_of_3[True]": "29777b334019e9625b77fe7b5e5082e9deeb83cca5d0c892066ba60b13095e01", +"TR_de_bitcoin-test_multisig.py::test_attack_change_input": "8286dcf5500a10822ffa8e4a187c88056b0a4220eb6540565735fb87f699e981", +"TR_de_bitcoin-test_multisig.py::test_missing_pubkey": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_multisig_change.py::test_external_external": "94318c6362c4f93d31e67bb5f4fdf0c0dce08155132169ffd4657974af6f7679", +"TR_de_bitcoin-test_multisig_change.py::test_external_internal": "79eb90e91ad30c9b3d93e7379323204ecee0342471d9e62b205b16f47ae2e758", +"TR_de_bitcoin-test_multisig_change.py::test_internal_external": "3dc15ca7d1f7a9b58df1ff6bb9549f033b7b33e847522068bd5600b6cdad8ffc", +"TR_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "ad39e0220303a682a6efda7839ba0c9b569fb86a5ccb3f9b9848a577112deb26", +"TR_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "b4775d42616b46a0c3ca0a491a4e863d5fe7899718f24e1ccaff19af1424c762", +"TR_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "2a75410c9eeb2efe681cad7beeb7c66e8fcc0e6497630cb03f22ce2a8bf87ff1", +"TR_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "c5868ca3a805b28b374a87b67a5a07f1a9f94be2ad7ab033f4a95ced7887dd18", +"TR_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "70a903973285f66c018d572d301449248fa700a8a0ed6bfdaf3fae19397067f1", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "8257a2afae7dda5c6ed2924174a2089652c580cdeb36c70fe5e3dd5f3ea66067", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "0951dcf1057ab44b45d4389de9b6390471633abf7e8928d15dbcdfdaac9a12a5", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "3d3548a1ffc682eb7639b4ed6418e0f9ee75eedc4b484cdd6ceaba5027b1c7f1", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "874cbea2855ee26b16f74f24ab56baf992b3f7ab8e54d04cccdc79eb2145c47d", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "20353ed124d0bcac25e845ddb679ac631c34ef921e1e1414a713c5639804770e", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "d7f5a51fe48e0203bafa99763c6334c2b6bac03ad083038970c96729965ee4ed", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ec77ac2200120cc66f6a84d01a0b5f43579dc16aebbf14be746bcd61a77a8746", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "011c984a9166ebc2a442e68d4a62838706d1503b7db89187be5c5bfa6f06a729", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "afb79dbd42346c731cabcb4c294f397ebfd8f7214660d69b1446307408ff44a0", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "98d0f3e5b8edc1d596702f27e0f4cf64e61794d29f22012023a1f8f05ff34cbb", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "a3ee728085c55a92681f5b11ff20f2e1d925367e532b09d29222abee8b3b4d3c", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "fabae360bc611c5e2a858f89ea512e932abe09fecc9850751ab5e97abeb9c66b", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "4ca866b5076828a01d59fa0d5520b983a7354581652b844b63356b3a9dba72d7", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "bf4ce4e7d9b04e909b86815c822479903727b3cc27c4bc4fcc11128a0cbcb389", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "167aec50e41f13ce0d5694b9b548ea5c8a5d344edd1bceaf066272bd7794f069", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "99a4fd123cccef0fd260a9f8296c8efe35bd3d48755c34d4484476c0305a1227", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "ddf302501e2dd4a2d16107dee252cadc63222a30d3490aba2f3b245d228941c9", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "905a3b8958dd23395bb2efd1dc250c6e5cfbef6500451da6d4cd1ff64871e4f9", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "2f6c2f5408931ef0546f966ecca7417a3c60c3adfff5f25fed7979f12673b611", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "401a8b1ba3b168156781866230e561b42bc75ebe1712f0b3760eb52b239de413", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "f50175b1196dcd94a31b02f9a482bc5f2a794a9385cf4f41ab270bfcc9451070", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b0a5709cd892f3663ea1d06ec48d2b34801a3e406196fa086518603276238f45", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "727047a8043b02486ede248495140c80003f3a4a130f86b5e168c52b783ae5f1", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "b149e2d88060e8ffe01d8ab9a5649afbf0140c2d0f1ffc975a31e1ada9523adf", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "772ee263c42ec5758fb4d631f570d4c46370b54b5e4f8116ed86b50b7cbc2b44", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "95a801634a36d7c755cb457edf4df7e60c477e844a29dd4096f8fb8ac9a70660", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c5ded7614fca6b5c3110cb45145c3078ef3f05ce7d9e41ce02e1d391438f3108", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "a9d77cfd106490764c1ba7eb0eb8e9a7b442c9e0798e225e59344b34f9271a09", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "8b7493a81e25ca01b62a82e57eec621dd99ad011bc5ce566c0fafbf377679ff3", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "9df77e5d9c2edb6e9fc10b1ae9ad6c987b8dd59a3fcdda3f8b51320ebf3f3f03", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "55280682db9310721783650ddd0ed5754d8028cb16e5e653f91b6b79d7c49445", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "20b95b631377bed1deed30fe0ce09932d356297e84ebd2394798421fd4f88c22", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "7408d0a66785da34f4e12c703aedba10be72add350eb863e4120ffb8b51c9438", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "ed84be1161c089c0459d1145c319b171cb6dad633ecb3810524e49975ce295ec", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "a66c5e838767f72efe95cbbbaf45debd971cf8019194adea4466cbf72827561f", +"TR_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "44241c3065523b63b5e8efb40ced1f506bc2dff3825ab245477b4b1d2ad690b2", +"TR_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_op_return.py::test_opreturn": "9806f35876e2108a43053ff4fb1330e7c546e427692820a3cd970e42331ce5b4", +"TR_de_bitcoin-test_op_return.py::test_opreturn_address": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_peercoin.py::test_timestamp_included": "06c88c31b134708b27f76d1f6648d1eeb1a9787700cdc299acf9915c0849a80a", +"TR_de_bitcoin-test_peercoin.py::test_timestamp_missing": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "b2b3a4c435f336a43d8e47989b6112d8ad024f45bdf9fb0692ca3519b810ca40", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "6a3857a223eb10092a5b59b41d27adfd3a21c8361a16eabb766bcd238bf84707", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "6a3857a223eb10092a5b59b41d27adfd3a21c8361a16eabb766bcd238bf84707", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "b3828904309e7bbbe53f32d45939eb600b7e0d7b097a06b22ac8c0b259945466", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "f982881f1ef724b55477fdef75fe303dbd485d8636f337bfbf2a7b31341f2e6b", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "2631485b4d54d2341ccb34614e0fe3059a9ccbb79eced1eb0e57694cc1f994d4", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "fbe3d6657bf412c10fbf4e84ff74af24c36659c0a37d5df0778ee533ce3faab4", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "f9636084b721296f189f193efde19d10f7c94b9695fa01ce1690813bdd1e7ca5", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "0a63fd957e07bd14b00c7f4ed9d1538a9e1ef4aed475dea6d543506f8a60eff6", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "0a63fd957e07bd14b00c7f4ed9d1538a9e1ef4aed475dea6d543506f8a60eff6", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "82360ed0388af44a8f67f99a29ee02895d366d17474fef02c69a6d99ac6b9d01", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "149e2afb9c26ac4179c0967d14afa82b1eb257c501c3ab2291508a8d5bf46d6b", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "ba39f96ee06465c8dc0a11ee90963d8cb66520c2a338bd106a454d71113502e6", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "ba39f96ee06465c8dc0a11ee90963d8cb66520c2a338bd106a454d71113502e6", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "cb76695bfb8fa71419919d80acad420afd2583afbf72dc13749cedad1ea926bb", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "8351096da6e4a52897bf90df21f9c6ce6091fcc7af1a3b16f449d84736a9a5ec", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "8ccbc4ee8f42d91874ed0ef54cd276f79a9d938564271c34869c31fd8727eb8b", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "8ccbc4ee8f42d91874ed0ef54cd276f79a9d938564271c34869c31fd8727eb8b", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "604898648b349451cb58808f5a7167d59cd4ed044cfd0a193c00552cd3e621ce", +"TR_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "cc9be613a53e1aff91648170d41cf549167f38507d9c4d2d59fc684c0e30c99a", +"TR_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "83a6d3cd3ed1e928bf3bd995bbfea44a3e4483e07de76db04c1ce8bacaf0d39e", +"TR_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "acaca97260342da63e17f54d4c1d7446406f52c21fe364532d154ecd007a7b48", +"TR_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "5bf92e55cb2d5bcc116fad4c5f1da13f3e2dd715d1910b65c3be57ecd4a78844", +"TR_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "ef6a8d80efe9f3ef5011c49621d425d95fd17d28e55490af771816f50daef363", +"TR_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6a4ab6b3d5668c42c67632d39826360cb4471cf2ee9d6a818ec753e7a29ae98a", +"TR_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "57a4449daf54147ee227a63c5e064c66af35a7ad3d56700aaaf4824b6740023f", +"TR_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "655610c07dd4c76e5bf9b6be3a4b0d3b9db4d0b67e6b3df1ca28c943998b636f", +"TR_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "a573b3699d4427642fc234984fc2acb08cac2d9426776454377835111a29b752", +"TR_de_bitcoin-test_signtx.py::test_attack_change_input_address": "451d7caaf23a057e268656261d291028b6614f4a0d42b7c8c7ec1173da791a75", +"TR_de_bitcoin-test_signtx.py::test_attack_change_outputs": "86c1660392d3020dca1b8fe37fd89300bd12b6bb430471ba98042866daaba6da", +"TR_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "a46b79ee79bc95f6ed2a52174fe1282cdfbc05a1f41aff9a334e7a55b1ed9cc2", +"TR_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "a46b79ee79bc95f6ed2a52174fe1282cdfbc05a1f41aff9a334e7a55b1ed9cc2", +"TR_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "44ece8a98adb3d59f90102becead6bae994a6cda50b20a2071dbfa5cd745a397", +"TR_de_bitcoin-test_signtx.py::test_fee_high_warning": "2dd2edc658516aa2c47f264f28e620fcebb47d81aa36321bb7b241e69f5f28d4", +"TR_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx.py::test_information": "5834f034ca94f3b800314af713128f987d5f6040193fb9df24106f1c9525a05e", +"TR_de_bitcoin-test_signtx.py::test_information_cancel": "8779decc53e61f0bdba331e2926a6576e3362487a805c0e795db751ff8c772aa", +"TR_de_bitcoin-test_signtx.py::test_information_mixed": "9090da0eb0fa6ecb1e68764522a265e100fba95fb2021b9820a29bade9a8379f", +"TR_de_bitcoin-test_signtx.py::test_information_replacement": "43d1ce581b2855a97bec3a284dfb6b32999e3fc656373cd5a9a7af7cfa1371cd", +"TR_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "6248c93c5c089a4d3d2d00eff657557cd77386890c84b11fb2c8bf943194cbec", +"TR_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "9e615b51f0adce0b23a6c1bc15d7c62ab793593b102cb331b834f95f78dc90e2", +"TR_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "b95b53f7b044aa22e8061467a4dbf8d7e6d5ad9783a619e9dd3953f96eb8b086", +"TR_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "f7cf70fbdcfd46381ac46750f6cb6b7641ead0cc3571740b2122b6691da43fb3", +"TR_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "133284f2699bd90c64c7c420bffe371ab87d96238f4df80840a85065ad0d70e9", +"TR_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "ff82ec141eefedf9a735978800484ab33dd96fc5d4cc5ae443d14919e835e91d", +"TR_de_bitcoin-test_signtx.py::test_lots_of_change": "34155bc1b2ace52d4078b1987d68978479d201c1dc970d19cf1d950dcd964466", +"TR_de_bitcoin-test_signtx.py::test_lots_of_inputs": "bbcd54764dc809637446e19872312a704d74a653c87b89b21b75f1d1e2dd0303", +"TR_de_bitcoin-test_signtx.py::test_lots_of_outputs": "8a53d6268d76f9a900e61d4d60c5bcec3ff24a4b9ea6e3ab759d36fc13c455ce", +"TR_de_bitcoin-test_signtx.py::test_not_enough_funds": "7f9a5453936ebdbc5a79133a06f2ca368fb6073d0b10f228604f4e665e30783d", +"TR_de_bitcoin-test_signtx.py::test_not_enough_vouts": "26f7a82efa826231be810285b9ec900b2dd63e0c861b79cf576c40bc14f69518", +"TR_de_bitcoin-test_signtx.py::test_one_one_fee": "357b198e249910399b9d0e6d1cadb25534ef9d255948f7e00050716fa2a58abb", +"TR_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "3ec7e8451d9e20b4126191b2556268e007f3a1b73dd2ae60f6e987600ad1144a", +"TR_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "3e7a7d4ab9ecedeea0bcb8d3404b663050b0e2395fa253cdcb9a4047fb912f18", +"TR_de_bitcoin-test_signtx.py::test_one_two_fee": "56b202b8244b848e725e2dec304549a2b3599ebd4dacff7d23f9d1fdcaa3b6d2", +"TR_de_bitcoin-test_signtx.py::test_p2sh": "e0969067141b27bafe8a32d38e36d8256ab73ad8a3a10f28e77b95f797e86859", +"TR_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "3c90e757b181f0c15b6dbe47014b9108742b8da710a31ac0bac0456432918458", +"TR_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "3c90e757b181f0c15b6dbe47014b9108742b8da710a31ac0bac0456432918458", +"TR_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "3c90e757b181f0c15b6dbe47014b9108742b8da710a31ac0bac0456432918458", +"TR_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "3c90e757b181f0c15b6dbe47014b9108742b8da710a31ac0bac0456432918458", +"TR_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "3c90e757b181f0c15b6dbe47014b9108742b8da710a31ac0bac0456432918458", +"TR_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_signtx.py::test_spend_coinbase": "52cfa3a9b14cf3b1531f65258993d34c50224902a9d554ce8d6ef04579e60792", +"TR_de_bitcoin-test_signtx.py::test_testnet_big_amount": "995caa2365942bc40e8c82be84ca3847379c022eb8a3967ce52141c2e177fbee", +"TR_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "71d7ab563dff6e2abe294decbf1fb1c9d0e02a964f4afbc90681d3c410ed27d0", +"TR_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "a46b79ee79bc95f6ed2a52174fe1282cdfbc05a1f41aff9a334e7a55b1ed9cc2", +"TR_de_bitcoin-test_signtx.py::test_two_changes": "908edc7fdd97e8cb0a4aedc5d5ec7c0e7bd40084870dc2310a097c9ecb0c1a09", +"TR_de_bitcoin-test_signtx.py::test_two_two": "d5addc0ce459c2077111f10cf272d9b67b41c186179aca8f9584978fe4dd8153", +"TR_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "357b198e249910399b9d0e6d1cadb25534ef9d255948f7e00050716fa2a58abb", +"TR_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "4c8eea0d2a4181a6512f4fb2dffc1a0f84d5b6687af4476b371b39455ae8253d", +"TR_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "ca844fe626e2a029f38f8eb28f4ed2de77e7f8d32adadd94725a2b5d9bdeaa8e", +"TR_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1aea1374cabf53ec1c02877c38da7c497c3f16a5ab90c181932796f358f4ad39", +"TR_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "357b198e249910399b9d0e6d1cadb25534ef9d255948f7e00050716fa2a58abb", +"TR_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "aeed19407ee85177880396e0ab8731e28b6bdf70b8924ec0e65895dbed3aac04", +"TR_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "f659215dd87478c14febca2ea9cfcede920eeca730899def41e74f3d55b92d30", +"TR_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "0f18149f9c47d97cf5e280caa458ab9770b6ca8f8529d2e8f50013fc8126227b", +"TR_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "78f5bc68b85dff89fabc554548d5818ec19263acda59ce6ae42d8b544d976821", +"TR_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "aeed19407ee85177880396e0ab8731e28b6bdf70b8924ec0e65895dbed3aac04", +"TR_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "7555cae1e8a9ab823c2d3cc4034dcf2d78d3d4856f5107ba65613044493076ca", +"TR_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "4c1f215bb7dfc9a1418023f963a71bbc1196930ec46711503b6089d0ac955f70", +"TR_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1602a64c3cbfafa508d2042bc872c84fd183726b690a471af5758864d5ec3fe8", +"TR_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "f80fc8b9f841e6d885cc0923ca7d34e73604bd467649eff70c89b09c71a2eed6", +"TR_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "ec59124a8fcb475329cd7bc90d8000ff359ff5ca799dc0091b2c8108dcb215ef", +"TR_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "db3dd2cb3e904ae9ee339f22472c5fddd6982bcefa63d4521549638b9258c3df", +"TR_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "a7490722eb36a5f70911dc484e0a603d0ac3de6e775c4b5fc622af9001f0d787", +"TR_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "2dfd894bd2017a13279ae8e6682c5212c83371338423b7561e8bf57236cddf47", +"TR_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "d82d040059ee67e1e37d2278ea7b0737ee5529c0b047c790b290ec4ad54ae861", +"TR_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ecb325af8a330c203c0cb9f02f25fe86e60a3d92807b94f9499af32753f6f0dc", +"TR_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "803a97a46fbc9cf123827373be90db22cf75f27313acf9322209788628d5bd7b", +"TR_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "c095a2926a2be6613850806c19629725935e6ec1645de2b2f5f5cc2ab1475cea", +"TR_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "69aa65a71d4320fdc13bcaa48bd0163f6e8e562b37dce4fa5fd432334423fc6c", +"TR_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "e85768a9758c80293248e4ba778e1a7f252a8a7c0dbaa87a134118446080516e", +"TR_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "69aa65a71d4320fdc13bcaa48bd0163f6e8e562b37dce4fa5fd432334423fc6c", +"TR_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "69bf34915e6c62553732336ad398017097e61efe9e2b32e195b41431c84004db", +"TR_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "e4ab8a6e4cfae64a4e0c96054014141247223fa5a1abf2eecd762dd7f40d4101", +"TR_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "b388603e6d9f3746c3f086c13be7eb7ad83ce328f7f977b5d697b832d03f21db", +"TR_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "41c95903f0610ca9f295bfda498ea6c4b74abd884c41202f1ffb49fca294c134", +"TR_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "ab4b2af3957d32b88b95d4770419e67313130a976a2232e553b414530ee964cb", +"TR_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "085e911a53e0159f68198966a8d9f687993b8aaec40be7bbfa11fd70b46d2d87", +"TR_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "112a54ec15e2be2e07a827ad019c7a109933a00b476009201e7868a7a60a611a", +"TR_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "c13e5851abe3b944c7cfaf1d2d6436e8cbb010e40b71de3ee26310666d4f7b08", +"TR_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "31006b5b00fc6b41e60b9d6cf7197c579be080b22f4cb83df67b75c75c7de756", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "31006b5b00fc6b41e60b9d6cf7197c579be080b22f4cb83df67b75c75c7de756", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "31006b5b00fc6b41e60b9d6cf7197c579be080b22f4cb83df67b75c75c7de756", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "31006b5b00fc6b41e60b9d6cf7197c579be080b22f4cb83df67b75c75c7de756", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "76a5a6590c823db570057f75ede7d331006de6824889ff8d34db4ffdd0b64b21", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "76a5a6590c823db570057f75ede7d331006de6824889ff8d34db4ffdd0b64b21", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "76a5a6590c823db570057f75ede7d331006de6824889ff8d34db4ffdd0b64b21", +"TR_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "76a5a6590c823db570057f75ede7d331006de6824889ff8d34db4ffdd0b64b21", +"TR_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "85fe527540a1a6b444a1503e55ac0004635cdf91c673d6f8be2ca16da0582c99", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "7c7497726d7868ed264035edfcca9e7772f1ec258960aa63879b26b01e5ad4e3", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "7ee9bdafa79a5d334dcd64d6d8270f828f434f559489018121ba8c5bff89ac8c", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "7ee9bdafa79a5d334dcd64d6d8270f828f434f559489018121ba8c5bff89ac8c", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "93eff87771400d9038669b4d7f7def7c0287203f11e7e285a78fa8b773e15381", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "122dc94a8b666cf7cd04db212f2207642e9db32d6f5b938b549ba23bf88bfe2b", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "3139fdd3f76a4e0a12afb11c21f25916d5e340c4895df0a8d6fc2041aa5d23cf", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "93eff87771400d9038669b4d7f7def7c0287203f11e7e285a78fa8b773e15381", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "7514688c23335c95d0266a24d9e990bc14f1d31780c33ea67e556db49a8e0a81", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "c3a1d6b7e6d9434d92f15dbbdeffdce83fbcc166ce6b565ded462ebc862e98c6", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "c3a1d6b7e6d9434d92f15dbbdeffdce83fbcc166ce6b565ded462ebc862e98c6", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "c3a1d6b7e6d9434d92f15dbbdeffdce83fbcc166ce6b565ded462ebc862e98c6", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "2995d9f7ce1c98ffbffb9499778b7a52917e2b39b8f2278f8ae69fee22279c0e", +"TR_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "c3a1d6b7e6d9434d92f15dbbdeffdce83fbcc166ce6b565ded462ebc862e98c6", +"TR_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "1d0a03bce484455d6282b1d4c6f32c04632cf83b2b7791b80bec6afd41cac78e", +"TR_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "ebb80adb1ccb708242dd855c0971f5eba734772eeef626595c66f6ee80ed0221", +"TR_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "a3a570278b17367616741cb4aefa53b9bbaa5ceb025653909eb3b242ac11e074", +"TR_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "44c45fbb6d51d9d4a88353c033a0979e9335e1355dab5035d252643dcff68d71", +"TR_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "9b5ef87597311bb8b386f8f6bb636ecf5f24b8fe670cba2e93773fbc17b7148c", +"TR_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "0a636ef5591a1bcb5a4f7f1a45929569013fc6b926c1441c5a7cd41db3b047dd", +"TR_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "ebc672f372fb0279b4daf413cddd0ab14cf92d52ccae109082a3673054af4107", +"TR_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "82bc084a6a34ce4237295138a0e6f4020f2f8f815ed8809ee2c1048ce079c2b0", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "e870fc06f7b9330796923fc96b83032bfa85cf740a65535ec489d0f1469d54f9", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "8bbf482b95b47cce1fc45f448615580e5c0ee37c753b20fe03801a3a59581fd8", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "9d2cc42e18b678e5fcb7dda7d38680fe1b90bacc0d0f99851dad10d0d732aea3", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "2b96888537dd329281755eb9dcc05c4088b67ee0872908904247e97512cf9cf7", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "ae1f7eaba2f058778450ca1b95b439ae057311a309c2b6c7d2768f69f1fb2b01", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "910035e3b569aedba229a780ffdb5340cf495eb225b476b3a9b7d2f823103669", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "aeed19407ee85177880396e0ab8731e28b6bdf70b8924ec0e65895dbed3aac04", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "8861481baee826c9bf7c81e59c3441d6b47f50fb03bc8f60e2ecf1d4ffa3dcf9", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "910a3d81cf299115ca287e2c5ea6cee4f34e1599d23e21443cd44b7816790dcd", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "0e6dbf742d5eed2f75098e3050b9ca64d9cc74d83c948da13175c7a86c4fa958", +"TR_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "efdc9e8cf6f3416327b4afd261a50721b86f0071cf8d3cef473eb27bbdbcc146", +"TR_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "9b68ff2c44ce3677a79c555394ec0f055f699b16369e69ddcfd97f23faf5a194", +"TR_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "22cfc0ab23e17a05f85da84b8e42946bc5155de2ec01e4988384ed7917874674", +"TR_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "2978794269123971990492bf268b5e35547494d8d93f9ff743748f84f64d898b", +"TR_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "37765e19cc233feadd94b5fe1a81c7d9753a712e4fd3e31c0d493a6f4f99a29a", +"TR_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "67cc4455392c9e6dc0c816782197f4514d6a16fd4566f9859eb6ed4aa893efbd", +"TR_de_bitcoin-test_verifymessage.py::test_message_grs": "d1f2e9d05c14549b7b87760a49aa8d7ddd40b46d190a1a780db270ebb75f3d80", +"TR_de_bitcoin-test_verifymessage.py::test_message_long": "c6de49b1de02010e4a3e2fc8298b41ab788baac08705065c76bd3aca6ea90da0", +"TR_de_bitcoin-test_verifymessage.py::test_message_testnet": "4c13c25c6619264ec11afea2f9420ba8bc22d6823eabfaf762781b9df561ff8a", +"TR_de_bitcoin-test_verifymessage.py::test_message_verify": "dc0c340e472392c1f8bde130e07ea44757a180cca1656091b46c468002ec25d4", +"TR_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "6a9ec8baa881069f46d3cc5e18299ab4eaacbccbc7999dc7a8bc14820096f81c", +"TR_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "bc8a3c83ecf0afe35da6116bb1144c0f6a4bf593aac8decdaf85c3aeecb1f296", +"TR_de_bitcoin-test_verifymessage.py::test_verify_utf": "e0fcd5c26359774f35a033adab960b66db153a24d02094058c7d9650ec4b1572", +"TR_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "62350e838afea1a5502dba72816239f25b79b971405ceca470c8d347fa13b61e", +"TR_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "bf918c3515daf316f6a544591b0be69812f2b583e2ad108ac4d87555eb887197", +"TR_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "fff6f410cb585cc9f398546b030ead6d119620da0397c24e359fbf00bf0ffbcf", +"TR_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "aa3552c11add79c837c85584e95f6725652fe48e9591290651461939d5fb05cb", +"TR_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "583ea3da1046956eaca6298f4a88f8bc7832d6392563eeb74a3f1a0cc183c72e", +"TR_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "c82c8068bf5456534e6aceb75748544e667cf2a210cbe32dcf2f3bdc52fe7e9a", +"TR_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "6fa391a95e2f2ecdbcb89b40f86fc7ff7ee322d0c19c26f3ddf930ba36578c97", +"TR_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "ee72bd89c801a307c78d9b468c78dbe5c65dadb89c1081840f4c70b0e79dfb0b", +"TR_de_bitcoin-test_zcash.py::test_external_presigned": "8f6c88f4b593d998ede1076ee024b3b415f5d3004895fc27ba00406c17a16838", +"TR_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "34ac030031ca3abbb7d5f8c7cef89135e0d08aae56144ffe3e0e170ab406ed70", +"TR_de_bitcoin-test_zcash.py::test_spend_old_versions": "c374134d945bcbcac1b61af7c01a0ec71e0ce1beeced9b3269c9d36131b9c4b0", +"TR_de_bitcoin-test_zcash.py::test_v3_not_supported": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_bitcoin-test_zcash.py::test_version_group_id_missing": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "e168fedfa113eb4c753ecf95dc6bd778ea42af13b7c3074c5fc41b4de2eea9a6", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "e81444c0aa2f7c379000894e48df28ea41b6c46634b58fe5137e640b00fc1d46", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "296518a7378b8b5f2ccacbb466295da1b3f5a337170c415d4662a9a0e600e876", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "a88b38d0cb2abf55741591c5e9d2b34b0737b0be91f41a2a25fcb0f20d78b737", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "734447771f017aa99f55a94a81b31009ed989db4ea4424bdbee3d79a9c80b8a8", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "dfeedcbc7322faaa3214cc6836db25af7699a6f58e8fbe0bc3bd081171793ce5", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "4de2bc61221569c4f6886a58aa687f3e807b077535e442b456aadd61f4bbb1fa", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "b071c625f5b5a929e38a19606e5a184ab3e47e96ece724c5c2a7ef475377a311", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "d84ea54230ab7a52a14bc4de713be2293d641278c8f0041bc1926a7d247c0b19", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "3306767e181e6f832123fad8e543a03bf979e6e46fdfde859a032131a2377729", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "f2cc963c7df0813b95c595794263a4281fd086abc5e2bb2e3e05c62ef47a0840", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "60de4ce64db5158c2aa26b39fd0a7cfd212294011b76681689ec3847236c19f8", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "d71f14b9b25e8a335145c2a430fa90099da42e0bb4f81f5f2e2937f923889987", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "b76ce814e78f0421f3a2c1799d379f9ffa03e6aa342041bf9c4a8fe95774caf4", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "b3387c2216c1d3ed123035296d970014326cc247f59e2cf0e0572e3d6c0fc6cd", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "d8b7628653e813b9eb6c6d1bdfe06db6e04c5c50f925202e48d52f350d6ea561", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "2dfc9ec03a4806f3b0c9ac3164ba6bbc1f5c2a23d2a02d4478ca448e9a0e913f", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "0c1123ca08f6dd26f436d71268a2dd5154da9c665475ec842c738f4635f852ac", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "eae2ddaf95c859bc8d0007b3686579f7fd0364a2d735c4239c0f88c1995f975a", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "42d26dcd222ebc8df47cc79d0edd99c74dd4a3aee7bbd337ab9b1ca9cdb0f554", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5cd32fd477ebb0a2018e3904148303940ba721c245c302d2341202ef282c3817", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "eee83b0bb686715c8f3e27098a3827d07a3cf2e77d365609e7a7a979e73263a5", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "941529ff5111e14d31e73c76c6fafac9cc607c5d5f42eb5f11b898961192b088", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "820b07cf4d0ddc209c42ca44dcac4ba4a4e0835f6143fda08d667f8c19d00904", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d4d62400a3ecf57ae0947149172736d4b8230eaad7241fcb863b140dfa42f3ab", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "d2a86994ad6cccf9703d0ef65e4a50da6b8812ffd90a7699ae25651fb732735a", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "5d32eaa34160d8c4cdbc14a1c923dd4ac9f4f2f1f4f985be10332b0c8d29250c", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "e1c0239bf17af66a2f44f3727fac4075362a13ee52516e970de4a752d7d004c4", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "c83b27198fdd0231e74bc9852a68c2bcf9897b52d496257083da0881922803a1", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "7efb36a0c60356c6da90a5c39eec3de4095f766a048049a7b12e98a84e98e735", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "23557181418517407921d880e05336591c5ff1fe33a284be134d709fcecffbbf", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "048fffe32000931da3bdababedc7a4a5e7b0c4b46b63389102c1006667ae4d72", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "15d089a6c7a4de32e878a620b37f52c29e40ff2f4d19e519b022f52fcd08f7b5", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "ae60ee8d0ff3d613d5a07a83289d88665fd13a54b5704317dc575b8011f86ca7", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "f1c185de844310d47041ea00a4f0cc5ab1049e858d99fd68f3ab2a6284b95e8f", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "7ab26c941e71cdced77f185dffc06b7805825a2c168971331ea1d855c71d64fc", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "6c91e150d6f364bcfbd01ef99150e2062ac4916743debc4135edf56fd771c839", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "0802ddcd75f44f03b2ad46d0d75e3b3f17cca344968fad43ec9ba75f276b7aef", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "6977ccc1ccbc881c75ae0274f06d1c4c3aed76e2e5a8ad83fcc4bcff5534ec11", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "81b9d27b44aac7ad0e8058cbd3f558fe1322bb7fd81ae978c1badb44c17fa697", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "b670865cd9f15b3d29ef5b3c7c596590ceb745653d78a2352fe4942b4e45465d", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c41db86e0a06ebf5b5017e42f4a0db3026e41a7dec5d2bd49f2c4725d6106225", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "3626f5cc8048236e49cc56022ec223aab6eb749d33bd73183f46667dcdfb09dd", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "323550a6ca678b10d5e5b89f5aa12e08aba04fc6f2a8ea25c1f772c0bcbbb0f3", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "1c3fc9b657dac7389b36d1356c56dafc431c371f61da4598f151f344608d6152", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "36be2f83d2c14b96f8006b468aff62a194f73f65b288b49c3fb3d5c7927c56e0", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "7ec0ab5a71b7a0f2c430043906d9d6120b41164d0c9b460cde66e0a326e3fdfd", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "c87876f32f36766eb83d0f2ec84a3adc7221cc54a6b3060be67b033ba52355b7", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "c4e083ad8e3e6ae7c280aa08c2db3ee9ec56f2d9ceb9f0a6335527176207718e", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "166842c776978c6994bd31722735c57cfd25bf2471f972f9a80e29d20f8d7bb3", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "525facd885c675531bc139f591f410d1ad2520b3f0b45ae9a7409111ce76681b", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "ee4655d87fc498a4561010a439f80781aab689523296e2bd5310dc3b76ffd518", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c31b49c2885af4f84aff85cc1d0a9671147d054dcb237e1d087124fe73c15f55", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "f02f847b9181cbd42810237b6d59424ba63dd76e5f0dc5cb21d295816fea113f", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "f9d1cbed49a9675e7fde9b4369342484caeabdf55c5fac3ab00a8f2186b65b64", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e4e0e8570078e14c32388d5fc6bd70352dd9bbcc987a83a87a890886d487ba0a", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "feae3c15301a07bbfcbe4c333368eefc9ac9c3ab75dbede577f941702f641cc9", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "f32aa03e02e0f75beb626f8737212112b3f6065f1fea51d3474a4bbdc62a191b", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "dc60b5a7bf351b6f7d451175ad89210790214edcf4507e0137a0db18942eba64", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "a34c7c23f8da4984f7c6d7f6a0b275a114670449edf81b54d0b39d5721db4db8", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "3a65da80be328caa421349b4cb7c993944c3dd6fbc97f407ade0b3a8d4e06870", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "9328654447bf8988986bf762e4233f24cb03cb6a3e1783ecec0d5e4f2698224f", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "b059a6865736202723b8de7eb24298fec09eee50379cd546af9036dc58b4aae5", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "d4b098cf515435ce4397ad95e228c3024c6669da52a7e1371298f422606b34d7", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "bcc575facfa307882cc9ccfd4db16cda7450259d0b7869418fd70371f48d0578", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "993722937f694ab912e0e252f6dfd023e0e12349aa1efa75b425a763d9d0aa6c", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "bf56d221c3fdb75b646fcaa8082134c154700b2022001369b6e5504f84ba022e", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "2cf638c5c6d8b56d24a0eac93bb83e68265f215b6eb7da16bcf5b2b1eba93610", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "27d373886f737c53c2c062ae02cffcb3569da1d36c28eca82ddebe818ec20487", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "609a54dfe1d151ef597c444f3aa5cf35e9f231396732c3951b4dd278055c5f99", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "1bb8aae329b6ca053933fd53f244aab34717487df608b0ce929e3bb895a8186f", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "9df12cc849bc05498d7bd33c14d0e52443bb2592dbc691808366831b1fb7eef1", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "ec2f1743d11f4972acd9ab5a749fbe6d6ada636a096426f0676d4ac760364d47", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "abd5b1080a405359153112d0173ac84350d40aefcd8c24b612f7ed5be4c918de", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "4ee1464578722332cede2774c124cabe22538b961c85af646375e427166ebe4c", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "bd44995f26d9fe7a65e39daad140db30d34fbf695db1b7d149396572b8f6f454", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e3c74aadc6e1a4b17144b18a8814d717cec27d419b4c4717a85b8553ffd2cd61", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "896336f094560938fd18d318fbe37f11e87b64921e7afef2b581eb68ffe70a11", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "92b1913e1b107623c88a1b1ae29b19754cf79fd170f14c3d47c7057aedc962ca", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "121b025a67adc6f23e4aaa28a6c5f635dab8edc2ebf6dcdfc5fb9e7fed944175", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "e38ded83347ff0fd571ddfed435be39bc63d4ef924f3d65c3ef33636d9b7c7c2", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "2f8d9412552a3e966588512eb216f33f2451354316c20b2716c56424ceaab93b", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "bd03d95d8f84e64f97e8837eff42fa782798022bfdc8c8bd401d25757163dea0", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "2da8464a8320b661b25d0cb1a34f4e931390f4257dccca56b44b4e897e3ba83c", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "20d3743d7f09fb0b18db9eeb62c09f28b805a806fddae305abec408de75826fd", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "393ad11986351cc5b9c233330fdfc4fd73523073e87e5c5a4889c00e235aa41f", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "347dc6d36f3989cf85e72a40b0ba4a7a99b94e346e1a9b1c17152669bad5fea9", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "d9bb09f5781169eb612767e3f377cd46819eb54f2aeaa67d5e8019c6d95bad7d", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "0453d93be0ac6fe1539b93de45bcc2a4fe244721c65c8f13e468cd3b89843b31", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "3a010ce0a61d378cedef9174f524f94f185ff8a520af4b42138929abca15c917", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "53542c580bc84a3f1942c444127c71137d4dbd925393513f3550f6a7500ed8aa", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "2d2e711ac875e25f4311656b15d402ae4a0f4449adb8dc66fa05085f7d00ddf7", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "83709bfcd0d7861986225411e9ac213d99e983039696983b04dc466c101f625a", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "161cf4aabcf0d7fb56685a24a3b9e8f3d1be80db34ac146a13fd391171fbe410", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "b253584b3fcec20cecfe41c8cee7784b29d2296781ec62c08d6c622b3988c888", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "1acf4e5db75bff2eea539d78045e085530024af1ae7439a37f5296f6fdb121d2", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "f086843928a60ed211dd90986a832ebf739d025d54d26484d1eb3200f89f748b", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "8549e29be5b6ee4b0efb2b807cd2d7eeb9b3bfec231f51d300f1e69f5093d49d", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "341169dca46d9f07ca767fcbf60ce2c3304810d450a5de423907d6793f50647b", +"TR_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "207e298cf3dcfa7c193812698e686e686f6393f266f278091f60090e615358eb", +"TR_de_cardano-test_derivations.py::test_bad_session": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_cardano-test_derivations.py::test_ledger_available_always": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "c08eb0a5ed186e9d490d9e9d0469a4a3c307bd65948eeeaaab20d12e6a7f70ef", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "06ba617b95028daf91f798dc60d273336a84ee244ef97c82cfc53cb2e7338241", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "7486b5b0a75b1d9d80826d4621407c5bc36378bc92505a3bf23d9c1d9bbb9c0b", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "61ea4ad0a65d42bef8b1df2a7e030c1d15a81d0d1f930c7be13fb07abe5a43f7", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "8fb1d89161f7de89f407812e128a4a4e2d43d89efe2e7c5fe432d9e49ab8a902", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "350161cb558685fddef783b7280942a78b31516f7d7cccc71805c600b46c9d3a", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "758a96e16cb44032e361621421bf294fe7e6e657f2ea15bd8429d65040ae5117", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "d3c95261c25250bde235742d52247327d29fc59b6423400eaa3c905ee394012a", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "9f45d85d95ea47d2549f5d4bb5e6cd9570d4fd4a72808631cd5ac25d3be3bef3", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "4168dfbc37ea6c2be8b60c0554909ae7d2b6c361fe9c879546787c5fdfbe750f", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "521cda96f1c7739b572740e22643cdfc85b47579b9bc4927a2330b6adff9319b", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "17b2e10c137508ee49075de0b770a8a37e5dba081f2c8f1e02aa0a62689dc7e5", +"TR_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "5fcb5dadcbc4fb30c37787a199da91c1732105375afeecbfe3ffd9359d0b5c79", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "fd34f383599c826041f367adfa67158e25b6a3ea117ecad45bbfed4575f6b045", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "4ede3e8220265217bc9a5d8f69d4ecec6dd692d86bcc83261b64b3417e2a52c8", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "c295ebdcf229acaf980eb4c16b465e351bff2cf29d0a675861730f23f295bfc6", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "85f674c3ec5a4f3bd9c8c24d1076982405b8cf7337f0977464d7838fc90dfc08", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "85f674c3ec5a4f3bd9c8c24d1076982405b8cf7337f0977464d7838fc90dfc08", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "c1cc97a185d92f8e37fa3f78b5d19d0b6d65f5dbe04018591b198198e2d5ca05", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "4d88c5747891f7e740b74e0a1bf7bba39885ce31892b556f2113e73688984a4e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "f70076a7900b3e5d5b5648e10cc6d6b2565a643697451f4e9aef717f0bd3996b", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "25cfea17e4f109a6b6a7ff3cf982bc8f498162155f0e3b90ee7b6ace048fd2b6", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "ec63dc8e1cb639325e084e91ee43907addc8cf48ea3041e581bfe1eb2f2cdd27", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "64bf4f048826424b17abb3602028b33a62ec741c100ed3093d2688163d598d49", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "685ce72fba976bef25f2d1d6f932c4c8269cb404c102042dcbd7e7eaa3d355db", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "3ae4a0c4d2e8b9de01c0991987af6add69c3683e2586218b8154831220c94f75", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "547625c64aef4a9ee413a4bcbd606b0a46283b16e974b61b55184f5bbc69c54e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "547625c64aef4a9ee413a4bcbd606b0a46283b16e974b61b55184f5bbc69c54e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "cd7f2003f4dbb8050cfd94a161b668a10b100a980b27c3237392d45fd97aedf8", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "b0c5612a7a65d515a8bb6baa239af7d946b38e4abbd5afd8323ccbd089d9116b", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "1891155f200dadbeaad4ed6086020626b45274b0ab6939aa676a0d97c2620804", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "c1add022b374995475bdcff3210c81c67974938639da8a981e01ff09b49e1603", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "a33dcf18ccfabae2747160b934d71976dafe82ac485faf425355d99a15b72949", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "f9d575ec2a900fb053e0fb187c9b9125c5d386e2ea673e407dc824cb72c09e3b", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "9cc4c13079a70a3272743e5ff8caf6df1bbb1a1793e49aed53a0aea262110220", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "e92b14076207a13a882060c14b62f5a9786f267c5f6445cfb33646204274b298", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "85f674c3ec5a4f3bd9c8c24d1076982405b8cf7337f0977464d7838fc90dfc08", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "30f976869b725c5f021280aba6eea59542fbb1bf1e9f5261ac14b28e17e2b2b0", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "c1add022b374995475bdcff3210c81c67974938639da8a981e01ff09b49e1603", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "4c0cd0e6e1a08927cdfdf25e387dee01ee1e513f749dbb9d6078ceeb11958a43", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "f9d575ec2a900fb053e0fb187c9b9125c5d386e2ea673e407dc824cb72c09e3b", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "9cc4c13079a70a3272743e5ff8caf6df1bbb1a1793e49aed53a0aea262110220", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "fe7536ce71a95bbd920da20ea807f48e834ba14a221ebd8229d346d970f3ea07", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "c1add022b374995475bdcff3210c81c67974938639da8a981e01ff09b49e1603", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "d7cfe3f63bb7678b51f5183f39b419ec1ce5e076235796c67c72a214fc5b49d2", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "0577adf9211a4e22da3be05266d26e54d21bb87328de81faf0c295b1156ed7e0", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "2de78320ec28e713e6f190f0ad21d93e8684a60d410ec74cec76f9faa3ff0338", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "69551222aab7994d72858e872d926ca9efbac387da853a0c128d5e3008d573a8", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "c55c6978698a32fe4c6d1609bad287a0e3178815072f801c4313af72a3f40d77", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "10e04f65ef7f1b2eb297c1cb9dba27cbbba42412bc3b2d3abc2c6bcb80adedb2", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "e73fc9223acec90ba26613f2031f47026dd2b27eb0fe80be4b6a2547ac0dba68", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "4cfa0a74d682ecf22dac25b553de397cc4652d4a9b3eff5222c83664e0efbd8f", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "70d5caa76a1f1592510d7205963370b8fecf48d8abdc246a14289197860cc6c6", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "80c61ccf4cbbcd78abd584d76d124e042f304ba387e502c87503eeb21d152453", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "c8a3529a5e3058c3a5d4fb3a11d14dccb424e640abaf2db96e79cee71a8e7de8", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "01d73794356459503deaef03daee6c9eade34931adee0a3ff8b94c4a1a1c0207", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "2b8c6575dacd66d4725ba3aa968a46750b89872f67880d839edd57feccd94e81", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "aa19ec29dcd2b851556df60a7b8b63e4ed94320bb6de7d142a7f44eac0eb0d86", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "553370751a4ade2767bdc71dcb4c7bd3df2712010a98794212655a63fc59084d", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "305633934793785e7ab2b3f3dbe706f6319c72e82dd7293d82310bf472a6280e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "163d1cd496ca0402f5e63061e7b70bc3ea7bdc9b166f8d9ff64c66b2410dad00", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "815228de2381a9506582ca999dc3457a1458d6f9aa9feeffc95b51e463eeb0ca", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "2bcfcbe09ae19422c24eb7c7b049f9af6b9f1f072b8f7234480ff8439a0e11fc", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "d110afd69db81702b32eeae757c61d0d6568041cf76f93edcb4e4026045ab4a7", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "24eacc09c116d948148ac8a75379b1d76983510a78450d4dbdfc6401fd346ff5", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "c52efcd0dcd18ae391291541fc32b1f74e59cc27804022d6823a205d1b6f19f6", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "c52efcd0dcd18ae391291541fc32b1f74e59cc27804022d6823a205d1b6f19f6", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "467b201d8d0f8ab23c11174e7ccf8a7747d77e1df8076d22d98b864eb48220fe", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "d93b12650a89d758d2386dfed7e8d020044389a3fd5bfc488e628fb6863e6ba0", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "bdab9c4073792e5b728af43a85d512b0e0a8bbbcdb6edd513b8bdce43981c713", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "d6fc863afabcbde82bbb49156ca4246bca19fe7ee28f1cde24313733b25436dc", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "3064b9009daa22653fc76ae22564c48665905b69f807ffe88fe978c4a14da689", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "7204e03c60d050c98014bcb3328db4224adabb6c8f285c76eb8a85123feaef9a", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "eb1a4590124dea502facbaed42082a9e05787abb162c8242001aae0e88f2c8de", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "c14c13327c52d5b92223b11f4aabae1d754d2a3b67480ce719757a31f5adb345", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "c1add022b374995475bdcff3210c81c67974938639da8a981e01ff09b49e1603", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "39a1293e8158d37f68993a66e0dd6fea75bcc04678c49602975ee519db25d78a", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "906f611ee03c639f5824e3414a2120c0e608ccb673048756b06cca76a8870a72", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "23263e0f3d69cd6476a469670a581adb2b0573a0eb8fbb63ea96e2604999407f", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "11f79107ac45abb175db843d35583c2242b1b7c6590877d3e179ebc19a52fcc3", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "71ff127ecb67636f1ecee374a385af9d42d52f7e8e9fad3a317fa06af1e19bcb", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "129f7da962a94d88975c0ddb0c1f3bc604663ae5d9aada6f28b26f69757a0de0", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9f12b0aeb4b6bdf864c7e0c5f764d9350375b6f3ea5e5b1d5c4055c50e303096", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "c1add022b374995475bdcff3210c81c67974938639da8a981e01ff09b49e1603", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "416ebf0d2f050a556f164d20a4ca0b5b95c5c1cd855748b1fcf4cba517ecf585", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e0cdf6726245ca2433da562e5ad78a7bd4e88ae1554a71728147e94383da48b5", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "2597f7da116a62fdd4cd431f5899205f682ddb99a7ff6b381ba0b3716adb6699", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "af9a68624ef6bf293d6c7bf7374f5c71a08fe86fa009c8f53a57e88c1f95adc5", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "6a9d414039dd413485d298f66b2b01792012238c1f5dc40135d78757d998c0f0", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "2b5463b89aabd566b9d64b41431f87d0f7cff33843bd466d49d05e3ef683515d", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "a7bd3469a0c7cc2d5aee8f13f2ca39bc70fe56fd36fa1fcf526c757ba300c6a0", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "99e3ae91480acb722fc81c9fba518bfbf2dce096a3c18e0adce5df05a839291d", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "affe8ba4b9f5b47f82a71fa885563d3f38044ab0bdc5c17f1a8a31c603454be5", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "5c86f03f4984a49cdac60c462d52feb934cf6a3bd8c5d954ae371100a5845c58", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "5c86f03f4984a49cdac60c462d52feb934cf6a3bd8c5d954ae371100a5845c58", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "696afc7577acc0b8b37b5fc507e836493a1b8abb53005a60861161037aaaaf97", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "113b3fd5462ff8cd4756688cf64e17bcf1d0ad1fa32ef3aebcf1230b580f84ed", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "400b2441fe0d4ef909433a575326aff1bb8dd68349735772e8ae924cc4c78a5e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "9bc8e92514bbdf89f363f595f6b5741016b91fdc22b1c94e419cd7de3d788c39", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "e66196abebce243b01d149536fb4cc8c4e58f25b0085eb16f31881cf3cb1b061", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "83e52f6299697adf6c300a28a0b1017d508ab894607a7ad9790de20f01af54de", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "85f674c3ec5a4f3bd9c8c24d1076982405b8cf7337f0977464d7838fc90dfc08", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "85f674c3ec5a4f3bd9c8c24d1076982405b8cf7337f0977464d7838fc90dfc08", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "2bef85a740269ebe6fd6d0bd74baef160b46f681936a86465713a7c8ce470f4e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "7d9563fd772672f5d6f74368be0434e965993a31bd85d2adf724eb75e957dccd", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "43e01165aa0295863d8eb3e06e925ca9c8d24b1a4a7305625e3c2e44bb32d001", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "fd34f383599c826041f367adfa67158e25b6a3ea117ecad45bbfed4575f6b045", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "25cfea17e4f109a6b6a7ff3cf982bc8f498162155f0e3b90ee7b6ace048fd2b6", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "4035bab3155ceed5dc47e62351c578de25f83469dcc57c743e4cdf3c08dd5560", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "3f45d59f6b24f88d0ad0a967727ea5a86f1bbb4d355858c6a52f44a02bb0b460", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "3f45d59f6b24f88d0ad0a967727ea5a86f1bbb4d355858c6a52f44a02bb0b460", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "2df03f20b0db5a1633f3a0ed5a6dd7d2e601ebd001696c73fbb4735a3521e896", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "7404ec24b8338d86149e09e09def586bd94ce223636f49e24cac67c88a93ed59", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "b604eb16d3ab37610a3aa37b8cf2774c95ddac9fe94fce7ca320e851e75798dc", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "c1add022b374995475bdcff3210c81c67974938639da8a981e01ff09b49e1603", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "2df03f20b0db5a1633f3a0ed5a6dd7d2e601ebd001696c73fbb4735a3521e896", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "2df03f20b0db5a1633f3a0ed5a6dd7d2e601ebd001696c73fbb4735a3521e896", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "72af9daba52cc6002a16985bcc7034d6f1abd43a3cc8ecf37c7d35eac2e966e4", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d5a786ff88d64ba7442d8f7e784465e34ffed510ca86660346f93980fd1a9363", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "2a655626d23186f84c3b2ba3301827b8f4d452cd9f5944ecd9c4fdb8f918e5b1", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "3cefb9886c392079e09b87a80025d83a0f1b9ada28fce6dc31b44a6b6da0a2e9", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "22ab40d143861db8589c8f9cbe2afff829e284467a6d12e577f1276efa0b64d9", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "d2ffcae46c204588ca8acb09e2260c133aa0bb9986bd687544a74fcd0926e6ec", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "d2ffcae46c204588ca8acb09e2260c133aa0bb9986bd687544a74fcd0926e6ec", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "d2ffcae46c204588ca8acb09e2260c133aa0bb9986bd687544a74fcd0926e6ec", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "d2ffcae46c204588ca8acb09e2260c133aa0bb9986bd687544a74fcd0926e6ec", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "d2ffcae46c204588ca8acb09e2260c133aa0bb9986bd687544a74fcd0926e6ec", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "d2ffcae46c204588ca8acb09e2260c133aa0bb9986bd687544a74fcd0926e6ec", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "22ab40d143861db8589c8f9cbe2afff829e284467a6d12e577f1276efa0b64d9", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "22ab40d143861db8589c8f9cbe2afff829e284467a6d12e577f1276efa0b64d9", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "22ab40d143861db8589c8f9cbe2afff829e284467a6d12e577f1276efa0b64d9", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d5a786ff88d64ba7442d8f7e784465e34ffed510ca86660346f93980fd1a9363", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "3b8127a669ffb99d541da5033c932c54d2beee864c6770b99e2bbe614eda9c9c", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "870c00afc4d4c2c502c2e719f8416419302e20331b84546e31d0c7189c0716ca", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "c9fcdb26de447268c2ea61d61bb07f6814647983aa8dcb5e4ce5ad276b2defc3", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "d9de981b6e19903d439bf3451edde5d1034f253f89783d771eddec56bd5e3f54", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "d9d4d8b1e879ef37b2d54cc3e4bd73f806b0d1232379ffdd1604f8bf953938c5", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "55d1e01494ce2c82c1c121e3bf02b46fd76ca99d13db5fb07b5b1b8fd14921a0", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "7e8a29cd2dd165c877b815b5a3bbe570e8b903312fae3951fe4351e9e3619687", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "2df03f20b0db5a1633f3a0ed5a6dd7d2e601ebd001696c73fbb4735a3521e896", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "2df03f20b0db5a1633f3a0ed5a6dd7d2e601ebd001696c73fbb4735a3521e896", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "aabb48b25f2629c06cba9eb4e976c642588fde2c7ca384b733bbc3aa8219f7db", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "a2fbc28a28a914c340d232da0469a74df886e385fecd776d55499b6f647bdb3d", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "2f663164fa10ec16b3b2d8f4dc1183571a5ce964afc4930390a688fabee0a7ad", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "c118ab243c437f4fdd178b9a8bef44bea3184f1d6e92f10b0ff81b19581527e5", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "3f45d59f6b24f88d0ad0a967727ea5a86f1bbb4d355858c6a52f44a02bb0b460", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "c52efcd0dcd18ae391291541fc32b1f74e59cc27804022d6823a205d1b6f19f6", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "c52efcd0dcd18ae391291541fc32b1f74e59cc27804022d6823a205d1b6f19f6", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "f053b333f2f500319379b48a4b96098120739232858f1f41129f5a7c7e88c3cf", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "c52efcd0dcd18ae391291541fc32b1f74e59cc27804022d6823a205d1b6f19f6", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "2df03f20b0db5a1633f3a0ed5a6dd7d2e601ebd001696c73fbb4735a3521e896", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "2df03f20b0db5a1633f3a0ed5a6dd7d2e601ebd001696c73fbb4735a3521e896", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "06cd85c296cb84224d618846253f69e1244d5c5c139f7ff1aee795cce588badd", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "bf29a59f64788a6f4d3a0ea17d2bbbce77e1010e9fd7765913dc352ce6912ac3", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "155e8a85490ad2fcfba7456c63b03d60b7779748a6e337cd710691b308233dce", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "e42e5118b313b3084bfdd98b722bc9edade4a8662d25fc29a006ccd63b3130af", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "68daa497436e4869c59095f77b2b6fc44b1ba6863a574de6f7ae8d72a9cad8da", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "d2ffcae46c204588ca8acb09e2260c133aa0bb9986bd687544a74fcd0926e6ec", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "9842a45f9fbcb54e6ca666b623dca92e04ad072a919bab838ebeb7d872d96f3e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "712a42ed789fda73271d3687ff9c3f29dba412dfca43c3ff49a9b4698cf5d919", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "9957160c399dc3c0378896a058a4700579841093bf2bcfb233f52abe4e31e923", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "0e70ac2ddc9880c02640ee2f529a42cf21ec111e421d52a9ffe728a36099591c", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "a9950590ac7921395c2bfd1b60b253a39d4722eead80c74dcc81500a4853245f", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "c6a8618868ef36932aad40af572088a97cdfb57031985408756d2fa32a96d43e", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "9cc4c13079a70a3272743e5ff8caf6df1bbb1a1793e49aed53a0aea262110220", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "81f23f8e97b546ba3a847dc2c4c952c111107dafca611d6610b4b413ff382dc3", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "82022e7d8ff66d1cacd3ecda1023912d159d2abebce9505badbe6c874cfcbb6b", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "7175cd6eab561b39e15c0c9f1f9e70855a780dbafc2f2432a5a580e4b47db2a1", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "8bf2463d8ce22d8022b4d64b7da0fd8f25f09fb805c2b8699592cb06c0cb1c58", +"TR_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "c8c27c40cfe38c7b45b9d757d526b11510905082a94998f7d6b10e69d01d19e8", +"TR_de_ethereum-test_definitions.py::test_builtin": "b3e8a1f20e942cdb019441dbf765625729daf6a284e52bab306928a45ea69a91", +"TR_de_ethereum-test_definitions.py::test_builtin_token": "740b9f8c10eaa2633f19a0a45902f187a0c1dbd7840d816c3c4f38189c71e0e1", +"TR_de_ethereum-test_definitions.py::test_chain_id_allowed": "5afdc935a40abe255b04db1c2908abfbfb6a1bf8a07a0a94f30d1af3849f2c32", +"TR_de_ethereum-test_definitions.py::test_chain_id_mismatch": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "30752c299e8bfae62d3731ec50c540ea79a247148ba4be520382290dfaa73f20", +"TR_de_ethereum-test_definitions.py::test_external_chain_token_ok": "03e7b8cda3b31aae31fef44f61e77f650f858fa6558bf5e566dbfffc7a97fa8e", +"TR_de_ethereum-test_definitions.py::test_external_chain_without_token": "02d5dcd8688d6551f7422257b650470587868458d8c6096cb6e20acb3538c0d6", +"TR_de_ethereum-test_definitions.py::test_external_token": "51ed0ee2bd08d4acb58c7414da1ecc71af435c926763891035a360736462eec2", +"TR_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "1ee771caa9f9c8379d651a203ee8500bb09df482c2a8f36cc02b86df08448fc4", +"TR_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "062f071ebd877a96b2f8f67c200813abe9baf23ad0bef97c2dfa8cfde25fc546", +"TR_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "8332c098358937c5b3af78c7d9c64c2423c41a4f2302a4e0399d5a66e5834c23", +"TR_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "97f5f1a4d483c146aec0e7b3a1206b6dd8f10e2498b5c0b08fa9077eff484491", +"TR_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_slip44_disallowed": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions.py::test_slip44_external": "a94b038c0873959c842a46401c91fc3b3ca5cc97657e750b0055fa6d1b6c2393", +"TR_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_bad_prefix": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_bad_proof": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_bad_type": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_mangled_payload": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_mangled_signature": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_missing_signature": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_outdated": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_short_message": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "85ddd6399c3bfa41388844bcc16ee9318abde7699b1cf4281db7f5d5c7ff7296", +"TR_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "33d66e5c8a9984bd7021c8277d416952c15b55c4115e595a262b16884895a580", +"TR_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "50e0e8696a9746c6588ca25ff913de969db26217bb175b10b02ef0836a48bab4", +"TR_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "21e45a5fafdb2cac9db757123908e64ff626515b6bd02b94098ab10d318c4a04", +"TR_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "ca4a646050a19edc2f95e8e5afd9a74c38e293d553e526c6fde0122fefb5e152", +"TR_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "425b1211ed3727879884b6e5cc83467538c7c1da448f96ede7704282a621baa5", +"TR_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "b95cadc2835dfd1dfa6cabc06a1422f47514dc5a8ed44047031a5f8cc37f49e3", +"TR_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "80257ae887372b2ff386da8ab0b2784817235d7f0fe4f3fd1dd30095cfd02625", +"TR_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "33d1be8eae109d9355abbad9b073ec7be1e61c09ebceb57f26cbf67094bc7de0", +"TR_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "76b397457b8a0ab58ea6af09e7ad4799a86017553979069519cca4c22103ec72", +"TR_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d6e2d5330e0fb7367f862ee3467ac128bc0fd23bf726b337b6bb73bec5ba42b5", +"TR_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "ad3bb6aac77485c40299cd841fee3811c60e0d2b41c6fea233c71f280a1c28a0", +"TR_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "8be94f3be817073323881cbae156c499a5e0cf88142d112ab6c2b286ea0f91d5", +"TR_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "8be94f3be817073323881cbae156c499a5e0cf88142d112ab6c2b286ea0f91d5", +"TR_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "8be94f3be817073323881cbae156c499a5e0cf88142d112ab6c2b286ea0f91d5", +"TR_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "8be94f3be817073323881cbae156c499a5e0cf88142d112ab6c2b286ea0f91d5", +"TR_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "36688710a867080b306079d7b9d337002829a6ca45a13202ed239760f6064c16", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "e0edc30cd5ef74c277a87773932badae647578e948c0eb00ae0fa70d5f85c8f6", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "aee2ed2586e8ae9f7d5b56ce5d479339774d4a984fcc3ef29b58c8a8930fe59b", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "a49cd713122ce63a1d8ff522e33d8bf95ea6560796418481659c5692a88a0c73", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "2ea1604098702c8f5220b88cf66339600e72e58f2604d77bc5fe3f3035801556", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "a4feca0ec37c674e0d7cc62f1248d57a21a8223ba572c08c537112d70439ccd8", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "aee2ed2586e8ae9f7d5b56ce5d479339774d4a984fcc3ef29b58c8a8930fe59b", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "aee2ed2586e8ae9f7d5b56ce5d479339774d4a984fcc3ef29b58c8a8930fe59b", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "aee2ed2586e8ae9f7d5b56ce5d479339774d4a984fcc3ef29b58c8a8930fe59b", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "ba95f9ee2ceb53ef1f0e38ef847d1e4d6754209f3235f822cbe0df89a86a7fa8", +"TR_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "4c8851a1eb2e50be4cadba3c7a0a177c4951cc3a851a4d7009cfc1fa6b2d65c0", +"TR_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "3f5db51396e4c37c8e09469ea8f051d6b51fa7f23816541e49a95dece0e1dbfd", +"TR_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "3d47427a5ef14078db3db3b920a0ca551e011e38e18c24d4cf1a32d39c8f025e", +"TR_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "060be81d3697aee6ddfd92ba94013f9f8c596b6f98295a9d9e580c344a24c208", +"TR_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "aed507cfe4a7705f49e9f82331912618ce87d13699d1ab9fdcd37707a9c62ec0", +"TR_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "030f34d9ee0311b0cdfe5345e6ec6d690bc175a51a36918a1d84f10d33125b71", +"TR_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "8e0014f5b17bb36d6cde9fe42e2936e930773860cdcb309fb34f469792212911", +"TR_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "fd24343462fbb2cb828e6320f65c25b2e10c2b937687834b24bc8f4d5a46375f", +"TR_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5e0749a01e2d6a7efbf563b4b73335b79ee8df70d8b30e497c9a3f6fe5d1f624", +"TR_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "0d72d4acd21c7488625dfdaf6be3b36cab44b52a637c0ca1641eb49b51d845d5", +"TR_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "9e823b3ef88ff48f432a20936bd46bc8292da7907bb9d18c3d9beb797670665c", +"TR_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "b8bca26491250c9c5cd01d7f2ae4d9385e45bb10a228dbd2f7f56dba45758b75", +"TR_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "a1716338c41ddd4e2201df931cb054a7965b62fb5df6e44e459832be7d2d618a", +"TR_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "da5cde3b315c26c6707907cce8a038f172847b52c97fac0b8f34d63c4a42a4e2", +"TR_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "1bc8b9468a2f0143b1f82f2f279f1551b0c7f9054fb2ec58153cf6b845c9c9f1", +"TR_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "074f26b7aed4cc76fa4165009c794e9de2df1c43d3a0040436c23ec7e4df5ecc", +"TR_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "0936114e1bf8ce64173c5945b34dbfe98e542024c5691f4e9f3856a459be1a44", +"TR_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "1a14787b2a20e88286d4aab4b8bb9d4c5554f28fd807fcd8c5717ea5975960ef", +"TR_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "9e823b3ef88ff48f432a20936bd46bc8292da7907bb9d18c3d9beb797670665c", +"TR_de_ethereum-test_signtx.py::test_data_streaming": "19fc2f210f3bd6ed9e22d6d0f7b71228cb7fc3d9e23c6641d343aca580725567", +"TR_de_ethereum-test_signtx.py::test_sanity_checks": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "0a83a218d9be1e77565920ad76ecdc902718c3b4ccb1570ff09c276e2cebd02a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "b0a5d0f2b85ad2c5515120f1d8764fa457f3905d8172ff77a64a353ddde3981a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "4ba0ed06c8da6a2b41a210c8109d2ca20199ae362921805fa0615c7999ab829a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "77bf8810d5f1075c0d802facf2ddb8ad8e32acbb3d6fdaa59ed6cd2b3e6d1110", +"TR_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "4ba0ed06c8da6a2b41a210c8109d2ca20199ae362921805fa0615c7999ab829a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "0a83a218d9be1e77565920ad76ecdc902718c3b4ccb1570ff09c276e2cebd02a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "0a83a218d9be1e77565920ad76ecdc902718c3b4ccb1570ff09c276e2cebd02a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "79d34ebbc40dca3d4ac0242c8703c0a2fcc494d4e74bc7b041f4d94bff600cf5", +"TR_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "79d34ebbc40dca3d4ac0242c8703c0a2fcc494d4e74bc7b041f4d94bff600cf5", +"TR_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "0a83a218d9be1e77565920ad76ecdc902718c3b4ccb1570ff09c276e2cebd02a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "0a83a218d9be1e77565920ad76ecdc902718c3b4ccb1570ff09c276e2cebd02a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "850a4276e387f098c2c24a2c4ee53e06bb67605f063e2bc89ba81751dc40df04", +"TR_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "6843008ea6eee532798653da080242b0d013b058744eed96149249c3783a6456", +"TR_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "df1eeeffb06494847116b6c4989a379d8724c04918e04d79448fef1069268ea5", +"TR_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "0a83a218d9be1e77565920ad76ecdc902718c3b4ccb1570ff09c276e2cebd02a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "0a83a218d9be1e77565920ad76ecdc902718c3b4ccb1570ff09c276e2cebd02a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "0a83a218d9be1e77565920ad76ecdc902718c3b4ccb1570ff09c276e2cebd02a", +"TR_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "ad20331cc72a35833d46f361e474230e2fa10fec72bfacd8b3abf391a2eba904", +"TR_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "86aa951895e8e2e6f1b1ed58d8b5e68d873279bde35844f3c04e7aaf75e0d4fb", +"TR_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d9cb48a12e2123355252830b6d24a45a3935111603a5c95d9e265a14d71446bd", +"TR_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "6f778cbf82e9f848f1c573561889fa9148bbdcb580922593bf04bd7e4ffb9381", +"TR_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "b526af329b3feb9ec71eaa6064d928b6ae7b5ae05f4ae77104b594119c6d5416", +"TR_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "849fc13155a305b0a0740ca7b63b2b8ee8022d7af02df06b3de2793bfff89773", +"TR_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "4252eae048b2dec66e9b77c4079a447b3c9a34d559f5e0fec1f1af73c9b29173", +"TR_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a6230f46025f8621cbc5b43de372c120f7eafc742efb4b7dcadee43ad38a142a", +"TR_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "4252eae048b2dec66e9b77c4079a447b3c9a34d559f5e0fec1f1af73c9b29173", +"TR_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "b526af329b3feb9ec71eaa6064d928b6ae7b5ae05f4ae77104b594119c6d5416", +"TR_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "b526af329b3feb9ec71eaa6064d928b6ae7b5ae05f4ae77104b594119c6d5416", +"TR_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "44804809123e41af5ad31312fb92f8b185bfedbf510dc29c1f7b6d8966212bb5", +"TR_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "44804809123e41af5ad31312fb92f8b185bfedbf510dc29c1f7b6d8966212bb5", +"TR_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "b526af329b3feb9ec71eaa6064d928b6ae7b5ae05f4ae77104b594119c6d5416", +"TR_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "b526af329b3feb9ec71eaa6064d928b6ae7b5ae05f4ae77104b594119c6d5416", +"TR_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "a3875221e4f32e8e0c032b73b03ebc212e66ea692012b9ce53025dc535c15feb", +"TR_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "1b794a2550a6c06476015dfd224bfd256bf25febecd52376123925b097d5b66e", +"TR_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "70495e9a4f6f5c76d69310afd7e10984cad4a58d053cdfa82ce5ac6f95d14667", +"TR_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "b526af329b3feb9ec71eaa6064d928b6ae7b5ae05f4ae77104b594119c6d5416", +"TR_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "b526af329b3feb9ec71eaa6064d928b6ae7b5ae05f4ae77104b594119c6d5416", +"TR_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "b526af329b3feb9ec71eaa6064d928b6ae7b5ae05f4ae77104b594119c6d5416", +"TR_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "ad20331cc72a35833d46f361e474230e2fa10fec72bfacd8b3abf391a2eba904", +"TR_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "c648433d084c055a228762fed0c9a3689177f66a326f7ea54d339179d078ec29", +"TR_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "3da13a71fc91656db3c0fbdec26e38fea25faa51dfc2e6f120765a3d9b5a8488", +"TR_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "8d2f78bc5a7bd93182b534bdf6bb3ad744563aa1c23cb1e06ad6a86e8bc730dc", +"TR_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "95e6f7b050b578bdac7d1f0536898760dc3a2f39575b4e2e631f076d60062df6", +"TR_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "0cee720ae1ad1e882081db99ed8d39ce35ae81ba9ccfdb94cb83b77cc7f728ca", +"TR_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "bdff11179cbc56ecc1b37c4032df0a9b25087bbb3783769f24df67d0f7b53e59", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "bb105261595f29e9726fb4c1133fed99b984da5652885bb82b228e03dbfa29d8", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d8d73ba696df4f88c5c9b307080389e156b68edd1efc315a33c89ab4ace0f53a", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "910ff4d965dce00d13a99682858f41c3df1d0dfc91bccb500a59525c70d5143c", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "1466d77fe4e44f5f0546d843be5a294e44da817a00ded2d5f7568f3a35812df8", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "6769281b75dc46ffd0b697d10f1e34deac4eca7f8a504225cada9f363d5593ac", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "6b0c6d8e3515bf3226ee96cf1ae33294577c3735f2a8cb343b64421bfe999c4e", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "bb105261595f29e9726fb4c1133fed99b984da5652885bb82b228e03dbfa29d8", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "bc99b4ad2e3f5f96d4d43864eb37c2d50aa8b8097b7185785eb85231824f3ddc", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "9958d6db67ac58e67b61a289e18b7918012b82622ba7b3bb6ec2b1d4b7fc93be", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "7c0b85a6d57d1b5a1545d564d0fbf7eb91e0525175ea08ec2e0a289021478bd6", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "f1f792711e287b4e54821d381747c6fb5ee71837c87e888ab1c7bf511d0024be", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "d2eed527a32996aa5f01d57b81e2a7592128a629659d480ff16c09c37f9cf348", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "75bc39a173f4f2eafab20e9e78aecbeb666db2f5fa5fec9f3b64568dc14c60a8", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "bc99b4ad2e3f5f96d4d43864eb37c2d50aa8b8097b7185785eb85231824f3ddc", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "bad66ee6ffc876e2201eef7188bb8e0dbf461d039478e54729f37a10022779f4", +"TR_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "bad66ee6ffc876e2201eef7188bb8e0dbf461d039478e54729f37a10022779f4", +"TR_de_ethereum-test_signtx.py::test_signtx_fee_info": "5eb6b19d57e74da370ac8173fdde7d8c7a5f52abc0306b2c6d22136212df3338", +"TR_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "879accbd24e82994661a48fe76bc217e7e3e9c94df691d2188bdf66a17d7fe81", +"TR_de_misc-test_cosi.py::test_cosi_different_key": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_misc-test_cosi.py::test_cosi_nonce": "3edb77751992486664a385b7c90d2a0a15c557fc86b672366630d467f0e5e0e9", +"TR_de_misc-test_cosi.py::test_cosi_pubkey": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_misc-test_cosi.py::test_cosi_sign1": "3edb77751992486664a385b7c90d2a0a15c557fc86b672366630d467f0e5e0e9", +"TR_de_misc-test_cosi.py::test_cosi_sign2": "7a68983fc2fbf15e30fe9630ac84d76a5c002f6af0e87c12e5a2ae76dad1313e", +"TR_de_misc-test_cosi.py::test_cosi_sign3": "d0e38ea253a4efd2312235a13c45acdc570eab71628e8a81712af89f19a90b3d", +"TR_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_misc-test_cosi.py::test_invalid_path[m-1]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_misc-test_cosi.py::test_slip26_paths[42-0]": "5b43863adef83034bbc8888d34e49d103f2520c309729bf48f21469da9d5ab9f", +"TR_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "e82fe1eff2c0e5ba6cdfcd9b3faff7fa2fb09bb93c23df68359ccea565408cda", +"TR_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "ddc2b938842c8f9082cd845a99cfb3f62290467d2e61e30a5acf88fddaa49fa2", +"TR_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "3af1d2b44111e8b6bf9d6e9ca4d50a0a9e691b1e8b90644ee86a462985950b5d", +"TR_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "3e2dc3d68537a66f712e42ffeefcba7f9648f5d9c7557aa4acf27f6fa579e6e9", +"TR_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "473eba8173a6126d5f51b4fbd27cf957751c48212bf0027ade90cd6837205442", +"TR_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "569d630a8037136c8c5f1c4230c46494295ff33e77dc57456731ecfff5cda17e", +"TR_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "bf2f56aa57a78acd0043e3e98954420f8eb5f049cd28fd90df0c3c99f0248cad", +"TR_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "d7dc1acfe4fd8703196d9843a17035851953b4edd1f7834c6070169d5d5cafa9", +"TR_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "c7b7e14122fe0533af1065d32dddfe4a9655ecdf6abb73168cbfa09940f2c57b", +"TR_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d8dde19444cf01dcb81ccfa54f513bb3c4f46de4a67cdffd3666132382948926", +"TR_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "d5c5612f12c388adc93f5950a214b5f694b869c19a94e754abb21023c6f99384", +"TR_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e3567b7cdb2ada94147087576af0b0452918f1a4ad6ed10fd2ff4eba03cbf3f1", +"TR_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "b93ce2321b776a2a1c66af698a8a5a43a15fb1f5eea3a26f68180bc34f3b8743", +"TR_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "b10e955d851abbe4b43d64eb8a854e3328f8db0c775b68ad96aaf83a86cf29b2", +"TR_de_misc-test_msg_getentropy.py::test_entropy[128]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[129]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[16]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[17]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[1]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[20]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[21]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[256]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[257]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[32]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[33]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[3]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[4]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[512]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[513]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[5]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[64]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[65]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[8]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_getentropy.py::test_entropy[9]": "96d261b5734483ab043998d5ab13500076f486d98d43a98d6c31c94601b56d37", +"TR_de_misc-test_msg_signidentity.py::test_sign": "cf0df9f1cb1b55a4ac462da29c18639b705bca53a852eec227b121f14ef1847e", +"TR_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "45a080594908c0e98fc4daf84485a0477b76aea731fed2818a5bd48b559d1925", +"TR_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "ba37a1e911be0511d0c3a645f56194b9e60c431d9c94938456706bde40853bcc", +"TR_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "733125ca2b543ca5034d0c888880d47036827d612d274ee4848e55ba6ecceef6", +"TR_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "a3bdcf6b4a0bdff3081e9714cc4d905ab96f6fb4fc504f4de4402fdefe74d1a3", +"TR_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "1fb3b75faf5481b37bb33f6b314b6e24c59559986e6bf5afb99475a32f921aec", +"TR_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "3490c557a6f4a04c8f36162d7c11818635c0c4a63a066df7a96050615d1efe43", +"TR_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "3ec6065ed0e24af2f21a7fdf3a98c1466854d5c3bbe0a4bf0c5cb0950cbb49f5", +"TR_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "878e78b442b8f3c4997e1c4ebf930395882a644b78ad4c89e6bdf4b417671a48", +"TR_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4bf857ddbc19b5108dd607d600ef8679b2a61e26917827a78276f87a2142dc07", +"TR_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "0c5d59403208848f2cb0c423984143d0bfeeb2c138ad3d20b8907f59188c0a18", +"TR_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"TR_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c68d72525a0e3bec09288cb20203351c91cae7428722af9ffedaba07935aa2a0", +"TR_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "48347e9f516e0d346e152e152b468b69ddc10b0fd297868b01fdd317d301ab93", +"TR_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "542523f2ef5a7c6084cb23abddee6e73671c8edb8f255b8ae05258ac72aee1e8", +"TR_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "94dc1cacc56b577b9eebe6b2544855b04becf0cdfab9d647fa30f9c221595548", +"TR_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "c78ef6eace4447842a4456a890521d7875699465764e53bcda5a74668dd183f0", +"TR_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "ad542865284b21f9c4c00ab38c050a52830f3187581d512e214bbfc4e24a2589", +"TR_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0d2a768fcc134a0022b88da84dbaee6378679900a05a65296158152219263f6d", +"TR_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5c8d8d454fa25491064fffd40a8abd87224190b96aec211b578180fa62692eed", +"TR_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "2dfdbbdbd3b7ebcc0f2918416a19f9801bd8be3d64714e54092800499fa5d1b1", +"TR_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "5c8d8d454fa25491064fffd40a8abd87224190b96aec211b578180fa62692eed", +"TR_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "2dfdbbdbd3b7ebcc0f2918416a19f9801bd8be3d64714e54092800499fa5d1b1", +"TR_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "6a71e94eb993191de937d22ae57b86e49e7b314beafc522e41a837126d3076e1", +"TR_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "0bfa077abcdcaf2895f88e93bdde8f7fdeba1a0449d64f0b1885de40483fed85", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "bf64b6cd256f36a78857da0d44b8335487b5082317aedfd956cb1bbd02106874", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "542523f2ef5a7c6084cb23abddee6e73671c8edb8f255b8ae05258ac72aee1e8", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c32be048a60986e3a8681c251dc6061180b54755ad7fb81764a661b0b4282710", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4485217dccfa4d57749a60b6abed0b71d0e9b5d01583dbd0650f1c0469bea519", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "9b6ef6e995b50101a2e91cdaaec329896953274f1b928fe44689b8d5efebc996", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "7dd6300de7c921cb74077af9b48fa9631e23ec4af95a3c59267611820998a949", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "357f0b032b65e575ab9b91f7cb4055457d6fdb132c7144da0f6b58178490135e", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "9ed9cc950dc55b3eed48a3086897c59348ca6c2a41f7bbdfaaebc94cae3f1d00", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "61100e98cbe540ae063aaf827df491d4f465bde63356eefe312a82c46ac19f66", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "b68ae1eb8c8d5ea0fe8bd835b9992357ba82acd057c3a7fad92620b2fcde0380", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6132d854bc955dfaf4743ab0c36371ad632489b00a9c85dcd2566e9bf63f2b1d", +"TR_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "45dd5536a3a4321ac8a5eaf3851d27f111cff27de1c4811dbe0c6add56759b7e", +"TR_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "31809e911bce219465aef56811b960d7d5f22c77509aab3758a83ff4f3f7655b", +"TR_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "cac483efd0b75a987383aeefaae29dcc558b671bcf8a6ad48a471a2997557c83", +"TR_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "3950238d2b366f6c3a03cddbdb186b49b395d903998d7d6c168840cbc3f5c3bc", +"TR_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "73b7af3f36fb304443a9a26f66dcf4aa6993fb2e637f7c42221a95fb802cf29e", +"TR_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "9837b5d38dc81be86eeedd19ec9a4a9d2cd92615789efd92769e342cbd867720", +"TR_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6b1045c3b6020e7dd58b261d1b57051d24d878fdb015e1c5c5b07859d6da9a18", +"TR_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "d9b105bec40e9f42b0924432ad60be340aff3464da1d9739f39800f9f1930eb6", +"TR_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "b991638a8d35840af7dd22e73ce353de4bf935e3c9b14a986fd753a0f35a3f84", +"TR_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "146a3c74fa17709e0996374ddfff7db66d1db17ef0ba0d5346c9f9ec8d9bdd8f", +"TR_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "415365dcf226a7856ad22bbbdfaefc96824c8aacab897c2eb23e5b4b0e3a53b6", +"TR_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "97da9a211645c23f560dc04ae8c0095b932b6d288b30474a690e7938dbb774a7", +"TR_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "932d5ef9a0bf0fcf9b69ce6396b0ed7cdef70bd7b19d2444426f489b4f277bc0", +"TR_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a38f16f6b570ba8a81a9142728e8edde8915ac3920a5db18c53edd5690953b57", +"TR_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "495a8e41a4d7f832060d2c5e45eee55423cb605c0bffdca70e22e469d22f8f16", +"TR_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "79520d57bff7ecd10ddb55b65ebacc6401523a24779f53cac72d62049d2bee8f", +"TR_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3fadd310cee7a2bb643d7bf77136ad6587e0c0d545032d8b439990a25fc7b2bb", +"TR_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "cce919b35bdbe5be8848e577995564161f8ad34285c44b6ea9f1b4f0631c0b40", +"TR_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d5502db50cd32d97d3dcd4145aad7093fce3f797b6ad76ba31a016f700f7bd83", +"TR_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "96e1ec26de1d87cf9091a5784d0e087915e26a3753d4bf26fcb6a7bb3ff3d331", +"TR_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "452dd2dc3be0e42d2e7d6d4fb747d62b050bae90b5dc783e44105f3f465f77a7", +"TR_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1aa05aaea57281508f6b5cbd4949a145245a8064fddc70345e8b37ce009c6676", +"TR_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f66d39ce315b8c1904ca06076e2a6785fe49e388d75b03bf4c42c26f720a9230", +"TR_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "1da2589d596242c6b0bea2e6fedc846b8ec6ac0350877ecff98d20d8f679316c", +"TR_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "5f7a0b9d78b4aa513c422f48ed85f5d6bd4fbae2e518d9d3d29b3c755d65a8d9", +"TR_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "82b5e17ce63d7adfea18c3e00c1ffab5923f7c211273e62ae445d86a4672ff6a", +"TR_de_ripple-test_get_address.py::test_ripple_get_address_other": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a91736e052b30c155c785972249f3a3e6a9268bae0687b9220d11e6e6fdf988e", +"TR_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "47ece750cf831f4803169a370e4e9fc57bae4fccb0215114c0ebddeff41726ae", +"TR_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "836a0ff328d8dc08e61b4fb92ae7ab27d99cc7fb78fd44847628e8462f696a05", +"TR_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "a0366f7fef6580fd0c2403cea4267e2237825757fa0c921d3c7ec19ed2a214c9", +"TR_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "5eb9ec355b670a8da260198ee28b27f447976aeebbd2449e14bf9cd022d36c9e", +"TR_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "5adbf17ab40b3d5b49168786dcd2a6b81389f924d9af111b11ec19fe4e52c73b", +"TR_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "f13eeb86f8a1b85935bdbbcca604d7901086fb5022a444f993ed04cb8f935202", +"TR_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "9b5db25ccda9345e7804c64b455e42b20086cff78d1b4ec9a7f07a133f9a1336", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "d49692ed2ec85c8950c0701d7c58247e3ba7bc9b350380d018eccc0ebfac8b2e", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "da249b8894afcd049965b37898b92e600ddf05d0ba8cfc88566508d506527da3", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "0065a42e5bd2f690379e25ca05fa4989b0d70cfa7916fbd268cdb69185389f88", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "b1613b5bac3ac1aa553bb592eae2bdd2414eddee43ead7163fa542a291b53085", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "0f6b4064228b42bf6c50aa08ee1ea337a9a63d44cfe4ab50838778be300a5cb8", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "2831aa066a247b447677b23a39a7f932ec44bc8c3db32bcc9595e56131e0daae", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "6cea92925376c42a2504314ef1af31a59e9deecca6b1e613e79f2caf8e924fd2", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "5a56107c937080d559731db0b1db8c8b45be765ab0e8afd3f5bf95b456b0b71a", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "42eb24f75cbc4ab4532cba7da1100d4ed69aee83b19fea4be08df33eee1d545a", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "ff46237f8586d829255bd59c50df07ddb92577018cf9eee706fa4141be10a978", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "605054a02ef31b405fffafd041b860b45ca2cd44e6bb4dc68614248ebb4af907", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "8e18dfacbc2af952db87421eaaec2bca74c14d2703bf9675b086ec8de2ac30e9", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "7a9294dd61fc0f52b336de7d42dc542d5deb00e85e2d3c10602ef7e5dfedfdac", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "61b70bf0e11cb52122fba7d56ab8365dd2cb3efde6456755aa9572d8df15232f", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6b9092e67b1ed8c1a27663adc0d97fcedc8d01683c16c2d04a5a1c29da80417c", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "9f14927d68546a195c5fb5d51db8b98e30ecde5ebc2cde9bf7040c692024c857", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "bb67bb6387d9adc2cf06064d814f34b9c24a47c926b912d6522eee5f3da7b472", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "fe5317dadfa7616af2bb9ba4ab005f4536b381d40f71c519faad8422b9833221", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "f8269b2730127a24183d72b19019ab5907ac45fe1ef0303f6f9ab4f3930ebfae", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "fba333b9deaaf149e75b386d2fe4a6c5a558708e929902d05d10721629688e80", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "b7670c6384404369bbf94c49d159f444562239005ac6d0478165e295b97bd0ed", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "b7670c6384404369bbf94c49d159f444562239005ac6d0478165e295b97bd0ed", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "9c14b9f6ff02176d2f6d8a62b32ae461150b458c1a2473efc846fd489d95c92b", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "016d2b70c59135d8857d9e28bab6ecefaea169ce13c139f30495c69a001c70cb", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "d0c1bcb1718b278f8c81029b056021cfce1fd7f2b1f84ece7610d9ae491601f9", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "cb188713c23af65566bf9fa4f7f21ed25ceee82bcf296cab6591c2eb99463801", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "3549330117e2bbfc27992794cdc60724fddcb8c3c40237d77c9f53155f545f57", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "dc46113339a79d0dadf8e6e508185b8d037de2cfdbd721d38ed00e322bef03e0", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "cb907f05fa77dd4db7322d7dc48ba8b1509f8c02ae216b3ccbbc3c78a1793ea8", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "cdf8329d688efd4db323e0eee136253dd7bb2b9d902d3c7e7ffb23a0bbed0df0", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "0b955f958e9f10b537bd1a0153b66e0d3ec8a49ad3a5a36bc49cba4c579327a0", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "deb04802e65a9e740c9e6817578e1bc87fdde04666daa928a6741f9af12e5f81", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "a91e130011bfefd6d10428db28edf3cce5ea56aa0e430ac67a1535777cebe7f8", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "164276236050ca0342c49ddf88bb41946cf254ef244699ff8bdd5920a13a756d", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "550fb7b4f94ad4ff57b30a0c115df639daff6f8de4d163af2b5787597940acfb", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "550fb7b4f94ad4ff57b30a0c115df639daff6f8de4d163af2b5787597940acfb", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "e6459a365bef440e03b0478bf8cb27be5dc0943f3719612e094bd913211a3c9b", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "3dabcd35385254f1787fdc44c2e1e05f61c230a03a9ce7ec0db269727bb7bb58", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "1d7b8695e85c535813e80ad39837c0f86abaa8c60ce16c766f56256a68f0928b", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "fb98f46bd27466d8a72c1e093bdf92917300ffb8a09f76d04e980c268a96f2c4", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "50305421352b0aac7c5c83d079d3cb66e0c4007309611a8dfd581760854d7f3b", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "8f6866d9d88be9040fcdcce99650e04085cd3b3a10c8ed31e108b133aeafd52f", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "3b84e7014c99fc371f6e0df0505cbd721d540869b5531f341c693bd292c12243", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7f5695c6f44c26c267f3f75f0b7058f70abd09bab2e17acc47f2cbeeaa127b88", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "88524808f83863703255d4ba4580fba0e19323947b0a013a1a400c4a82853098", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "50f3eccc7fa4f68ea375622e2a88dcecf87cb46c79b874d4d6107ef5b73e6fa6", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "5246d5ded358e701ab2e55125d46edcc716142caabd8f5358b23e67fa5ad89e7", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "22be37fe2c849f7f6f2a196ded4d97e94e90ed99a54bf24dd373c05f3f83738b", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "aec1bdf1bd498e73c63fcee4ab070578c31e000b119983faea1209de9708bacb", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "07197d9d9d1b70173e8147580abc75f5d6bace2a04b0278bd3d0a82f556f627d", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "96779b64c5d11e63225e2b7c3b7d4d6925c6e8a3a0ac6a5c510b4aa26e63e1b4", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "a51b52215f2e08526b202067d3eec5f445c7a2a491726aced30b217ee6c2164b", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "9db550dd07864169e07ea7d12ab7506a28831a0db3af32d65e3657d9fdb5a1f0", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "796a0ebaca7bad39eafa8fc0050157877e241cecbd7496a38935bd74f35ea3fd", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "decc79583441b9dc8c1f57af12d4f1fc15f367c25a98c4026c093b824ec7c3b1", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "1f647033a5392c832715afb95a7a5fd5618f9daa87fc6bf7b82f1022e777bdd2", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "f11da9aa5bdf254ea180d48208ab96b3d4faba8c7a8aceefdb48820e96b92866", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "126c6de6daa62fc5199eb8d97923c41c69f2966ebb3e20ccf7d5021436c65730", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "b9d9aa30886635d6b24cbb1f520544fb0e28b17b1c05282e941c4989c17c5a17", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "006dc94f552a71051fcdf41a8b3aab10298cbc0316838bbda7b0a0183b49a230", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "ef24b22cd0fb8d219443eee510f69f58c4682609136546e408095fb9de6fc61a", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "e94e24199064832d8cd1e05321275cd8c192bb15d1fcb7d232483f3c33e48228", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "b1c3b8845fa6170a5dea648fede2bbb595537dcc0f5cdfe55c4fc7e3bc73efea", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "294c35df1e008aa6525610615e537d65d1234640f592bc489c02a52b388bc273", +"TR_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "f835850a7d31028a168c665c20126c430e4f419813f128ffba7831dcb903799d", +"TR_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "3ecfa5efdeb567d10a83642129139280158952708715ae33ea8600ebe736f91d", +"TR_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "f0a3e17f92a90a958603fbfefb88d0c7509c0e71993b3de79f231269d52afecf", +"TR_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "92217ba5a8d82fc5613bf9ec079e82d4a1829e926b55320c10a3e96dfe8daed4", +"TR_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "fc19b47137e4bce98de25f1f13c23d0bfe286007c9f82c5752ddaf1d95a38e68", +"TR_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "911c32be991381538e037f0e3aa38ae6c4c33030710534dcec14f1914872c562", +"TR_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "4bc638f6addb86036b8897095c57c1e09d6e83609d5e0c1a5567ba5b71df1ae5", +"TR_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "4d3bc607f071c4ef819118d80abac69d95bee5760005c04448ed995faa782595", +"TR_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "c814eb1e85950c29f964390fe81cb6f7390b3d0d40f09462f04d836212a72976", +"TR_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "ab274137e73fe20f42adbe38ceced9dfec24fe0a0bc7592ebd99eb59723469f4", +"TR_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "0f1e308ca107b6bc76c5fb2ea187cbfa9b95d58304ded36b181d3c8c6e1a68ec", +"TR_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "c505d0c5ddc37fe9ad844ef2da57ab62bcf0be5b1195218f1bd746445685770f", +"TR_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "035132cc6ca87c51ab629e14fffcd8a0a95b1be7a52ae642d753b145ba3ab0bf", +"TR_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "c36b789fb07a5bcf86fedea24927f8aab250b5230d4b9e67173192e8075ac1a6", +"TR_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "5fd3b4a4ba25ec2d65632d7a17c7111bb4cb27098406a90a16a27069f3af26a2", +"TR_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "21a21dcec2478e12cbd377bd18006b3e5c23712ba5b81a78d3cfec03cbedb004", +"TR_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "42ff3f86c9ca4c2dc34b016be645191eda4131d07f29aa616a9ce5d085c30c26", +"TR_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "68208ff485235311b7e3f817589c51d56c14d564e3654aaa3503734a6095466b", +"TR_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "efbe52dd00cfadf9f9ea64df8b1b26c59e77fabb9a3dac83891dfd3a40864b54", +"TR_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6086432b9b49fe02e9b9d17d8ee488c0c6801cba80434ed265bb6216d8952862", +"TR_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "2119f3592b4f8d2a7c833d11705776470620bfb38f7e2f4a8914db490ccb914a", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "edb556154244f2cc332dba5e9d8b436498828be928d7a9ed492dff5951e6e1b9", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "d96167fbcd1389a0876d05bc0c11230304308e3b94321bfc670a3db52c2864bb", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "93413b76bba917a1536cd35e9f27ac75842d23734ac09ffee33d071fa2cb6ae1", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "2467ce0da90310a5a2708bb97a1b8b58f00f27a2104ca970076873fd276403b3", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "13ec3dfd564355a3aaf9bf88b971f16399809a720da680f70c40383222339639", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "d61ff1b076760b41766a7b6512532e218b1b85d1caae2fd2a545ca1895d1a743", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "2926b65e9fa2825d03c73420a255ff267393f914781838af9f41ee5ff6f3e5c6", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "210f6f1a6c4ad0ac66004016878c6508daf96abef3ff0e1bd6c86e63236f0b0d", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "e86f2b83c0cf71dccff26964aa9a9bfd08f7d487327d7ddd83372ab0fa8f3e80", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "e242fadc2d67e07273d2c9d6b4e25ed8d6ded54516d880ce6de3b22edc8895f4", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "610433692d6ed4ba3ccea8cd2cc5eff7a90429ba70281d102b7695223bf7d3d7", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "f581ef853c7f88cb2cbc5b472f15d9c632791302582cfb1949fd78b218766958", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "424ba8cd4b77a6e7e21d673aebba22debfa2cddc18dea3f1c012214b15ad1d28", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "032654ef5f4fea49b9b1ae901f87464b71a397b890c38c90aeb491b586f45c5e", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "886e75543dfbdc29f82adcd172fb1a5f380ff2b555b2dc4ee7a870ae93eef210", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "bf080d0a4d006d6844d3f5cb241293e1e8d57f0785468d289d5969e31c887838", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "437af362ede58754d3b31fc939c61b191b81e77eb31d8f06ec8aad49c6bf7361", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "75f1055c269ef8f7b0a36f451452c46aa86cdbda50c6d0d41c1f76242550dd47", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "3956eee90d99509c49de4ff7b359e2e3603aaaad04c657d3d3b3fe0304620827", +"TR_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "39a2dcc1949bbc35141eaf94eda72808f79c0e6a1eb08ff1db81740b9794d7ae", +"TR_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "3d13eb90a840780d283e8a9a8ff08f277827c1383966a03a3526a01c629e47cd", +"TR_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "da1c0bdf6cbe445dc947f3164850073e8dcc8ac0d4574639a0b0d1889134e3ea", +"TR_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "bde0cd45e019095fa93ba26cecca43f5ae95073676d3556e124b8c001ec93d79", +"TR_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "70490f610957db475fc759c9467ac254677bafade31523f0ae793116b4d13d9a", +"TR_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "3d16595da58578d7e1f880086639c8f0740fb7a62729c2b8e38b849b235efa82", +"TR_de_stellar-test_stellar.py::test_sign_tx[source_account]": "62da169d2500a24e078d026438cac0ce96747d85ce5d3255a0b6fa70370fc9bd", +"TR_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "3eb632c6e2093536035478e1a4fde620df24ca1bd28ec146c6cf509203601f32", +"TR_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "d82c5e09838a3f63194923bfa1f6463387d493ba73cac24ad08d73da59e167bd", +"TR_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "6a27908dbc4678ee1aae882e9b9cfd3d2a503f8d159ee7a0744acd614ace8fea", +"TR_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "437af362ede58754d3b31fc939c61b191b81e77eb31d8f06ec8aad49c6bf7361", +"TR_de_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "2d11b04e0e67db11fdf21b953d858af7faddb61d133487ea9294433a04bd7b90", +"TR_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "2d11b04e0e67db11fdf21b953d858af7faddb61d133487ea9294433a04bd7b90", +"TR_de_test_authenticate_device.py::test_authenticate_device[]": "2d11b04e0e67db11fdf21b953d858af7faddb61d133487ea9294433a04bd7b90", +"TR_de_test_authenticate_device.py::test_authenticate_device[hello world]": "2d11b04e0e67db11fdf21b953d858af7faddb61d133487ea9294433a04bd7b90", +"TR_de_test_autolock.py::test_apply_auto_lock_delay": "cff6a6e5465b67544c0a6da8a3fd17787642c5c9b39137b8c81173ebae7bfd21", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "797b6f47035fcf96b8d9fdda97ba72f31e0523a58e08dcbae84585fbe65a06bd", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "797b6f47035fcf96b8d9fdda97ba72f31e0523a58e08dcbae84585fbe65a06bd", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "797b6f47035fcf96b8d9fdda97ba72f31e0523a58e08dcbae84585fbe65a06bd", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "797b6f47035fcf96b8d9fdda97ba72f31e0523a58e08dcbae84585fbe65a06bd", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "797b6f47035fcf96b8d9fdda97ba72f31e0523a58e08dcbae84585fbe65a06bd", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "42ae429f7d2549c333ffd4b71c47321812cd08e333410c3cf454ec7316335591", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "11d162200ac45ef848b1eed66588af94c1a58afc045bfa850594bab95b0ee896", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "4eaa6bae2e0fd267bd7041bb9957b86d68e6050201bd5a1390a2ac4a2e31482d", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "6471099583847d9637515e7675d102b02a2e9470224722c1890349224adb6ccc", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "9ecd82f35873aec42aeca63669ac7f9768d8c75999e3abd8bf94a2527c856768", +"TR_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "bab968c2d5393b6cd500fdbd85204b6cdb1246d42810e52d78826d268702de05", +"TR_de_test_autolock.py::test_autolock_cancels_ui": "f329a5cbfab2793e735d0c7eb81235ef2a2acc81a800dfb321a99d43d7a314d8", +"TR_de_test_autolock.py::test_autolock_default_value": "44e4718b2b09777d12621e0a5db7095f678d1894f560841438f6a252aa8a39bf", +"TR_de_test_autolock.py::test_autolock_ignores_getaddress": "0f644df615c0cdac70d85742eb4d2451dec50815faa74a55887dd01116d25207", +"TR_de_test_autolock.py::test_autolock_ignores_initialize": "0f644df615c0cdac70d85742eb4d2451dec50815faa74a55887dd01116d25207", +"TR_de_test_basic.py::test_device_id_different": "343459601ec2866d254ea82608943e8a9d0e3f11166f6968e42530c493a831fa", +"TR_de_test_basic.py::test_device_id_same": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_basic.py::test_features": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_basic.py::test_ping": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_busy_state.py::test_busy_expiry": "4f12e397a69e4305bddddc249348974aaa2afc359a78d73ab75a241d830b5888", +"TR_de_test_busy_state.py::test_busy_state": "fbf762ee23055f90b7d9442a5f5cff085b91ea97a5fd17e79d053229c3c33eeb", +"TR_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "6abca8b0a0bdb48cd3daa0cf19d878dbdd7a42656cd38020f2e25dae2afb8b74", +"TR_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "6abca8b0a0bdb48cd3daa0cf19d878dbdd7a42656cd38020f2e25dae2afb8b74", +"TR_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "6abca8b0a0bdb48cd3daa0cf19d878dbdd7a42656cd38020f2e25dae2afb8b74", +"TR_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "6abca8b0a0bdb48cd3daa0cf19d878dbdd7a42656cd38020f2e25dae2afb8b74", +"TR_de_test_cancel.py::test_cancel_on_paginated": "283b0baf93d248ef2b574e8e02b28034e487fdd98fe785d673d9863e588479c8", +"TR_de_test_debuglink.py::test_softlock_instability": "2bb074bc3b3030ed07df4242078be507f68ad6171f8692f0fa785331867f0130", +"TR_de_test_firmware_hash.py::test_firmware_hash_emu": "f6801af67505ec983a434460f815382cc3b409df2a4c3a361cf958c6a5e71da2", +"TR_de_test_firmware_hash.py::test_firmware_hash_hw": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_language.py::test_change_language_errors": "80e25196429aecdeb0688104beb0b8092729727c7ece30def2ee1fecf9447228", +"TR_de_test_language.py::test_full_language_change[cs]": "2b89809be578b5dbbecc68bef34449a8d13e0f590838a209ab99504d39ad7043", +"TR_de_test_language.py::test_full_language_change[de]": "b1c50d7085707712191a2edcff22a102bea6bb3ff6f1c85aa31fd562a96e6f13", +"TR_de_test_language.py::test_full_language_change[en]": "10eddc2d83e51f3fce05ca02dff198f86a75d4befdaa67a70c65cbaf3e770fef", +"TR_de_test_language.py::test_full_language_change[es]": "7ec00ad8874e7deef2a7cd362eeb5c6c1d17e6c7c659c340e01431ad6ddfadff", +"TR_de_test_language.py::test_full_language_change[fr]": "5a3e15c7089b9a9fcac9f1f2eb43e8bd0e8a04254ce89987e5dad25364a36aa7", +"TR_de_test_language.py::test_language_is_removed_after_wipe": "da3f6cf0558b744c83a5899759c62ebef2708589c48b3dd37df917a85c219792", +"TR_de_test_language.py::test_translations_renders_on_screen": "92959fb579af8f868b39e1caee515d51099b98e903f9bfe54923957d80c97653", +"TR_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "d0c1f08f47f84d6af54c4b29625aacb150675555ff9ac726cc0d061e1c1fe9c9", +"TR_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "c2ff2efdf1fec9f65f575b00ccf1019083bf4b4c9fe87ae0ebc11dd272bf2ece", +"TR_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "ca0a402f18506f6ebaccaaf4b90a689c12283dc8c8ccd093229dcae236dc7fea", +"TR_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "797b6f47035fcf96b8d9fdda97ba72f31e0523a58e08dcbae84585fbe65a06bd", +"TR_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "797b6f47035fcf96b8d9fdda97ba72f31e0523a58e08dcbae84585fbe65a06bd", +"TR_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "797b6f47035fcf96b8d9fdda97ba72f31e0523a58e08dcbae84585fbe65a06bd", +"TR_de_test_msg_applysettings.py::test_apply_settings": "09ac87aa14633f9709b145740743efa3e93bbae25237a9bb7cd9ffc706d9cf2c", +"TR_de_test_msg_applysettings.py::test_apply_settings_passphrase": "888044482595000badaf8d79070eaf70a017e0094d47c6a9be6ad1befc2fef45", +"TR_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "1eeba00955744175fb72de23021b36ad255f56c01a51f903c6751554f371bc7c", +"TR_de_test_msg_applysettings.py::test_apply_settings_rotation": "5c30ef72b2357e9258e0830e6f0feadce7d9d96b176793ee827ceff8b5ad7801", +"TR_de_test_msg_applysettings.py::test_experimental_features": "a718df47948a371da1be27c4c9ac602c80ae4e6476e87e5172cccb21daba65b2", +"TR_de_test_msg_applysettings.py::test_label_too_long": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_msg_applysettings.py::test_safety_checks": "d0f43376a90cf130789a20ccc9618ebac2fad65bddac184a79fe67d86fb4d980", +"TR_de_test_msg_backup_device.py::test_backup_bip39": "cb0b606feb911075209b998d74c0ea690e690521510018e9df89b10639c9e8df", +"TR_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "14b692942081dfee100243d18121acc75ceb011808ed50e0b10d7123b2cadb39", +"TR_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b3e58b4cac3517116e3aed93ebe3b3c803e00e6ddc9fa7ae54cf411afb1f3a39", +"TR_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "14b692942081dfee100243d18121acc75ceb011808ed50e0b10d7123b2cadb39", +"TR_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9d1c6dceb832a755bd274bd658dcf649d5a7c3d2bc23a1916268b82939169824", +"TR_de_test_msg_backup_device.py::test_interrupt_backup_fails": "c0b2a19d92e2a8cbc2482895b228c323d7722435f538c6319414faf8e676b825", +"TR_de_test_msg_backup_device.py::test_no_backup_fails": "710285b402ecd439aa2dd8838a707f3df9e0353bdd78ccdceffa7edd808930fb", +"TR_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"TR_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "14e9c9471b2a477172cff77a5f25c7ea5be6cf47005d55b2391b5e6709b0baf6", +"TR_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "bf7c3941fbabb892d817838d7ea6fef7dda1cf8f541d260f295ce93b62b38cab", +"TR_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "830d426b680c81372ee7525ba8d82cc074d4e0fc9953e02302203ee007885d49", +"TR_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e0898eafee55bf220d3a607ab3126f17559f5fde46f140bd82cd4616ee519af7", +"TR_de_test_msg_changepin_t2.py::test_change_failed": "288818fff937791408086d0ec96552f3b0c75cccc5f57c630da382b9f2328971", +"TR_de_test_msg_changepin_t2.py::test_change_invalid_current": "4bf956c06f8aeff21a79bed6c40b18b0b05715bc11fbe429842bfab2dd73623d", +"TR_de_test_msg_changepin_t2.py::test_change_pin": "c3dfed9b3b5c63896e80f33b0bf621d97c560ff21d0492d475849288a6bafda4", +"TR_de_test_msg_changepin_t2.py::test_remove_pin": "3bdef390450188ddf9e63b44c0463a7f02e7197c85578e55e144eacda81156e7", +"TR_de_test_msg_changepin_t2.py::test_set_failed": "ddb077c295933735e6485b202f2ca543083fe28e89804bb695481d08786ce919", +"TR_de_test_msg_changepin_t2.py::test_set_pin": "88d46918bb77abc7bffc13a0bcdf4bc0f4b132455112ece220b5359c6f839955", +"TR_de_test_msg_loaddevice.py::test_load_device_1": "2e6cfb82004760132550c29f3e87a6dbfeda3178128932ae61f7fc79d28ae309", +"TR_de_test_msg_loaddevice.py::test_load_device_2": "f137b584114acfdf785db88a5405c89a0e090e4551fe3cb58a85331ade5c4540", +"TR_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "2e6cfb82004760132550c29f3e87a6dbfeda3178128932ae61f7fc79d28ae309", +"TR_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "2e6cfb82004760132550c29f3e87a6dbfeda3178128932ae61f7fc79d28ae309", +"TR_de_test_msg_loaddevice.py::test_load_device_utf": "26fc17e7b025ab08f78464a1719b531847808a64a1559917adfa0a58977dd558", +"TR_de_test_msg_ping.py::test_ping": "f9d0922684216259a539ec7a42d69f5066cecf0fcc924df17375f80f03fd9daf", +"TR_de_test_msg_wipedevice.py::test_autolock_not_retained": "cf70ab7aa3206064b3749b7f1f7c08b28bc6ada3da248079ed7800c24f6c9b1b", +"TR_de_test_msg_wipedevice.py::test_wipe_device": "343459601ec2866d254ea82608943e8a9d0e3f11166f6968e42530c493a831fa", +"TR_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "595bc74a597da3e2b6e1a412d19687a0d19a0edcd4d13e13a3f68bbe30acfa18", +"TR_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "595bc74a597da3e2b6e1a412d19687a0d19a0edcd4d13e13a3f68bbe30acfa18", +"TR_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "e49b70ca888dfcc0a698e37b84e1bf243039f2be92ed6d15057f83e6f9baa4a4", +"TR_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "e49b70ca888dfcc0a698e37b84e1bf243039f2be92ed6d15057f83e6f9baa4a4", +"TR_de_test_pin.py::test_correct_pin": "797b6f47035fcf96b8d9fdda97ba72f31e0523a58e08dcbae84585fbe65a06bd", +"TR_de_test_pin.py::test_exponential_backoff_t2": "dae04d6bf380d6be3399d05d7555ab95013164d96820f16ca2079c2efe773419", +"TR_de_test_pin.py::test_incorrect_pin_t2": "8e6cbe5746b5a87cc792e5a998d715f3f89f716d63b7a7cc9c70aed6210d20e1", +"TR_de_test_pin.py::test_no_protection": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_protection_levels.py::test_apply_settings": "2acd387d57064fa29f665b912eddd37743be83e5f6ceb595e9c9f44c7200f1f2", +"TR_de_test_protection_levels.py::test_change_pin_t2": "227b783e28c7e3dc62136af5e63541449bb6b966c73b09ddf0cd59f357447e42", +"TR_de_test_protection_levels.py::test_get_address": "12982d314a6591da07a3bba686c41400599eec57a39f6e3edddaeef580927a23", +"TR_de_test_protection_levels.py::test_get_entropy": "fcdfc36e443420ff0fb0794978a16d12b42cd4ebcb6a4a870d2abb955ae04b8f", +"TR_de_test_protection_levels.py::test_get_public_key": "12982d314a6591da07a3bba686c41400599eec57a39f6e3edddaeef580927a23", +"TR_de_test_protection_levels.py::test_initialize": "517dfef4287e47c0a32bc607b3a63cab7dd0b2bb89c8dd91f6abe08d80b7e6e4", +"TR_de_test_protection_levels.py::test_passphrase_cached": "036dde8332b7859e8f70614bf7f1f9de8f75b26a5f7f55dd8a7ea169ea21e7f3", +"TR_de_test_protection_levels.py::test_passphrase_reporting[False]": "a951ed22b1e3f40c19d18371f0d10fd16a6e755f2b0a01fb658fb891f0c45de0", +"TR_de_test_protection_levels.py::test_passphrase_reporting[True]": "674af0ee1c9284200b8a5de19be5148b04a1fdee2d75a3a6d3121e7668987408", +"TR_de_test_protection_levels.py::test_ping": "f9d0922684216259a539ec7a42d69f5066cecf0fcc924df17375f80f03fd9daf", +"TR_de_test_protection_levels.py::test_sign_message": "4b8b0bce96fd0e0e445286aa4a7ee3c84a8974751e4b8fab1c637915527708b2", +"TR_de_test_protection_levels.py::test_signtx": "3630ad55c9f5c3472a36384eaa5c070b395decf25a5f46be9392f761739a98d3", +"TR_de_test_protection_levels.py::test_unlocked": "ce5dc1b756218beadac6e5fef3eeda78de481033ae072a7f65df2efdab9d1357", +"TR_de_test_protection_levels.py::test_verify_message_t2": "fb08f8e21f3b66ec99e8f71cf4456accaa63888478bf4f3dac0269a3bc1133c1", +"TR_de_test_protection_levels.py::test_wipe_device": "71fdab3fde3f2334803d7f4ccff9420ba5a845809089f46304540ec6549c679f", +"TR_de_test_session.py::test_cannot_resume_ended_session": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_session.py::test_clear_session": "c436187b1ec6296945db6c7db20d9dec0c988e5bd69c472503e6586ff24e2542", +"TR_de_test_session.py::test_derive_cardano_empty_session": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_session.py::test_derive_cardano_running_session": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_session.py::test_end_session": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_session.py::test_end_session_only_current": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_session.py::test_session_recycling": "e49b70ca888dfcc0a698e37b84e1bf243039f2be92ed6d15057f83e6f9baa4a4", +"TR_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "4cea55e7770268559bdafa03b0afc31ba99f5442ffa1acab70a0b3b29e26e787", +"TR_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "7f8c701709ac2bcc8d0d0fe498e6408e40779edd1aec3c76e5c43f4d1c4a9bf1", +"TR_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "b864ff6e730a70aa071ec50b40dba0be8a93a05b3687194e47a3006f0c9f4b72", +"TR_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "784285c82802ee451bd9493be1b3641b4cb530f88e49c86d4b6bd4729df5e9dc", +"TR_de_test_session_id_and_passphrase.py::test_multiple_sessions": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "8be94f3be817073323881cbae156c499a5e0cf88142d112ab6c2b286ea0f91d5", +"TR_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "a1dfd4d891238eccc9f7364c98939677e87e8785d15138ebef47033fc6ffac2b", +"TR_de_test_session_id_and_passphrase.py::test_passphrase_length": "1f4a62ded62ac615b2dc5be1ac1514c35e92f963b653a5fe52fa9a4a3d7f0f43", +"TR_de_test_session_id_and_passphrase.py::test_passphrase_missing": "036dde8332b7859e8f70614bf7f1f9de8f75b26a5f7f55dd8a7ea169ea21e7f3", +"TR_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "63c9d4d0795b225ee5bd9e4d13302e664f8b267f302abb463c0d2aecea5c5bfb", +"TR_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "0230f89e5d0b5a1f916d2b7834bdeebe581ef659f233f4a3ca3bf01703097e1c", +"TR_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "2fbbf4b63a1ecb1cfcc13e6396c688b69be39544dcb01569cfc3bf75422ad532", +"TR_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "a282fbf06e7c78398b914a3698e7593807b6747ca54b1ca37527f5b53d6a0464", +"TR_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "e2beb7897349d1816db0d3abfa489fa1611d93d34d1c9df4167dbcbb16132ec1", +"TR_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "249eac173dfb27da1c9219b8167fc5ffd5b214bff958244e3ecf12655f4781b3", +"TR_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "969e5407d2e242e7c9dac403c134beb5baf9e7881756ba953ca2e6ea02613cb8", +"TR_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "efed488d5a9ef456cbcf97d3bd8cb4409873662e2e6b7c31d18e9e6dd7c0709c", +"TR_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "d706265ab0bc5d9976e1966e3ab01db22a5659231444de957b852f2d9fdd4614", +"TR_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "a71f3c0d7f52d83b97d95ac16607d809717394eb4a10b3ece0a29539966ca532", +"TR_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "c74e15a0da25e8746e290b97d7dccb8eb397b104b9213798679ccbd2630e04f0", +"TR_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "e68784e9b81bf98d6691214b6420b63e05882bafd95e6fba09f96ea23a94debf", +"TR_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "975e154d8ca7e8e5685f9452f047d39d7ac02db0e7bb722a7e6b2a275ece081f", +"TR_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "924b5a9d76ce11b6072c4caa0a746fa98e8c47bc536fa7ca151c35063ff7c4f4", +"TR_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "9ba7502ed015fc83636e508a7031b044e63384e863457ff8aa45f192a5e5a73e", +"TR_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "ba89c76c68a19242eabbb7edaeb9caedf6b192eafae2394f0ffece0655aef5cb", +"TR_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "dd9a9109b97981d978fe89d1915f197bb81cd50f054ca16617c80f528d97725a", +"TR_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "03f227328ceb33c20959a4fd8c071afc9c06c22c985024df9b2450ff8e82c764", +"TR_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "e567ffe919f2d08fa615df5121922e0ad6e1e81a44d2404a9908b2ae7b26d574", +"TR_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "1538b9f2424664c42a9486c1c4f314ec898adc436732e27bc666408c6259d8d3", +"TR_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "4730b14271c786de5d2e6c645b8fb121dea65fdf66313953bde0c30e0f69221e", +"TR_de_webauthn-test_msg_webauthn.py::test_add_remove": "acc15c26f8b519cac3bb7588e86b9283d64c877bb556046e7c1a297beed50236", +"TR_de_webauthn-test_u2f_counter.py::test_u2f_counter": "f71eff00946a27358e8a16b0cc3f80576828af566bb9e3f9878d0b2348276c2d", +"TR_de_zcash-test_sign_tx.py::test_external_presigned": "8f6c88f4b593d998ede1076ee024b3b415f5d3004895fc27ba00406c17a16838", +"TR_de_zcash-test_sign_tx.py::test_one_two": "b0556a6e54bf5afec46c442c1a20e46bb66a64ec2947e5a10350c025cb714a13", +"TR_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "717b009da2bbc371ae2df2e0f35252b565dda603008d284e87680969f85b431c", +"TR_de_zcash-test_sign_tx.py::test_send_to_multisig": "df226f0f38e9a1ad3eb90ac8c60ace96e25d2f759cd2e273d3840c94873f9e78", +"TR_de_zcash-test_sign_tx.py::test_spend_multisig": "a713142633370318ccbda21552b6e5deed701fc149985146c1f3356352c14c1d", +"TR_de_zcash-test_sign_tx.py::test_spend_v4_input": "9525c137912f9e880380fb87002f2b5e7c7c05877de661c7d5024bfb02b38915", +"TR_de_zcash-test_sign_tx.py::test_spend_v5_input": "ae815c2b21ce0b77bfffb660a089efc9d3606ca2beeacc0926a5be6f310a09a3", +"TR_de_zcash-test_sign_tx.py::test_unified_address": "b27795b5419ad299b96fc3c6adb222f91200e8365cb10a1e73004254585e2df7", +"TR_de_zcash-test_sign_tx.py::test_version_group_id_missing": "e453d2adec3f09e5c03af142b8e73bf612b863d26d13c8a79720d18f03ea1cff", +"TR_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "e76ef483e6b929ff74ab0425708a86264ba8d6b58f3e6f669e3c8d794d02b580", +"TR_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "56868c4176799e51ced92154e6d1525565b68b062d91ef52503def0c6c8fba06", +"TR_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "3aab3fa9eb585ad46b386a84a64c090bc9b2f50009a6f183bdda44372991581a", +"TR_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "4cdc17355b3ff7669f89aaab116083a82bb6842ddaeb78f857992d13ec62bc0d", +"TR_en_binance-test_get_public_key.py::test_binance_get_public_key": "9bf1d886be14c98ee77e174a7398e7fe635ccf17e4e9a37256084c681e704682", +"TR_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "658b00355f2590a472ed9f6b2be40b059a865219a628afe79fca8c70991cabbd", +"TR_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "3c337daf71ecfc210bb9833e35a8d8aaf03750d89c7d81f4242ea58f1a726341", +"TR_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "df56a6c7396a9f9f41c58f9c4d8abe49d7c8c85abaf0ae546c4086669a9f77c4", +"TR_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "658b00355f2590a472ed9f6b2be40b059a865219a628afe79fca8c70991cabbd", +"TR_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "3c337daf71ecfc210bb9833e35a8d8aaf03750d89c7d81f4242ea58f1a726341", +"TR_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "df56a6c7396a9f9f41c58f9c4d8abe49d7c8c85abaf0ae546c4086669a9f77c4", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "96f583f815e053d2ed5763d7841b2572c112476fb9d1131a1516e2e8d3f8ec20", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "a96bebc82d5aff9c6a8583ddb354e6427689a3be4fddf082c3cd0e8722e54d46", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "4c2bba305bab30de2fcff0cec5ab1192f2e4d826d86f91f7172dfa624f5f3139", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5f70b535406a6254113ed2a5f780ba98b8205abf6425eb7038d22395953aa560", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "bf962269c96493db17d34978f049d3dba44ca7a311fbf53822046f7f1e3ec4df", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "bf962269c96493db17d34978f049d3dba44ca7a311fbf53822046f7f1e3ec4df", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4f275de439c812363140d3839ebddd9243e2bb34d80d02a487361148b2bbab71", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "4cf48d6bb48a9efbff9e2949d657fde4dea7ae9e92f47cafdfcd11d7765d76b8", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "db453154c6d8318befea7230eb2a9639fece5bdfd83c62fbb7a1e9195b77ac1b", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "9321620fe3fa3eaf6c83d313cc3c40b4b59b454ad24d6954440d3bb9285b9b5c", +"TR_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "9321620fe3fa3eaf6c83d313cc3c40b4b59b454ad24d6954440d3bb9285b9b5c", +"TR_en_bitcoin-test_bcash.py::test_attack_change_input": "3e07e565d7626007cfd2a3be476ffd6efaabc6b835bee91f0decb62b838a9b39", +"TR_en_bitcoin-test_bcash.py::test_send_bch_change": "5bfd23d4e276c67071b8e2829c9445491053309c04b58256f8d4f789766683a2", +"TR_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "d71ca13edae80607527a670d8ea4f34b0d119a1a96de74e01e8ddaa0973603c9", +"TR_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "f5a62283c4254cb10a7180a888957daf90e57bbeffff66704eee192c4469b044", +"TR_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "fa268b2481cce18a041c8f8bf773f16cbfed6ad372a89c7d7220a2de3aa9042e", +"TR_en_bitcoin-test_bcash.py::test_send_bch_nochange": "395635f081e0c9bdf3f6de9a1540d9211c3a1d68665d8ac13ffb8c236add0a3b", +"TR_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "3957efb1b584f974d8b32523eadb4c18596956b38dec2c85005e7e4f0bf85593", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "70524243a1d093df71ce94251a1bdfe8ff82b7ee84c2b13b71c09908be89dbc4", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cb4cea77c61cafeece033128c8c050060cba7c64e4ef255dc59b235324bcf213", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "0ffab62bd4c51d042e77c23f5569b9b9a46d9aae102f55edf20d7894dc75b17d", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "17a198a8b24035578345b5e85ec307ec8d800a2f343d051a1820ca3121dba696", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "bad6123462cf0f8c9d938ca92ac9841b53221e5152f27bc92959e870d4108f1e", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "c66f3f30c1a6c809fb8c99a9773c9a9ebea29207c4383f8507db751ba59eb11f", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "ab012153490f26746ff9a1b5388f2418bf7c9d98b127217babbeab339245d8f7", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "695853ac56e78df434995eeb457f7d4b466f66c9af560fb103f6a4fba717e0fb", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "c3519859e757af09f9fed46739e484845fdee3d3aa4fb84ee89e7df63d3ccf95", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "442a787c067f35af606eb27a2a585a15272bb920af01070f408a402603572b39", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "d53ebc2f1c866b3d5920b13d9ac909fc81d4ca943a0625801b5dc533f2fe6ef5", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "7798b65e874be333b51ce443ccb26713bb0a17565217f09bd89eff635ddff8a6", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "b42ab862d2d45bb9e0509fc4ba4d68405acde83fda935c5dafd44d9e48cb29d3", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6b7c12363fc566de9d35013be5156c970e9fba33c2ed73b4a7e9b06e0974e867", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "7714578913a2a1e573193ac78cddc20c2df6c2856ad8c50d447906bfee41e4f6", +"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "67b86cfe9f4ab3b54a829e70565061d80304a3f75ea70a4fbd92c22a643737ef", +"TR_en_bitcoin-test_firo.py::test_spend_lelantus": "aff133d149549783adbdaa9563cb990af6cc5f8fafba3f50d82bbbd2765bb4ff", +"TR_en_bitcoin-test_fujicoin.py::test_send_p2tr": "6ab906b521bb73e0725c3d0f3eb5a6ecf9f582853f4cd71672f73190f15fb917", +"TR_en_bitcoin-test_getaddress.py::test_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_bch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_bch_multisig": "7dd1e63466cd5387b8e0ebe22e47c0274e319b456951bbb16a14174e61f60aa8", +"TR_en_bitcoin-test_getaddress.py::test_btc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_crw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_elements": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_grs": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_invalid_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_ltc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_multisig": "ec7fbb53bfa047306d357697ae309ca90321c9464fda6bfd3a6b225be7ee1345", +"TR_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "f4a9b7935b7d870f13eceb6efa481095adfb4b5e9dd43d7cf2670415210c9319", +"TR_en_bitcoin-test_getaddress.py::test_public_ckd": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_tbtc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_tgrs": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress.py::test_unknown_path": "098834a3b9efbf31fee211314340eb4a8f351e8ba757ec0a3f313c49543612bb", +"TR_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "6a437ce45f2ce4d13dd98328cfc66d3b6b119bd637f01148a723408b4f17b523", +"TR_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fba5a970d47d0936174e79904c3e72ddcbbd18c6d650230643a138ee495f47a2", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "3c4a8b78580d73d17407543fbec8e292ef2afb39b155bfe4f46eefdff69c54b9", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "809388e68dd951e39d7ceacfbbfa9370b97a5a73232a79f992462830f053c9d7", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "23d1e5bd1b244e9c3a32c09b81f5cf3f71f2577fef9df2d8388c4b1ab50f5ee7", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "4a48d7445484becd3cfabb6ecb131398a447774693c828250fc2e4fa04cea84c", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "f7f3a5a31d942c688be33b2690986345a4de39997f500bc32b37b79bc2c73d8e", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "0fae5bbb6de5c70226671451794a34519ed85c9d95c147e55f1cef837f955c40", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "bb3b0ac405d04ee024109e20ab1d6434d2374024d7c2623af0acf01bc3a5c1c7", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "208159f7a0160f31ae17d76d6b78b1a4a1ab71bb0fd5f6c2b7e72e52262d90eb", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "4d7e17c51200b3008af7c3f6973216c675f265ad0911608eb3feb9028c0e75e2", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "a24ac9679cf76594293d642f012ff8e335264ff4b15ad4540f410e23ffb91923", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "9c1d356d0e9a3b58deb0d88d6427404cb16d01ed7821cec8824cc92d3fb357b3", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "d2732d2163b87bbc2e9b729357ef7b4fa51848150d199c710dbee2a9bcac1314", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4603a37b79fb2c4c099d7af5f954f8b7f2583629a3606c0d952510c0a00a5fc9", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "194532560487437bd1d2557c802fcdc333511d4c5a7c628e9b9e95b3c84b6d8e", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "4be98705f6930b2a3c25e9bc5ea57d938a7b9f0ce8b7cf63379818e0bb38de89", +"TR_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "4835648bc84d3ac179a28d5e32d7ede1c7979172f24da352fcdaec2b7baf1a35", +"TR_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "31a69b3216cbc1e2ac24cd4e184f25302da9e8a1ad80801eb2a4f7db0419fc76", +"TR_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "abb9fa03da8b03ef8a42e78e1b0324c8ee18227851c6bd3e5a68bd8d31943c30", +"TR_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "ce472f42e18622512756287ab9d178394a8c0372c606e6e76f676b11091fd219", +"TR_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "9d58cf99cdb205178eea39361d140c84c006f7f55e2bf15962e8e18b6918e89a", +"TR_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "e1806ab68c58937a6896858ea9557becb89daa1d17e37921507ee4aa7ab12aee", +"TR_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "954ed1ca2ab1486bed797d2b22fcad953adab3916752717d220a5f9e7da484bb", +"TR_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "954ed1ca2ab1486bed797d2b22fcad953adab3916752717d220a5f9e7da484bb", +"TR_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "391a4008b7c3a93fbfd0dfff22aca8896420b45b91d745a83d7e65ba80c9288b", +"TR_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "840e6ce6ccbe78aa96ed4e9836f5e8a50f874b77961fb22e436810e99999d467", +"TR_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "aa034fd6b7224b43eeb20afa4d078e20e7c30abe70150621c6671942d1b4bb31", +"TR_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "78decb159be4d47b18dcbb3d92858d10f0122fd9a21a00516719edf2f65ceabb", +"TR_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "aaed75a3003868548ea0b0355521b5001e272091308fbb0144142898bb97dde0", +"TR_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ac3fbdd417423379e1d724194883d1f20c248e60414f0ab0bdb47989356be499", +"TR_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "362f3638e6904bb9cb28eb65a5c465ac305f1be563b2f075b44a45fa9fa8f210", +"TR_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "2c3b3644c443b1d033166eff431a33fe515eee902fc2adc1901a51f6c6b7ac90", +"TR_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "2f80534a10ac31b2b06414400f61d3af4ebf13e61376b24af38f2ebb60ae2385", +"TR_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "a6f59c6faacdce78ce447ec89cbdea2bbca4e7246f59060cd9ad6c8daa1340c8", +"TR_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "db6aa742fbd45f96f1d563995a1d89be7ea5326479091161d115d203bd87c335", +"TR_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "2a14899628c9a8b37be13c36d0f3a82bc4d6e7746a80b641708ce028dc14d195", +"TR_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "0f0c521b22014f32e8c4cd78a80d00272db4e363e67e64ca5fd6c277292449da", +"TR_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "0ac142dc76b4931d0eb1db2afcf7162898a3ea35f09efc03e43563a087cb061c", +"TR_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "495e3c575f858c7ffc761cecdc2b20dc9de2bbce32c17a69ce1c6f035e0999dd", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "14f83efdd6dd301e7b48a62d7edb938f7bef1c5f36288fd54a22a9977c58696d", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "d25e23bb006abfdbc898f28991e070472432a7b50404f7f1245b48c173582a97", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "fb38a10813c7585396485c9dc1501e1d6905106eea6e437a8211b5bf6cec3299", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "70b491ae0a54462413384ea727aaf1bbd7ae72a9bb02d3712d38b4f50c91662d", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "39bfa8a2587445be5d0728d713d3a74bc473e75c93e61e2b19ce5012fab86eff", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "a0e3114e5b2cc30be76d4cb07ba670a5371f769804e42bb240070476252c590b", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "d7616dce87db26760c484911c1b82eece67835a504e3eefc98dcad4ba8500aff", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1", +"TR_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "b339fb7515ce902e6f9b0371363b751207db9b93c3eb7fbb4696c1451b211975", +"TR_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey.py::test_slip25_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_grs.py::test_legacy": "8851aab5526e4f26857d9f5c38253c3049dafc709c90663239fe035ad623caca", +"TR_en_bitcoin-test_grs.py::test_legacy_change": "c24250da19b0bd73d13211b264f7efd11c4189816257964a38abc92bfee9adfa", +"TR_en_bitcoin-test_grs.py::test_send_p2tr": "0c91f2782119205af71bf270f3867080ed5656eb7d60805c06106ebb1dd5e4c2", +"TR_en_bitcoin-test_grs.py::test_send_segwit_native": "8d1cdf1394656f316a87e2f490b228035de71427e38196af7fea6c1da360f9ec", +"TR_en_bitcoin-test_grs.py::test_send_segwit_native_change": "3516574f2630080af30474774ba4d43151b4e144e6e3af146c27d7c5dc038b89", +"TR_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "644dcabb2d8cf624a031a2853f55af687b627d93b3fde6cc4b860f3dc3156138", +"TR_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "de03cf73f4249bd7b955e5a1d363d297f2fed470d8773d14ed46fc0f48a784fb", +"TR_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "76984380f30ebd7f5f04cc5cb6581887c89713d0f79ac230e8cffaba2ddbb9bc", +"TR_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "12a3b1ad73fce377a5c90138eb1cf767a02de8a2d55db75e0a69becc5fdf7ae2", +"TR_en_bitcoin-test_multisig.py::test_15_of_15": "d2362894ba0b1365f4b50c9fa5adf6242a9f71312e5a51295ecfcbda25bad273", +"TR_en_bitcoin-test_multisig.py::test_2_of_3[False]": "43ef2841c1847f9eb425e3ba1cdba4a8880363889347c5fa9ba70e7654d181f0", +"TR_en_bitcoin-test_multisig.py::test_2_of_3[True]": "23960e739861c482ed71941947f8709425d20fc6dd98cd15abb9eecd56b53676", +"TR_en_bitcoin-test_multisig.py::test_attack_change_input": "4a75904f94e42e74c7c7129cdb090a0bde4506c91116dc20535ef60dfe069cfc", +"TR_en_bitcoin-test_multisig.py::test_missing_pubkey": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_multisig_change.py::test_external_external": "08a4cb41e2b55807b6d48741cb70f738ff1ce1d3d55d693cd3fccfad33ac2988", +"TR_en_bitcoin-test_multisig_change.py::test_external_internal": "83a561913853d3cf70cc2088e32b086453a009dde887887762c3076c127d2f9c", +"TR_en_bitcoin-test_multisig_change.py::test_internal_external": "1e6eaebc9072f131bca04c9d004b1d3f5993525235594bb8830954e5c8fa33d9", +"TR_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "22e12387b3d05855dc757e3749e02604ff4cfd055c7385db73e2f968322a08e9", +"TR_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "f3ce5beacfa792f601afc89f2b0551d36e3dce4794227a8f44dd77c674c75db8", +"TR_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "d65c1194102f2cb8d5473a4681502e0f04826c11cd2e0e2deb9bcd694b50e757", +"TR_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "2d655de9224ae23b3632c2d2d3a9f97477c8ebb5d0ff2e276678aae6bae4e9d3", +"TR_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "337fd5ab84f2240326c28a09f7663010180641a1c130c99966c8b7d76b5d8b56", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "3f96244768b52da1808a6d47e4b4f5759ec59ec07041b9a7c37ee3d277382539", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "7bb78992b4d49c39e4f7379cc417a647096d5bd46ac1273ceeaae0c1de14d805", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1cc94552fe8aca4039e349e720667c09e336ec03ee8d2c38c9ad0a4dd4aece55", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "bddccff18f8769d0e002971053e29d195a263b51f13dd865088e3fc7a932b522", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d3dafe1f2ef8007378c3dd3a63f6d818083f2d1d2fc4b44657a8ad3bc55c8c98", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "84fd5ea3f166df9cf42466f09c7a3824e3eb0edca3191f4ac43f834262c0a1d7", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "240eb325f7a0b984d31f41389ad7ebc103693b0b104189a0945fef9acf7400ae", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "32d689482d115154b9eafbc19666d57ea82af580b45565bb6c54eae149827016", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c25fd4cb97026303068c39dd3191618aba44ea4d65ceafbb99fdf730c6c91d07", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "2a6cc82571f79eded2cc9371ba4ff4afbb0b8980e363ebe30000dba672c6837e", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "a7154e9c390b26a52c2910199eef885a9ca8d50bb84a775165acf1f7927dc30a", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "193a3c841c501a0bfef881ff37b567e5b85cb0a1b082ae3a1eda1db6803f6403", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c71a37f23707a29fbc51308eac80ba64e47782582912d26df72156597546cced", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "9a55b2919e32c1550386dd2775d06775e08b65aa16235386fe18c5e03c0d1e25", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "4f178c7f53a89862d5b9b2e925b0455f9fe5ed171476ed3a5e3cc1c1bace9ea5", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ff8007bf949b2857c4b2b1f30da546ba7f8d32e0f6268b6d06ecce907277aca1", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "c64a1efe2598c4659e238ba5266817eb0dfead0a48593818682d3af625935e13", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "9c5606816b4a10dc0b9d55cf0c4037413b8bc72937dd7fdab2611bd4a5c4d749", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "bb4cec99112ae7ffed8cd776f127c97a945602536c94044504e9d18c1d9604f0", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1d7c1670b324dac7f0c8c81f80aff72eef7c15c84d51a93c5e4d5d64ccb0912b", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "c95bb7567e849d6f7f3a2727aa96e66f881a042f15e1a012816735186042a2ff", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "7d18bc469cc81017aa6ce0609afe49344158ec01734c5cc58638d8300589763f", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "264b37c100c13dad663f56192c196189283cd55109eec26e60255b06d15bbab3", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6efc81302232a4d9b87ff3ae245596aaf0aeb97090d7f5844a96eb403a20de84", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "07494195abc7cbc3a9c948c1f6d520ba43316282f8207d3729b602dda94003be", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "f303bf1b6a12f2c5543e57515c0654f7fcc651c9fcfbf03e9d570df27c2162f1", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "e6cf269cdab80d6cd18f93674884a99fbda1a76385f5e8e061690f73a9a5d40a", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "0cf5d19f80b1d74f2cec901a1a095700a94cb53e6f887da0c8d51ca23e5b584c", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "1f383ccf1c3df308b4e43957cf0b1d67ee7c4c719e4642245e39f17c7de1e296", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "192d26d28907315a36327ac77548bd5cf957e563c2e1bf11e7424e9b2322adde", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "af9cb6826569a182c1693d6d5ddce14039093c378ac2eea3efa6133cf65ed05e", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "450d03c22c1252649093670e082d35167adb83bd67175d49240eee74a5f0170e", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "f2b3b16cbdf88b96cec3e151c2a26dcbd3724e1d93d60220eb4a2d7e4c5ec8b1", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "e885031efd52320a7df07721f8a1c7f2004272587da75a715c3d3b303596cbfe", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "5684222d881d8562f8f80647411ad586a2dcf8a8714674c0a61b47ad24b6a437", +"TR_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "97ea07aa32f9fb33610d4cd5c00917a1bd93675e1d3a54670ce51d84ebed76f6", +"TR_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_op_return.py::test_opreturn": "db53dd4ad174320b7c36cf58c294487db96a6a9c1608a41acd87424c1c11e30b", +"TR_en_bitcoin-test_op_return.py::test_opreturn_address": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_peercoin.py::test_timestamp_included": "57bd71bfa6680712736b78aab1f3da95d1cfff2b369fb8b2d87024b43c392994", +"TR_en_bitcoin-test_peercoin.py::test_timestamp_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c1ded2fec294b01d6b2f1925b9cebd1c64533009ce6c3f02125be2f8c1935bee", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "ab6dacbf0439a55b40f5082da0036ab5b4cfeea7e4a214b99d6e449a287d0455", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "ab6dacbf0439a55b40f5082da0036ab5b4cfeea7e4a214b99d6e449a287d0455", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4d6cd4001e91a85c9df6ab9d93068155e10085ca731f3f4eefbc282d0ff99ca2", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "5d1caafd5dda452e382882d1853b11d1f6695e04396ca59dae988a50f2963e4e", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "96c241b53e3cf6f8b3764e7914e6587d85e4870fc9c85436feb232b4586c5b1e", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "22705cef573f51e33f95c928db7cf6333086bf03d5559de524a26d732e9af281", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d2fda0e4f7b5485450e3036193f2a3f997819de8e0905077794138983f57c45e", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "00ccc63d037a62edb3ca567c16d8a6b27737af171803c4cc8d6c4d97479b8358", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "00ccc63d037a62edb3ca567c16d8a6b27737af171803c4cc8d6c4d97479b8358", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ae5da170ce1af9e87783c7ac8e55395d2a7eb7d442dae7ac3798a118f94e7680", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "067be29db90cf6f30d9b7642cb10aee02d5d200ef1a97517594f92e1a2dc4583", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "fadda387e14553f065171c8457fe86f642d35704669256ea30d245edb2c59283", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "fadda387e14553f065171c8457fe86f642d35704669256ea30d245edb2c59283", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "9a004646f50ab4afa80ece3b2a1f2c3a5d0c3b3d1a8ec70ed9b4497055b99a7e", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "c527245de51677f631ed1204d61c4add3cd28a1c78bb5a27825fb2656d65ea55", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "e38a633a1b0fc2d8db808f02a64e521f531e88399a697e0184cbbb642680a862", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "e38a633a1b0fc2d8db808f02a64e521f531e88399a697e0184cbbb642680a862", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "98dac05a444553eb733f4ebb76a83d5310f35f1d57f7613909671d02cb62bbd4", +"TR_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "e1c8b0b2a0feff6256cd985cdf7abbcb68c0d76ebc1141758c5821c4bc5bde69", +"TR_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "50bc1025b2d98048506b79cbb4c9a7afb77f4c6dff869448d3ea16e44e482cb1", +"TR_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "149cdc0a68dfa52c858ba71e8d0004f8324721182831eb4c4f73005d195f770f", +"TR_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "e4ba6c1f03f69753fbdd0b3f6f48d5cb4668f9f0e46171f5cede04535093017e", +"TR_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "11b09fc1f623f522e4ece098051385438adb8483dce4e77977bc458a7c6d3db6", +"TR_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "bd588c72a241b81894f074b28b7dfaa9c20bf36b6eddb78687f8f54637912410", +"TR_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "4845ed702d5bb635a15b412d91951c2c46ea00754b4aa9fe08c50f287608d345", +"TR_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "6aaa568ba69cd2da4df0821e0b640e93669f9753531327bbda42acca23d56207", +"TR_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "73d55c948994957a7af2aeb2927657fe39b1f1f5db35075b246512a4cc695242", +"TR_en_bitcoin-test_signtx.py::test_attack_change_input_address": "b36f59ed6bae71e854da94f6ef9996038a7486f1d30832f524d250589a00f9bb", +"TR_en_bitcoin-test_signtx.py::test_attack_change_outputs": "fc1a9e432095c3cfc81ad5804fd2203c64c4025113ac8006c59dcefda6d1b55a", +"TR_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", +"TR_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", +"TR_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "3722d7227ea060dc093c6bdcfccf896403bd492c7c452ab67c65fc1176c5c6f3", +"TR_en_bitcoin-test_signtx.py::test_fee_high_warning": "20b7b8943eb06b765afd6ae15d6b4f1fdd44364c3df7f831386be2b2895c768e", +"TR_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx.py::test_information": "90d01767ffb3f4640d120a76774c32886569e8cee87c9237b973342beed6957d", +"TR_en_bitcoin-test_signtx.py::test_information_cancel": "b9a12e03640234ea396535635cbfd59cdc93ce45cbe9a143a2e597b1a0b0c8f3", +"TR_en_bitcoin-test_signtx.py::test_information_mixed": "9a9eff11b129e170d67c7c652fc5420e82fd4af1b1e8db1ed3716f4a9aae0774", +"TR_en_bitcoin-test_signtx.py::test_information_replacement": "9521c2e4bf4c09cb010cc811014d21f92359e4d4d14d4f510a30f34e40973cb1", +"TR_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "4cff5b6e906cfc244d5c223bbf7c521af1a187abc3a5c18393ec44f129409b65", +"TR_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "90994ba4feb80539208a780e3a5602960e533f46f00a216e7cabd8c709b806d4", +"TR_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "2d9d4993bfdb287b98a4c1afa77334f09acfd7f2f578487b6094b8d0bdaae234", +"TR_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "a184091a70fedb8f1ef063df2155ca63f1694f85e135513e21d07f1a43c3e178", +"TR_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d35c4bd90f36e2a4a9018a8d11a3f146dc566e48ced294ce37bd68ed6f70e1ff", +"TR_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "fc870a46c971dd752958d3fe4fd127325af21b58f6c6a67a4cc45ab4e0e79e23", +"TR_en_bitcoin-test_signtx.py::test_lots_of_change": "8934bc328219614d6fe79a9d42545ed7f455c09b04699dfc0431180d831f25de", +"TR_en_bitcoin-test_signtx.py::test_lots_of_inputs": "d75d8177577a15e652c56c869395c2de0b90f35bd482ba13afa0f6d5ebedf7a8", +"TR_en_bitcoin-test_signtx.py::test_lots_of_outputs": "c77674b7017aea81147e73d5737bbdae2084f6df531d4770ff88e6d112a8a7d1", +"TR_en_bitcoin-test_signtx.py::test_not_enough_funds": "26d52056f4225156037623a75c24342da3a4449e000e3d3a6374ddbce67d248e", +"TR_en_bitcoin-test_signtx.py::test_not_enough_vouts": "fb91e24d8fde84794c80155b678b09bec2daf4d66c63c3d86ae004e5986a8a4e", +"TR_en_bitcoin-test_signtx.py::test_one_one_fee": "29b8a8baf48815ed37ab4f9d65a1585614f5d6c1b582d27c9575fc7215141b7e", +"TR_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "07cefe264f4e2c0d8cb09a5d9ca3f98852ef45dcf2236c36423963c17b5f5b5a", +"TR_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "5dab1d89347969b5a954f9097948407134881b964a19ba9b7a8e7ed153cf178a", +"TR_en_bitcoin-test_signtx.py::test_one_two_fee": "edec043a2ed9f078035821001a8039bbcc3ea73be8a2a5bd91fb40a8fdcec120", +"TR_en_bitcoin-test_signtx.py::test_p2sh": "a88f8dd6d1f1dbdbf010f793009a1f580029be7999dc6b2da2527a23394dcd48", +"TR_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", +"TR_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", +"TR_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", +"TR_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", +"TR_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", +"TR_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_signtx.py::test_spend_coinbase": "233e91efb19035433834af5f90bcff8688dd6bb829350e535f4af5eecd14baf3", +"TR_en_bitcoin-test_signtx.py::test_testnet_big_amount": "26696705a7d6faf8b1be9d66dbb31aa132a038365632af0a7c01684a1ef40cdb", +"TR_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "90d7c8a448c8f5de9921eda5e27202d6f6498f53a8c0f407906199da610003c9", +"TR_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", +"TR_en_bitcoin-test_signtx.py::test_two_changes": "adb7a86357895a902688d9e65f470638d18b3663168841f42cad3bbed215bab3", +"TR_en_bitcoin-test_signtx.py::test_two_two": "ee8741bff119e6c1049eac69fec502d7434558bc28933275212c4b573d117de8", +"TR_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "29b8a8baf48815ed37ab4f9d65a1585614f5d6c1b582d27c9575fc7215141b7e", +"TR_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "20490fea8715c06a0686aad914763bc8ec9ef6a5e86a01242cc109353ddb6d91", +"TR_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "b9714014b218a5c37b2b716e23298351752a493798815afdd70718987ab9c57e", +"TR_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "b9767163657841add95850f3831a337c709d40469cd615246d0fdb99711753c6", +"TR_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "29b8a8baf48815ed37ab4f9d65a1585614f5d6c1b582d27c9575fc7215141b7e", +"TR_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b8a637d74434fa4460492aa8ffedde9e28f30a09967bd0a68bce035537264f13", +"TR_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "d2c55e76375386fc82f2647e7955eaffa3f82f824efb557b1351163766fbb0ac", +"TR_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "7b1a114e28d69893ee3d29dfd7c43757521aabe9fc36cdd6af7ddcf4d46b02e6", +"TR_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "f3f31f1c58aeb37221a0d29125507b685f4e2e9c6c30555f01c0e4da61a7e426", +"TR_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b8a637d74434fa4460492aa8ffedde9e28f30a09967bd0a68bce035537264f13", +"TR_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "fa651a3d73795053b95513f8e1384d79f696e46db71f20ec9af75e91f4f3a9f7", +"TR_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "10517bdbe7e530082ada2e0246fe11bce0dfdc741ff71b5ce0b1bb33d4d4bcae", +"TR_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "20c8f0429b26bb5475aa7ea438f93bd976d83554185962d9c049f84e7e112c1d", +"TR_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "0f6b1ab9e3a80d96d4645a902edad4a83f384c774b78f4aa7fdb9c8598b15540", +"TR_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "aa8d89d26b9d6ad2829956e0a4f1700dab9757394d2fe7c795e7625c45728491", +"TR_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c028e8e71c6ef7da9857f3696f383d339b6ec72d2cb71df49fffb0f56df71b66", +"TR_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f95c5fe6cbad5ec7838ebb416cff4b77ca7f458d5dea033223e7dc6623802839", +"TR_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "3e83b98315dfbfbd6c9d8fdefb86b9aa7e0537f1c869f76b64e7b70df09c258d", +"TR_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "647905b99af69da785bae3b1edea3a59413ebfcf13a7e04b8f87b4d90bdce074", +"TR_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "be79d3dde7efa8bc8c50610f06b2ce499266ccb9aaed9c13d38e4d335fb44930", +"TR_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7e221e550fe2b75e67bb0610b9afda4a136ff8fd7b9134c08268ae51f527870f", +"TR_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "52d2b069bd357af0e4aa5bfa6ad33a3f3748c8265f826ab30af37fee7634f329", +"TR_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "4f27f131f39f02fbfbe88f8dff94e075ada9249cc775a5b2b541474e85b472b2", +"TR_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "7752a73c3d1e41265f6852cc035f800e6a631b243d1c74a690b268f2f668bbf0", +"TR_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "4f27f131f39f02fbfbe88f8dff94e075ada9249cc775a5b2b541474e85b472b2", +"TR_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "18801fd48cebc1a9acf3abfd2450b5669279604214a6285eb54fff4b9d8a850c", +"TR_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c072f90fecb07a693c09038a26d44eadae88854df02e0537aa99f946d641af83", +"TR_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "249e65809ac735eec03907514834fa347df6fa2f44d63dfc09cc89defd85885e", +"TR_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "9c81e8183e299ca32345f6cf667574ff6dd946ef86211eef3551004c67679c4d", +"TR_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "04147f6c0686415b540e46b8d0d3f449371c45a6c02f6ff65c3e3faa5e40421b", +"TR_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "fff78cd833a5bb893566cb32d503e1de4485a827cdf1b95ee8cc79a774ac0bde", +"TR_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "69c0dc1281d27c538baa617ae0c429365ae498a6c0e5cf5d3cebad23ed3ca1d2", +"TR_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1bdefb37f5e565ad195d1ca61bc772d48276caab1965f96cbaf9f16580fcf5eb", +"TR_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", +"TR_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", +"TR_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "2143dc83a562569771091087d89d164a2f6218ba7e0fa8e2adbb5f802a305ead", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "bd1c6ebb4d702ad4172f710e0760acebcd8b657b176ab09d694fc793eaaff849", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "10a40e65979497c3133baaadcef00665c7c224b03babe623a2b56dacf936d8d3", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "10a40e65979497c3133baaadcef00665c7c224b03babe623a2b56dacf936d8d3", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "ad5b171dc879b4c19c6fd16cefd75e677bebd5ad4f2a95670d7a71c6a83f2614", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "73a423e458b85de0702f28ae7809bdd03b7507bdf5726e539df0d5e9c0eb0cfa", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "60947b5820e78cec105c9f2d7f2cb18d080e6f9ab4e786655eda6adeafbf5b92", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "ad5b171dc879b4c19c6fd16cefd75e677bebd5ad4f2a95670d7a71c6a83f2614", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "3d655937ab909053a65198be3b9728822c8a732efb1fcb8da3e1db897cb894ab", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "8bfba86abe6ddf1ebdb50310bb124f3b3906dacf7c5ea57f06f75c1570a9665d", +"TR_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", +"TR_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "c175ec0da3d56c9be3a81a818ecc37c1422037d99083779b28608f12ff035529", +"TR_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "8012ca199237c207abf7c1486580fa880cf8b0a8956788754cfb707035c80e55", +"TR_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "aedb92ba5420235a7d9071558dd090655e669dfe0e8e9359c53e4395d00983a3", +"TR_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "805e43edd2e618ebdf3c7048f84ecaf6e0c1ad4eadc525973673c39572fcffae", +"TR_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "4733777903a39e9ff9c04d8a34cce77109f7ee6d526dffab432b6e41cd39a35c", +"TR_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "57eb82ad09663331c93051b2bd414a7fefedda56aee170a3420f1dab9d79a231", +"TR_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "2865642943d3e1945cbb497a25967d134cf067db03bbbd6fce3a078b1264e222", +"TR_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "28a2b5a2761e176786f1800d27655418bf9a7194d48d367d39898cbbe4d77a8a", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "137a9870f2fee1847bcaf0ecd6cbcfd69b7af23902b4230415b0b10ae6fbb2d0", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "7e9779beaea3835034aed8c778433935eb77a82b4552883eaa1d1062c4282046", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "ad74f383c53ed6e271395ffb09c6e987b5c6d182618ee5ee362981aceac732ea", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "16ba7b01fdd5e486bce2f871bdd0ce66fa5e4fce8ed0338176a061e3df99ccf1", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "6dc1beb3e38e3ca07ef2e4a0f6a5ffc8f10b11256b1c036f3e54ff06e14984b5", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "c01e7ac5c454ff421a2e263e6349e3e16332113d8acb92175a30b7cc37f35cdc", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "b8a637d74434fa4460492aa8ffedde9e28f30a09967bd0a68bce035537264f13", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "4f578cb54ff29304b072e8272c43a6517ea7d3117700e45221a95ba756af1100", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a737a936ba1f3aeb5e1523af8a556c06ec627087e0e79ccedd6783db4fa78990", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "51460b3fc4bcfca864c174f6b96d5f43dd77ddf01f5baa0b2c71336472ef63aa", +"TR_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "2f4ecc827daedcd23119078e152279adbbba3b641e691435114addfc29f3e829", +"TR_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "5ca01c1e9a6c496eed957e46ab26dadd3847731c1d8d3d02f2ed30bea954b007", +"TR_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "baa00b071f0136573a12b57eb1c3eb795ce9a9edb56c5885863dec46efd191aa", +"TR_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "01cb6d247ac5255e71848c23ca856ec1f4a792f27877d6f4bf4d2c746204ca34", +"TR_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "285c46efd05d5634a7df0e7113ebc3495f8dc2a8556e0382c1b8b20af1f7d5f9", +"TR_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "b1a6aff58f9553f7d23e8a1a881f86b59b64453469e186753e52e40b62a264a4", +"TR_en_bitcoin-test_verifymessage.py::test_message_grs": "d300a6a3902b82cd6cb64d8ac6936bcaa187d429439b1fcd986512b71b5eef56", +"TR_en_bitcoin-test_verifymessage.py::test_message_long": "a4cf297dcd18edd16ac83a09e688ef0e0b6e049e7b40d17276a373b67e45ec9e", +"TR_en_bitcoin-test_verifymessage.py::test_message_testnet": "ad8d02f9ee21ca37bccad9954c696226b9b0912640d41a48e14ef7ea8c12df5f", +"TR_en_bitcoin-test_verifymessage.py::test_message_verify": "54c0daf2885f2f3d5693503cb88ab07332ca1cd80b46930f942366d6e0fe63bc", +"TR_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "4dc5452a0e7ddb626a18fc43a3d8a8596bb919fccb1e955d5bfd0cd7344b8f8d", +"TR_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "140bc4a2c8be416a038b0f16d9f7cce10839c6efa33a5cd436fa76246c4da5b8", +"TR_en_bitcoin-test_verifymessage.py::test_verify_utf": "7dfbaac3a12e196d28b4e828fe15be33da618d546ecb45439ad2f9a7191feca8", +"TR_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "4debe719007c3bf6b024d5cf6bf59577862e1e34d7725257bcfb48dbbd1a4c91", +"TR_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "aa396aeae8eba6cf46db5f302798b552b084bf42536ff0528151a63fe887ecd8", +"TR_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "fff54589926dc1eb840f1a3b9de82d2a2a178add2c95b532cb8b6cada3498cb5", +"TR_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "1ad37a04a4c25aaf7f54037f1c6bf92fa9e97e17a095c7d71ba4eadcfb103a21", +"TR_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "19c06cfbfcc58622c9fbbe14b56bee7a8a5d7ed094dc0aa4d85dd58309eac6c5", +"TR_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "cf9f0fee72a2c1822250f938ba980a358abf67894a193cfaf9e7ab39e746405f", +"TR_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "314a767de1949e7ec83868654cdf8f3940624ab95db558e932bddea52518dafc", +"TR_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d2b1c66934dab005f46883e0b4b60bb0d107f5ead5968c4b58ee9b5db41b6a85", +"TR_en_bitcoin-test_zcash.py::test_external_presigned": "234d3d65084105e95d632c69bd0e8624988cb98479f02da591104911877f01f7", +"TR_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3dcdde5408fab5932d7a582dc69968c180cb5022bce02f2c9eb5ffa0d1e6005f", +"TR_en_bitcoin-test_zcash.py::test_spend_old_versions": "a06b4a19285610c38774283f39d1228bc89136e7f3d0efe9b866f24af44d89a1", +"TR_en_bitcoin-test_zcash.py::test_v3_not_supported": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_bitcoin-test_zcash.py::test_version_group_id_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "545061dc27940209d764ef8e128ab4ebf0c2d6bb87f5dadbd37931b895c1f1c7", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "4da4fc73f5a07547a3a272e6dd798e06f62127a5a9eed653178e2d5a6205f8c8", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "810e5d7133ec687da04d9363725fc4a6050c268be4d08d6cfa46fcdfb454c001", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "726bcf34af11d0a58da2a25294dd67673f684c39bf76cc9f0608b78930398ea4", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "c2dcbcfc84d26bc814f31d1006e7d40791570b082c4489d7a8838179ce5592bc", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d77dfea2acef5b71e875f513f4dd54e54ccc3f9de996aba73c8e6f819ef58216", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "3d8855f3163fbd92a8401c88beec77a333d040c4b520fd6a67ee1a682b871a04", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "bdbfc17421790c0092fa44f0526c10806fb2851614f0d6b5e6402249ccc02b04", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "dec427c461d3e4911415c66b5b5cc2136633ec8c7211a1ddb714ddba26fb8656", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "3e6cb6ea0d53b3df5a6e86929e14bac75d6a2f7e596f486fcb07b30066c58346", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "b72e26501c3719d569f2f46e79b637386d7e42d4f92e93f2c1c0667c83cda9be", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "41e9ddd4ba0a8f512f2b991a34141f416a72c80df2cf27ec320642aca1eb4922", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "a7af7d9295e5d47b54d1f9054de5778d61fbb9b025bf3619fcbff77fee3bd0cf", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "21095d24f33f8341bcfd80a5b35f1e255cc957819f26c6bc36e6ee8c36d4b654", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "e4ab556c30d6ef3e0143476dc6a7b56750cee248a8d4d498cb529691677ae938", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "650c563e13e1fe80a2dc7caf1ed96ff28a143859ce5e6552d93251d312439772", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "06ffd5b76a92b8e1af92def298d7be7d39fdd0a2be433f473c4add87638def2b", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "f5d93fd937cef667ea10ad652103606777aba71472e0cbb0f0c36604bd267a5b", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "2eaf333268921bbbaa1b45fd5f329acf739cff8db83171af875ffddc5a42fc27", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8b77d03a8ebb38313df52fb791d02fa174497988cca8a38aee12a276b9e2f40a", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5ad699e9d4d52f05e8855d80aa72dbdc2d908e59c50867843df3768e37d363a0", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "622eab71b22f78a7ecfead248c142f3fc16d670f53ad1cac129f099e40320e19", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "2c912906e1b16d45e6f51787af37e3720838a18d698d24566bc035df3850a17b", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "573aee9f27cbf862c4cc27697621d66b3ae24885a05f4b0cf5d290fce4fc9619", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "c78f2170c33736f0089d69c07e258b376e353313c1b83d5b7fae80ebe3e244a0", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "36cdd72ee5475fd78226efdfbee0298ecb535319255c39e0a96032a16d63ffa6", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "d81a53e3565b5790d9d7c95941934a81b68ca5875efc9db9aa2b307da6fe3fcc", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "cb382077a00fadd3a6b96621f0bd8a7b813143317013e134990440ec6c37c7e4", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "751052fed23351e20a26dcaf4d5b7d01e8c7fef1b00cde233944f2576c83f428", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "2331b75c6b6142ee671ec20821b82e41df66acab4380d030eecf896f9e324735", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3d36f787b6565bac89ac5592dd2dc1b2a0c7dc59ffd57cf06a73ab2206743b08", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "0b65b6936ee58ec1d34752fb71c6bde429f5c903099e5deaba6d01dae673ee87", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2c90dc19c83cb160d17d2cd38821e6d5f75b2a9fe02a755a368823bd39782f4d", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "6136c84cef10f6220943238cc0965220df71d957083b3c12a7ae6f3f8288dffb", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7c0cec097064eca5ff9373b88bff58fa67775069fdc16fb4a8eba71f4f6444a5", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "0f3e255262332d8cc7c46bace39bb1dec26ce6b8704f422e8b7c554ddba3869e", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "aad312020098e0f62f7db9f70f421828fae9f1401a2883541226778fef5b26ac", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b2a99ec12c8b18048017ed6f21367bf4899c01d7732417b2a88057c296a856cd", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ba4fd380cdf293c7743cd353ba14617e991920270316f89e23321a16befcd2da", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "3d022f8c0ca045ea2c77c89164ac69cc53622e09449610d175844cd7d0456d80", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a1e7128e23a8e8613a83c5ab86671a3b97f025a03609cc9bb35987f425151fc8", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "6693459df79b809151670e3de8b5f656e25248fbf2bbbdb2bd25449883517c28", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "46e5b9f8609dcc957ab5f2874374907a8c95746d36672ab3ac967a5956a64c21", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "33de2fd9072fd80691ad68e7f40e9e19d3b3e6e0d065750d985ed39d1e355324", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "20d33357921dc63afe299f4dd430f1f410a1750ee421496e511d87efa9db9bea", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "10c9e76fad899d4439a1b7770a97d341d3234331d388ef5d4a67ea5572c592cc", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "dffccdc2b3c5bd68e7f2e47e1a8606936a519f73016f6ef92a66fc427babb297", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "284dcb51422dada54ca2b0d5e68a80cb61ce66f4f782f9b71d53e97dbae428de", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "6ec3be79a26a25725d67a4e640df17d0baf1a39a97931bca373f6a34d6f0dfaa", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "db3ff1ce4b81d7d6b2a80d656b18281a30ae23c2c7875dcd66d35bd316e8d72a", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "6620aa741dfd56d23a4b6abde900de658bab1de93a797b00577c2b804331bd8e", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "60e2c396c5f79d4a8718aec1b0f2277aa420e225d45f24ba02499a5f2e48cb0f", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "ab1fe57932eca66221b690b822118e7dd2ab3530b0994cb3c3440fee0b4a091c", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "5d5785ad5a4bc8c47aa43806e437510f14bed122b7a754f0e6672d32efb1b8f5", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "43d673ce17770d64fa1612e3bd0d69a55262a84b15659a9b676cc1f293254f24", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "70b83cbd0b0703709b9199b61311bca59231e4cb90c046448937bd8150690d42", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "01ab9d79241820e62cb40da6804c34f70f9e0acb7c7232bc71fdf494228834a3", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "fb75b1696625fc39e8948ed7848dbd24b11d6877c3613836f315848d3ac38ffe", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "849aac1532f28a8f011da503c70cfdc945abd22cb60f7a850d1c816efeeff09c", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "30f0f80146d1a81e6ebbb2861e01464a2e87859aae1bcb4643063cd35fe7e827", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "8f650ac94d77b6c7a4b351cb524add7f70ebba8bac2711889bd9df7a9b199ec2", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "589a7ccce1847077201219a61c007106e8fea26d08fcb53c453ae75500f81f1f", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "08ce670f97d7a37ed1ebceb8165fe012c1158861b2f77d24762ed763f5cedc98", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "fddd38f2a5c0effe216f0600a318b1ef52730dea57636659fcbfdba3251c144e", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "cd624286f3812f9e580bbdaeda5f8d059d272467feb5f014d773cddbd2596400", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "373525f97b036959fccec948b425dee2839b50f3a0be67b6ced9cdecb67cbf19", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "60d982d450fa6545ff619b70aa4b380ca01760b1d5616264262d58a235f7661c", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "1b839ad816776fad0d985955008d926e1a71683c176e62e802f6b4d6c9d1c843", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ee19e643f5413b5ecc1c342b1f36e61ce42818ad466df9b380ff0f8b51803132", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "0e79b6aaa4adca184e31a8226713bc6b5967408d7a8f26190b33fb0e7389e17c", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4f9d5909a0fe423e69ba11eccf91416e4bf4aabf01ab4fec471a69766505d4e2", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "2ceb63280742e4e2d9c817109ec1fe217c9f806292a04a4f5e2021115016822e", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "9b77590d58e509ab74e2ba86524f73329572c5eb0195be9e93f6e29e0667f529", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d7a1c40d1e99f371309014f679857d38d8273b260a3f32bb7f9469f5c877b3db", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "38425ccf3b5dbdb2fbca4b6d7f416cda91668f6afc4aabd8b32172d51b47e85d", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "58e5de56b1ebdc0b3b46ea44ea7442b3b5d778895c6f6916b942ee85c4071e87", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7528c3b217a4c63a90a0c69dc5a660b9fdfad8d86830dfb0a4dfec747ec515d5", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "a101349320f070754717eb397ec08f1922cd700e11cd4c54053ec9cc119c5e2f", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "305823f85c87d1574c5314a1d31146b979d724cbea3a8cbd949149aff69b38c4", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "fdb4d87e529fd665b1900469c8fc6c5c2901aca881d7c19a0180f4cc70cc0c17", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "41364122ea9e9e2d173707d82d02348a85abb382647f2b9f7a1e273c6dd13c50", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c75a822330f569d8afdfe02ad1e421171303c8d9fb3e9856bb93494a999030f6", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "81aef06c2f3331d7758db1601592c3ada3018132ed6792c1126d62a78166cfb1", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "1cafa09e0c7a7c73997a37f3a221eccc61f157a68a941e10d9b9ea273edce6c2", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "a1f6d5c8d8604e811c4b8ddcc43d7d19d039c24aa2494489064d0ea3dd46c47c", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "5c868a0786c0d7f73e6bc3264eb465ffaff1f327643ba3754214b2e8f0fe459d", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "49766385de678f60d32c2d2917a9a56932a32def07f96f5a198ece0eb2c603e1", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "c768c5a9d0ea4e0d7158048e59468edd7b23d621479294b586fbd966af9c6c2f", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2037381a71effd407e166945821543ae05d7e45dd5b422676a1d05b4475aaa3a", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "59b5fbbbde955a3af5a936f883451c77e37e5b0bab81eca8c576d311b8e744b3", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "86ca8458a4076e916abace6c0de9a99309ef44f3f4f87fb79a17b05a436a294a", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "bd23891956561c04893f8cdacb1c1f5ec12427852f03c72020d90021548248a1", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "633aed5ee504ab81f2cc9567dd76b70e9ce0a9affe903306e7347e33766144a3", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "4e9fb93472cb3f70a9e5a64b146810aab506d93bc87b2dee6ef5c7713df21f86", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "599851b3275abcd3ee0632c8be9ea22b29e37e5b7f9ae8a8d06aa9ee02dc035d", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "ee04ba3be9446590227e4870b18f0284411eb147b4d06cb6b5a3ec8401d5b8b2", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "6140a548f045edc09e51e9136c15e846cc4765d8d399d5b202678f7d2c69c221", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "299ca1f0f9cb043f849ebcb7f3ffaf2f829a021ab0f84138f6150686d993ea24", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "d324826024120eafda88dc4a1e1d0eb9005687e16508f9331f0f13423d221dc2", +"TR_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "589495fa423d26cf300a175b88c898fe5fdc6cd7074c22a0b56da72df6782b2a", +"TR_en_cardano-test_derivations.py::test_bad_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_cardano-test_derivations.py::test_ledger_available_always": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "2fd02006b5ebb2ba3d11c9c62ae4e672ebc19d1ac7caf7de19c7a829e85e6bf7", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "54b0585e212187a99786f6a4030a11e18cf7a606029a9b10bccf229225482e31", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "76e8084cad93b29fcae123951653737ec3c514855e5cf6f9e645fd6b80ecdd66", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "7b37e14b9ed67953d69adfbbb6b02dec7b74b652bf233d851d5d9467d889431c", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c44238a8be239fd7ba56205eb475379df658ea9ed99176b3b2ac952e84fed919", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "1410f4faffde9345084fcc946b45faee9d069b681285adbf70c339d14c6f9a55", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "5339f39b72ef1b0c889fcefdc8a17b7241f705a438c7c823c84561b42ea51490", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "ef28e64085b26b01f6d1bd9a282f6767a9e4302d39e41b75c0ed97cb8c08b8e9", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "63f3a62f6aa1f75af15bf7910088b3f97f70bc621feae3482a5f607e7e5c3887", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "7dcf294c7d52e12cb1e24827b56de8b27ac5f2258ae928eb59635f5069c21757", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "42b10b4dc8fe1af715ff02cc3b97d3ca4381ea3b9a9a9ac1125042c9a71ddf95", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "f669dab5b7c89c63c6006c44496e39ddccc672b97da199f8542b8a4a9178ecc8", +"TR_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9facb40a3379b37d6611a35cc8412339a0f8a5f6c2343c9fd7feb353a6de8877", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "283161b717285711364ee06a08f65a0d75683dbe5cf2b74417c733e7c605cf83", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "70609e795063e20a23b96e4d5ce2f982f4a2697c0fb4d3917b6cd0b8fac3a0cf", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "83ffbe43bda85acaff14fe20fbe34c368f0b2a215e6b70d85892310a2b9d17bf", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "70ef01a9d0d614ba2b3cfc82e1bd0988dfb83245a433aef5492ad12cd6ac4664", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0cb94d9efcadd912d882950bae55f27cef090d5392001299acf5c32a8bf0bc32", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "19f6de0c915cd19c968fe831abce1dbf827b1b5505618f1d0e79820cbcae2099", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "318f089413ca76f85cf957dcb8803b121e6f3016146897edd6040a1043472c2a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "8673fd2ae6fb4a1e910d252c31ea12694b9cc7a6a6b7db108d2c36a3e91aca91", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "e2327cdfd247746d7529e9eefb43c35e9f9553131bf40fd0cbff344facd0d5f1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0ebb4685b4085b2096328bc2296dac4397c9cdd79dfb924a9cabd40e9b2d1807", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b73d0e5eb5b8d5648b5d943418f8b438114ba9466363510f37106d5b32180534", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6e7adbddb0bb40713a5298e7585c694a4e3a7af0cdb0b859bd2c1ef4b5044b1f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6e7adbddb0bb40713a5298e7585c694a4e3a7af0cdb0b859bd2c1ef4b5044b1f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "efbe2a8f406da6d6bbb0b2c3c96702a9ec4bdd093ea9bba4d7ed140d044b86df", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "d10cb96de4731be84eda48505a683164ef85c4c40a8eaccdf46b55cdd871a81f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "36df44933e068aea2c5c8dc3c9527ab0fd95473aeb1bbe8050457a8cf1c90940", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f32cf8b415da538144aa52ab21b5a2bffdb31c4d5156e598e32bc81e1f58224d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "3b284571c891b0de12bcd391120b54fa521ac747896551f6ddb0a187a11c9e54", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "158a82a2b0151263f31b223e8f2f1c30925c407d9fdd1b81c196f75115209063", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "3abeb63a980d0cee07df2cf01eace14359e3774fb1db16bc414f1fb50ad1d81c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "581ce2a17557cffe22ea84a304afc8636623c82f28ff53a27349b93cdb5029f0", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "3b284571c891b0de12bcd391120b54fa521ac747896551f6ddb0a187a11c9e54", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "ba3ffd638b5a6e3e50df2f8ee355af062a983e33f853dc13b04bed2c510531f5", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "41c18f927371a044ae76aae10b401e613f013b5e85b998a6490a8e3e59df32a5", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "149390ade67242a7dfbef1175873c7ff4da29ec340f9db2fb48833f5f2ef5a0d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "066511a1eaefd647ed9b53480fad217f176d9f07fa4048e6518e20a948627990", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "541b3b9f9ba841ce3d46fb7082d175716f98e706e4bd4027c6800dfd286e9286", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "24a02a101fb8e42117af6c850dc78edf61a66982368b56c5ebad16fee28327d6", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "815dd2f93b0f72bc401572e769738a8d76892321bb453e32eadc848f18d1efb2", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "7115df98f6539f3657d5757e9ca31109650f48318f7314f13452dcb2a452571c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "3efed449668307507b40196508697c0096cb0a1a57c53e4e5c17506c1a076922", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "733a4604fc5f3143556b7032fa80a330c340b2844d12d21ac672ea8a98462674", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "69472a182d2218260d77aeef282c5481f3490c2cf5bbd568069df0e0e3b4b933", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "06a2c7a6b76599927e723286c9b11006ec0f6545dc3923d340e57abaf35a64a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "5523d539a970e740033470d38dde51c24fe8f3b63422290f3d65c0381bcdb037", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "748d54a2d8c48766fe7bebdd13b5ab25b35a6ad7b008ecec56a1ad872d1b04f3", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4d088ce7aabcf4d3e4843f34c0af230335f91002ab785d2f0eace3fa35b4f965", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f428de7357f167421d37bae68d5c79a8d9afc69eb16697fd4ef9156ec5c4ed30", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "fc4a796b8c2037fe18942c058c716da4a28e22952c32d758bad32c141440a4ff", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "0944a0df8935ea245b6dcccf8ca5ba71ea3128d1ff8cbc3649d2bfbea9a96ee2", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "d61f6a0c349c7532475f9b2f13cb18aa39b560543a35074637dae4d15026566c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "646f1150e79be8fa7285c1e520813a4880de0618ad379e0c3dcd0ea9a73afbc9", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "93be7fb1b1bb7cec0336a470bad734afaa6a14e2ca1e15026e764a4129693105", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "ed613ae7ae47e94eebd3084a601f15ee60dc311b8096d554ee3f590fb92b2058", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "f8a5f1201d07ed98cb03febffb0a30a2e61eb6ea1540cd25fd7135101927d4e9", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "f1ed37aa52e934088876f70ae7a0fc2470540ef43e6dfc79778a2c7d64c84bdb", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5c081587a0c42ed299c6d47a4956ee6c3171bfd76dc10472f2dcb8dd3ddaf2f0", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "521ece5244ef6b68acbe3344d069b3d3682b51aaac931942c64824353bc74eee", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "59d89672426e39c60e380b34bf10c4112c4888218ca26f0c30f3a7ab93e6f5f9", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "d8b3543c3a9e5ed3666c9445ad1f370d02d46bb15828285ed7e6d3ea556aa9d1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "7696d52a6d2f8d70d669b682683bb0a91a4bdffd54d4e0fe9aa413c5e2afe2f1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f11108652b0c097c9c48631ccb99a73e87f0d8d43df5a7774769e1609aedc59d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "327f7f3cf53e41b81e64121e7be441b36e4bed7bc8261f967a4644b8da0e228e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "87f57313dd6ee584520df7be84d7dfff8479bba0281562e6d455ace92585379d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "59076df42e6a73608e096301379e92bf0f330ffca0ee47ae38b836e75f624f53", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "b2515ad0d97aead646e466792d2f24b528f8a12ac65312b934bec642e1ae5622", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "423770f2df64cce2fbb9829838b7dfb56430467362ed5f90595d8eeb44f20877", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "46c36d6b0b15c419447051a95eca762449598f3bf8fcb589cbad3dae90107a69", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e72dab3ff56d1f8669b23eaa591c642e9383b26acf32a0f98353dbc76e6921a7", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "02c9e2f58df10d287f445451bc604d7e7f9e3aee4d4a71600bc1c9c8f71565f6", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "4d1765a5884c859931f9f9563ef18c96dea375ec9e9f35b57ef90e310a4854f9", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "ae313337f431adee78501828a8f2678e695793f62db2086ec8bcbd3e40247ea6", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "1d15148b46abf605c2d03e576d6213ece4cb547fbb05127c90451a287d0b3c7b", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "b493feb11e54a69564616a30f6e6296fb55b0c966de3e13c86beb99ae4db0e95", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "a76bc4262d06bf326f0bba26dba84810407051cfe376d490dfbba929e7e74f32", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "284861a73c22dd4f8dd07d6aebeea510e24d8fe0c31b28cdc0cde09fd6f37959", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "93e369433ce371ed26abcfec3435a71959eedfde8552e24e07e2f7fb4db33ac9", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "add0002c7a09fca5b066cab80691f06dc889e285f21e207109a0f1a7e5f13508", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "d6cd63b6cbe9b5d7c584e9b8416ba7ecb7ae42e885a939887dd653c60eb89378", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "90c69ce801d1261d2173d02b208c28a1f92baa337e0c0ed1358beb86c24ef217", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "39e5ac438b6881de1f311ba060077b509a47b73153af2b6c15409a1c74ad811f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "9a770db81a1f5489d29d0d1f9aa417dc58bb1b1fa18bbadd3e03c243cba2f9ab", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "9756af9492954b810a627f03321aa132aab70f4313e04884657430f4e3757101", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "9cdbdf8b1fe632a413b176916577dcfbe937a6193e3c1262e320417a8aecb69d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "9318e6bdbdf1b9c24ebdae7f004b158639154bcbc42d977b87492230f7a13a1f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "ccb7505c95712524eb2ddc1d1d54226fbb63fc174f46c6dbc7737583f1119d52", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "730cf9afc451516b1bdd0bd84bed67b18ea920f6af85abda2f5e67520fed6322", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "283161b717285711364ee06a08f65a0d75683dbe5cf2b74417c733e7c605cf83", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "318f089413ca76f85cf957dcb8803b121e6f3016146897edd6040a1043472c2a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "7403f3aebaa2ce01ab2eaa92cc2dcab8ec727fafa8bd8bb81d6b9929114692f8", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "04eb8808eb8d2c24b320f533790cfbdb19f9c5166e1a1afe12f5ec277e468b4d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "04eb8808eb8d2c24b320f533790cfbdb19f9c5166e1a1afe12f5ec277e468b4d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f2b65af0bc53f38ee2d629de8ab03929fdfe5ab7d1b6af612a6e7a4f164266bc", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "aac64804f6ee9bc2a7daecc48e2c7981cdd14a2534ca4c4de02dce3bdc17344a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "d6ce2b7a6887d7e5a6a51e37094ba9d02dfdb8c5a55ed3af80943445a1b73a43", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "8684f9d1478084d37050ad5212102e99691fbc9f439c6f40d69bbdd90d6d729d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "4c015c747ac2fb01b4f72aac826f395d1f3635346186922c990702b2e72fdee4", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "3df066c28afc13f43328bae6d51e52747041e676f32f424044c525a179a7dffd", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "8684f9d1478084d37050ad5212102e99691fbc9f439c6f40d69bbdd90d6d729d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "0bd171a05bd92033531b77b65f01cb82a43613f5418c695c8b47bf046fcbdf31", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "41822be60f1ef3a19c8e146cb96f5da8960186ac1ae43e520a86dc7bf8da4d7d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "98e41212e5e2595f2b0350ee24e160f24d340adaea13e685d1b2f1998caeac02", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "f640afd3c8f96de52e7abf43f9c107ecddc8ec73728d2b33d00a7f4da82f41da", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "3cb8c35708a39a835014707de5f7f2f196264f05b2d094d162607bddbe9d8c15", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "cc8549afa850b8037fe442e3410bb75cca7d619890bc5c7192cc32fd324c412e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "2e2d19c70f2ab9f6a441a267150c382a3fab1787cffdc68c963a2fdc7a6796cc", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "4c23766c45202ed6f22af0e24fb711fb6fa177fbcbc98ac5e7262316ab433964", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "69a9704afbf44b5cb52c0eb074d6baab7365d8de38b2b06fc8a0ad4d8c6a5bb7", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "af530c1edb6a2cb39d0a826e949d013dc0a39046597c23678aec893fb84146ff", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8010eb573c5f7586f35800a931650692c34c54efe1b42a76ce21c2e636aed227", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "04eb8808eb8d2c24b320f533790cfbdb19f9c5166e1a1afe12f5ec277e468b4d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8be8996586177cad6a828fa119561de9dc920e615f6cd23dcdc75f4c51b01a2a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "87b6df5678284908853b2b64028dc23cc1a752c72c7289673b870ebd717270e7", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "c258b0638761364d68110fbee1c64585fe98ac50241c334e576b02a0cfdb2ffa", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0d34932f31042d019dbc55e56e29c861d516b7467da4aabf74a130f917031b10", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "250d3aaa65f63c1ab21925609d23f9e5b2c2a47646ca2e743fd3bf964c872829", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "f05b522706867ccc4d4581925106e0fec1f9c1cc6abe406e761faf6c1957845f", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "ba30d62eed7c326002762e8af70c1faf50603e21192b7cdddda665b5250446da", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "c49115b603b977683c21d3b24f04f8394a172a53ee524fe2521b78ea1f510e61", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "58cd99d32df5de73d45a1a5ef32cede77619c03335d8063005896335938916b8", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "9657efaec571f16616f903b9c68ffdf9f9d39628f33ec3c10a63a6377feb7693", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "ac7c656cfb484aaf9596dae64402e15d4f76d92ca6377ffa534307829b1835ce", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "fc825672a972f5d3e48d31e73f72b4b4d2524b3fae5826ab80ca43ae18b40038", +"TR_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "af91468fe2519576e6352729dbc49d495746e12305f898f993159871420f0db0", +"TR_en_ethereum-test_definitions.py::test_builtin": "17052584cb918319f3f99c6d4909cfc451af7566c58bf9c726f90f227f3718a3", +"TR_en_ethereum-test_definitions.py::test_builtin_token": "6b5667adbdfa072e84aacecdc3a8569c0cd863adf7da83bf30496a433a2f1e44", +"TR_en_ethereum-test_definitions.py::test_chain_id_allowed": "2a93db16588c683daebdf76acd4ec51a8c5ab925c07ee6714a8da462e8e6b5b5", +"TR_en_ethereum-test_definitions.py::test_chain_id_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "7e5c04a25d1da4b27bf0a2446553a4e77486b5cd310069ba8b4150a3108f8fbf", +"TR_en_ethereum-test_definitions.py::test_external_chain_token_ok": "b26a1b9446c97beae91deef2d5e63d646115045955aa1c7ed3338e718af952d8", +"TR_en_ethereum-test_definitions.py::test_external_chain_without_token": "1b01618fa6a5bde22274cd7ea7c8ff8c35d5907a38ddb13841d8d4cd62a11193", +"TR_en_ethereum-test_definitions.py::test_external_token": "6d7c87fe57969e078ea58a6ad428e3cd7fd6e9c1e321f42d02645b58d06e8495", +"TR_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "33ea9e56a5a7d40e4fa8229225781d521984ef2a4d77460d98c99b81acb2dd08", +"TR_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "a1bb2de5c72df145f463f02344854a2e9164db148d1b836fa8e6b3d751556fcc", +"TR_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "6b2b697032c704f82893405792572106cb20fe664d876904870973dd1d324992", +"TR_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b5854b35ff2192047be0eb7ad867a1e07a2b4d7da4cfbc1e4966d81714571698", +"TR_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_slip44_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions.py::test_slip44_external": "b33d9f06bfceeb816b7f1726513a8b689e4fe912bc18e247ae7052dd435483c7", +"TR_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_bad_prefix": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_bad_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_bad_type": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_mangled_payload": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_mangled_signature": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_missing_signature": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_outdated": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_short_message": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "811dc2b45a93c4ee24b821b302fe56d9091c00bd7ed2e8aa3d897a3b7e8e37cd", +"TR_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "31a141e0c77e58a3b4f03eb638ad1610e909652fd80a8b828672101861427578", +"TR_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "cabd4b0ab3147ba837b9ffd985c1818adb682ae23f5539384b3deb28ee12a0a5", +"TR_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "0c5676ea02482c8efec70f854a4f3df588981d8856074595c1600dfe00c2cde9", +"TR_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "a748cc5bc5c15f9e11a1bd827089c25bec0f2326011c7425af5ebcf237d6ee7c", +"TR_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "09f7b0723f16b99c91fab314631b98b12d67a75ef58de91db61c2b4d3a4289b8", +"TR_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "e6b1a15d440d1bd73f634260ce93bcafbbdec1813ebc90cd5d7f7c79c2350ad8", +"TR_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "201e023adfd09262087f362b4fb42af85483b96b683e2c7d713dcf6fe52af69e", +"TR_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "2acd0e023697de3285526b28a52e970838e49fad9ebf56aea5937c662600d0d4", +"TR_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "7ded58de8863dfaa44d472cec969abb9bad0905174dda171c32125ed9a2cca8e", +"TR_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "f95d9e56c7aed4cf4e54702f488753cf41f7899b4b4493202ab29363e36fe5ff", +"TR_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9335cb0261c56f6312bb3f64185f6ca9f91316be6477305820c04ad3c0cc6a8e", +"TR_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"TR_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"TR_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"TR_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"TR_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "faced4a7d5372b3039bceb0ee5a76bcae0741fd9f1fb70e3ab9240c1e79fe0ca", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "db06170b97d4f2c112122b15d93096078b252ffba8f4a2df093b172fd0c9048f", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "9ed1a553e7b7c76ceb7d65200e24415873986806557e7056cdd2a460b9a7a59c", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "8a548b807e4e6358fd9494e033f7627aeb32caa7174e14d277ca97819f2a988c", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "eb5a9b110ad0d8522381cebe05961703e1f4d338f1692b4fd9a43568a6dd14f6", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "6a1754a26c5625829c1d225d29f72ba3857cfcdc03d6aae435e4f48de1a77267", +"TR_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "5c84fb8b2828b3f0740a8dea83b3f3ef80f08c4c79701e588d69a2e3667e26a0", +"TR_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "df5e11d8d0a46cf915ce206363ac114f4f7e02017868bb48249ee5806ff05928", +"TR_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "bb90a9f7475069832ab6ab2863e0df56996351a92b8caaa4aef17c96cd07f56f", +"TR_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "4caeb1c742141b0b20b53b073ba96c8e18ed5551d8baeb8a9fb219db02d39b75", +"TR_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "92cf6d7654afa3fceef5eff0957431c5eab35018f9c08b923aa432363de62654", +"TR_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "25555dbc9c683e6a37a12615b2b92b6b25568b2ea37279428c97ab191d91891e", +"TR_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "b641b21c5902c40820e648ee53391bb55b5b8ed97bbf415528d3957ec633d09f", +"TR_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "a0e09cc749b96597dcf5a8a692ca4c5e08f5431d383ff47f45523dae302af3fb", +"TR_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5042e9de4251048ffafa45052f3c511c4c8791701e230707b1428a676e0e8ffc", +"TR_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "138b0c81648eb191a3044b692ae6bc46ea9c49dcf1424b61ddcbc50b5e5abc95", +"TR_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "daa48077ae60cbd84493f839430987550e57c7205c857f81c9da68b9679ec5cc", +"TR_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "6907d0e5e2121774bc38b233c9d8f8849b429d420ce16960f86faf7af0e7dd3b", +"TR_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "879567c25dbf359e8325711b4c81cfd3017ebe275c6f5f10799b13f53513c661", +"TR_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "aa9d1cefdc50956833cd55ed2962e83b5d406e6819233a05c703cf297e518731", +"TR_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "c615ad915d517dbcfdeb00fa5aeb0a49bb4e46293ad2469b4c658bc1f297a15b", +"TR_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "9360e0a6ae9fa17843a61af2b384aa49f2f463ea98b87eb3cb49dd71829b9508", +"TR_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "13d1772f9773e33e579bfdb015861b918ef873e69cd5d13ea86901501e1b17d0", +"TR_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "a853f7bb2e397c727d57023ea1a1606b59473b6e10cfe0a8c45447bc20a3eddd", +"TR_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "daa48077ae60cbd84493f839430987550e57c7205c857f81c9da68b9679ec5cc", +"TR_en_ethereum-test_signtx.py::test_data_streaming": "4556e3c62df6a500f332859b3a5d957d32e8c149d5cbd875d46c1062afffc433", +"TR_en_ethereum-test_signtx.py::test_sanity_checks": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", +"TR_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "ac09fd0b3b4e8d6db3677d9e87bde3190fc571bde240f527995870862b599f77", +"TR_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "9992f33c834fd440acb00226b74f9020e5041ac8a27af3deeba1ebd4e49ee941", +"TR_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "8434fdf9fd0adfd841fa784dd2473d2a0e76bc748e13f5e9b68e7ec77432950b", +"TR_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9992f33c834fd440acb00226b74f9020e5041ac8a27af3deeba1ebd4e49ee941", +"TR_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", +"TR_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", +"TR_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "9cfecd6b73134e446836d7c0a6e632ecab31ce5c42430a29b2d16998f36ce505", +"TR_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "9cfecd6b73134e446836d7c0a6e632ecab31ce5c42430a29b2d16998f36ce505", +"TR_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", +"TR_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", +"TR_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "40a1c36d02106c8aa492229a6f8f68e677a5b12fb1b8bd86582b03dd8e56f99a", +"TR_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "08d14ed2a8e55a76bbb7a265d6e9c18b167a8efedfabd87a66796be99a964550", +"TR_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "47cc2312c02c7a8acf5eb8e6817512b1a85313420833445411dbbe1c6e5eba30", +"TR_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", +"TR_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", +"TR_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", +"TR_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "8b980005c73c6341727f542e4d35077cf7cc5251d19811bf9691b095cf7f8f15", +"TR_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f6421c9631d9892a4c51618bf3f6409a5cc0c11689db67694486473b730284e5", +"TR_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "4f1c15cef69675ccc0643192309bed8756cad31fc3df7e9d68e9755e4c4cf327", +"TR_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "54a5f0390b5fd510098c943407815364cf54cf2569a84afacb27d04f453fe77f", +"TR_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", +"TR_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "27cd74a3731b0e501cd05a5738a8d78d150217aef3617849f173abe15af1258f", +"TR_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ef1b1197c702b6204d05830e9641ab0a1e9320c0d227ccbfc753086b6f7f3ce4", +"TR_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "db84ca81e494da462c42cdbcaae1342a119b7906ca4fa0dec3b7b6e077547433", +"TR_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ef1b1197c702b6204d05830e9641ab0a1e9320c0d227ccbfc753086b6f7f3ce4", +"TR_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", +"TR_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", +"TR_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "0e004a5b98b1a040ebd22bde35de8dbdfef079571433b7e6342c872c18cd5937", +"TR_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "0e004a5b98b1a040ebd22bde35de8dbdfef079571433b7e6342c872c18cd5937", +"TR_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", +"TR_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", +"TR_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "c64fb3c018b2325dcf374010bc551b0c5d0e4d46e8eb515e66c8846fc3584c05", +"TR_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "a648deef8291d431b9d4e7df9c144c3d9d1e14ce133bd85b9daef20acd6dbc20", +"TR_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "09cc1b1c3bb9a7c07e5cd46b99a46e866200d57339449a6051f08d38f6cf15a2", +"TR_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", +"TR_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", +"TR_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", +"TR_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "8b980005c73c6341727f542e4d35077cf7cc5251d19811bf9691b095cf7f8f15", +"TR_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "693857d0537f73c9a2173863910c31f568eb1b9a22a94159507c83d70f4c5498", +"TR_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "36f0232e47b750a0c36af988339cd2513016c317b0620ea9df90b24db4742474", +"TR_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b31b9ca04fa2cfcbe89930b0f7870c3527ddf89eb2b1838ed45489c5f2252d3c", +"TR_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "8ba1350238c7e6765d842aefe5c591fd90f7455dfb4f43b83c83d707fe100776", +"TR_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "c38af6097694801fdf73cf3f7154ca5bf37ea543418364ff9d7a5aac0fb752c2", +"TR_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "eb6e718ab30bf5327ca9105e5621adc003660f3d97fefc269464addb683a381c", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "76fe8b9b3783ded6c5fb91b536bfd320266386a0116c4565daf7fa51da3ef749", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d44259eafdf1a758284d5035f585cbd339480aeb105f9f25cadc14c80b670adf", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "156021a42336a1e56fa6e3ba6b8d3864990317294a0b0651997c23d07ff5a45e", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "5aea921ce854d21528f613879f652892cd57d9a52a66bd7503d150023d4e5200", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "d03990ae3ca66774abfa5b40a2cb85e27cf843a060c6e929543dd549c51f7539", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "227f7f93122e899bb8a610060c3fcfa80f29bec720081e94cec12aede13173a3", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "76fe8b9b3783ded6c5fb91b536bfd320266386a0116c4565daf7fa51da3ef749", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "dd636dc370183717241289fda7d405b5097f30fd02f7941c71d2e4c1c9268bf3", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "94b584a7fc07c5af5e512b6b86193293d04a5e96f0c7e0cc238c07d1aff1eb52", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "574be4108aa94a633e8a4a875ca7a0de3aad5428f844ce11b051abac48926dfe", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "8881c66cf6f9b77cdf0d0f3ac2281816e04113057df7a726c599041720a0bde2", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "df886046899c96f97f8dd880f3b11345da36ccbc0aa07be7194ecdb0f2b32f64", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8024b02bd732d4b723f643dd1da0d99c8a8de0a63578b8de7babfb05b7d595c2", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "dd636dc370183717241289fda7d405b5097f30fd02f7941c71d2e4c1c9268bf3", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "5ec441ee292a9034c7d859f216050e7af702dcc219ed16e4ca17352ae4784c9b", +"TR_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "5ec441ee292a9034c7d859f216050e7af702dcc219ed16e4ca17352ae4784c9b", +"TR_en_ethereum-test_signtx.py::test_signtx_fee_info": "b4ae728ff71c1e6112abbb0111b85b2760f957b677726b35734e63c318495408", +"TR_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "263993daffe2a77a46a17d5b598aca84de52ba0e051e4cb5de5c524a48192ed3", +"TR_en_misc-test_cosi.py::test_cosi_different_key": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_misc-test_cosi.py::test_cosi_nonce": "df3420ca2395ced6fb2e3e5b984ece9d1a1151d877061681582c8f9404416600", +"TR_en_misc-test_cosi.py::test_cosi_pubkey": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_misc-test_cosi.py::test_cosi_sign1": "df3420ca2395ced6fb2e3e5b984ece9d1a1151d877061681582c8f9404416600", +"TR_en_misc-test_cosi.py::test_cosi_sign2": "381af0c5a649c6adb62c6d75c3a46f1a7b3c31e8559e6dc390a4738aad463997", +"TR_en_misc-test_cosi.py::test_cosi_sign3": "be6f8a2dfb626ca4fdedaa1a0e91bb373fcbeebd8fe7180884b4cc56ae32a7e9", +"TR_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_misc-test_cosi.py::test_invalid_path[m-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_misc-test_cosi.py::test_slip26_paths[42-0]": "ec0787ec28e6643c3f0d3d925960219086378eba88659709cccde3de2cd31fb0", +"TR_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "c7a89aeb54454adc91cc0688f676faf9f1c24e8bcc2d350af3e3c8b70fdf5ced", +"TR_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "d8d14a4d23b4c257d37d34a2932d1d2b940d919c943aa44a8facc4a7053ede83", +"TR_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "cc987dc41cafaeff79e3053882c2a8c41b2a82da149cebe7ed3e3b84fb20d9a4", +"TR_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "bdbf159199dd2849b96c820a699fb49b5177f9755fe820b00cd201f47d94b531", +"TR_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "34cd0ab3d37e4d5cc6e37a24ae3f9746f3deb20ea4fd2bcdecc546ec364cf7ef", +"TR_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "8e4b73c8f813f12f8b52fcf1ef30c0368b22b5f6f58af61298c5326b1ef26913", +"TR_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "aba52e4a06fd36beea0ea5a1b627f8f627b022b0022a06f642138d1617bbd912", +"TR_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "829778a8d2915c226eb3842e9d3535d53dffa17d7b13a1a21646c595588ff535", +"TR_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "fad77d8c159e54dbddc2e488858205a7d7aed115d136177982f1648df49bb0c8", +"TR_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d2d9c32d8cc435f129019f5fe2c376c099ccd3f14e2c81ce2d8fe8397531c574", +"TR_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "1824390cfd045d43a5e38bf5ec881c3f97b8b0a1adff3dbf16416b413d3bca4b", +"TR_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "cffd4985f48bb8c64baede4ce18ae1a69dbd02bca4664ab23a146d5031ffad87", +"TR_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "468ff13a1c14b5a9fed5b58f0f1473448828acb96638045a29c6fed73e140d91", +"TR_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "442f7f4ac90325dc91d1c8283513307737ba6698be78e8fdb05d025fdafd7be0", +"TR_en_misc-test_msg_getentropy.py::test_entropy[128]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[129]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[16]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[17]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[1]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[20]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[21]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[256]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[257]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[32]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[33]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[3]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[4]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[512]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[513]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[5]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[64]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[65]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[8]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_getentropy.py::test_entropy[9]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"TR_en_misc-test_msg_signidentity.py::test_sign": "4ea3ff06287458ae5c08e118e489c0b432316521fbfa47ff587d748761f9c6c2", +"TR_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "b4cb31f200b840788ed20a2dd3716262a4f90871c3ef82bc4c376efe14deaa5f", +"TR_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "57c6ba50b97463b0345f91ebb7150df2e2bad4c3cf4d2665ba113520adc59abc", +"TR_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "d1238437828c2a306e66d1a6996cf86576426c77c7678e1c93746cdaa8b30149", +"TR_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "1f17ac968a8ecec85e30820316567c20ef84cced1368a03990c8cff953304318", +"TR_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3fdbe671be03512f7d0df9f2f71c3f6a317579d8905437a9b1cfca877686e9ff", +"TR_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "63f2b59a565a402738e0a240a0d3405d3581aa2dfac0b51a4e90fb329cc1751c", +"TR_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "e0a4795c4167750f9b3a79ca5c8c5af31857a0aab102d1eb8f7722f6643656b9", +"TR_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e711de3d3c2670ccdf0e05ff59bd3b90f54ef999cec741243eacfca3b1712bf3", +"TR_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "b784e54944ee32942129a8bf04dc9374f8f3af38adf28f66247e10aa5920384b", +"TR_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c77b004677d78eac231cd77ec41dffc99a27f5b98bba7f97dd958c9f362c74ad", +"TR_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"TR_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "a0af5f2b20df62fa796a43be75b8c4aa319bb5679c0199ed7600954e34eb7f37", +"TR_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "8f1a082cc30c058977fb39f8c9f322aca51327a4af6f230c1cec61b4e2c46c3b", +"TR_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", +"TR_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7cee1a2691c5f9cbf923153866333d8eaa5363c057a5089e0dff11451b87cf82", +"TR_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "f3b4c3ce4523db62f18f11724d17b3ef1fee132fe5a0cab063a66ae6a9dfb902", +"TR_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "1c1dc8a6cf5d5fa612fd2e6f36ff77c9f9e0340d7d9dee89de81d7ac5fa35d51", +"TR_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fea9e21348bb74e43a155246806752e9fd9b16ef7d9c27bb3d977c90e4aeb253", +"TR_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "7136c0a858ca1435473b13f244a87724632689a84d1eeafcdf05499a1e6f1a8a", +"TR_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8826420d827c6cb42c7e9be17cff29a02b0f188a6564fba6acf49d5fe7aa3820", +"TR_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "7136c0a858ca1435473b13f244a87724632689a84d1eeafcdf05499a1e6f1a8a", +"TR_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "8826420d827c6cb42c7e9be17cff29a02b0f188a6564fba6acf49d5fe7aa3820", +"TR_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "62804786a08c790627d2ce8dce8911f272a5b52753ed37ba36398d11825f24df", +"TR_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "52f2b80c7129f4d6771a6dfe3aa72ca07616760c9cb4919c12dd3b77b9983d7f", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "99cadd1f78670aaf32b8b8889d8b73e93c0af363e3dc6d5e92671f157804151d", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0d9dfe828dbece8eb26c8fa5e6f79a4e999b5d876418f9bdacf1d3586f23d524", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "e89a47244f34a2b80f00dee6933822e2209b28853195584d9b41d20a8678a15a", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "9c9c1476c787f2731ba2a5c654b41c839a8d292e735f02179dae7f7e6b876670", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "9d95fa9820c341d4d86951e81ebcb33c8e773ffb0882f81375fcfd9d50d7b6a1", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b35baf38ab290bbff0bd95be1dea6ffa3fb8fd692a6be1dcc16565360a6f1bae", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "eea4cca35b9001249ec0587f5e6c5666c853ef3693d21c0f516a6593380a3d45", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "483104da8463945a2000e9809d12bba2a7bc84d6bbffa391297f33abc4b0ec80", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "b03145b70439de3a6d8dc2b36c2093b4b8168a18d9d510e529afae6388759042", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5dc6627c9490db4f6ba3f3fca279407b486d2a154335d716c55b2e9c5cdfd1e6", +"TR_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "759d54aa56acf98e407556b03e610d1ee8b8c53b2dd9daa33928089bea6aae61", +"TR_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "cbc9f644b50db2d65ec635d7022f70285378b6e8e5fdf9ebb24860278373096b", +"TR_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6a31db8785559debab2a71fa23d99bea7d4ea96f2d5697e9d5cc5a36a7859030", +"TR_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7b263b889081f8cebb8a3d744430eef8d719f216de621263939006a18a8556f4", +"TR_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "5e73e48a82d34b315ee346ba731cea73ebe7a0aac3992b8677217f8516728799", +"TR_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "9eb8fcf86274cec7cdf3581d4aab92d403c05d295eb3c06660a6000fe2588114", +"TR_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "0961c86739794860b0dc6536b97088faa3f3703f3e2744fdf457e561c7f21e6e", +"TR_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "a7fe2740ba57d0790479b9fd56d7a0cb6e985a4d3fcd2cc2a8245c13becfa922", +"TR_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "be8181d67dd2aa8e791533a23605dc2b81f365019c2ab5b2089ed81b840d1591", +"TR_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "4975bb1256785c7b188231f6eedeaadd798cd41b884e1a50788670fa79aeca45", +"TR_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9eed365ce77963e7a40edcf9cd36afc5d8401347e94c47c3d0add98e534c45d0", +"TR_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "51f9ebb160fb086ca731efce727104c2d9702c9ff1367b68408f54a3eef68eac", +"TR_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f6303097005c4d03571ec92653a7f76450d2072c98811128e0c29f5a09924087", +"TR_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "da62d9ccdc436759f229ac74523ae5a5ce9dc4bc3aa8bee875426beee8a0d22f", +"TR_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1826c8e9c4ead5db259526a90b4d0e1d1627ec2c46b57bb943e4b6f3d6f7c961", +"TR_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "6be4eaa22a0ebb0872cd0867d07af283d7dca8bce38ed8abc7e5390236dcdd82", +"TR_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "743e1d4596e98980aad93466efa6b20213c5a4d69cab3f48476f7749b3808e57", +"TR_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a1bbafb0d49929c0b62203d655e84f345470051cd02ef1cffc0e2ee704708fc7", +"TR_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "fdfbffcc3a99bcfcc4d2fbe32c2e1b42d53af21910cefdb2a18058c553e8a879", +"TR_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ec047a8e65dea3cc592b9889dec2ae22d3718dbfb9bfe97b6799540c6af0a19a", +"TR_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5ce82905f4a02d3ff8a2c731b8e6ad770d3e3ad29b089e3a490d2868a41ba8c5", +"TR_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8633600c89710653f7a0534abc2f3b276116d754d99c0b6f4fcd32be08e343f5", +"TR_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46f3c94167c31e26ae0dacf3e1f2a408061cc0bc24b030229e495194077f5097", +"TR_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "df45787237e9e838e30287160c03af6b529360c7fcc097c433bba7e0edd569a5", +"TR_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "9b52a92bdf30cea5dfc1bf0e9414bb1eca41a8a63d4b5f37cddac76089456235", +"TR_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "328a7774a1d35b851403b19a9bc592a59a1c61567b9b0624dcf65f9f02f744bd", +"TR_en_ripple-test_get_address.py::test_ripple_get_address_other": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b4baeb9d6662a2f813758455881aabcdb7aea7e5a1372f60e01f5c4097472789", +"TR_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "14b4c7384951ee5a995a6a1ed05d214761a38b0c3d79c839eaee56d0bf518261", +"TR_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "c9ecb1dd7770a1d68e92bbbcf7e146fd787494b36cb06ba1647e43bc24b23ed2", +"TR_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "fcf8d157b2e1deee981b6ddf538b3924ca8753ca8c410c4812815c267853af75", +"TR_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "22c066ca6b9035225ff9154b434f69d8a78d0e7e03e910d9f65965b9a36283bc", +"TR_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "a2f72fbad37e8c90b3f3d337ed43d63aaa3ad273c8dad43f8f35672c3e3588ad", +"TR_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "0c426916a0a9066339fcd4aecfdac95d68080ed4625026a31d32630d8480a5d3", +"TR_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "0c990ee79c73a98cd670c3d5a3601221d320b749b70b138ffe23e9a44589d97e", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "bcc7e4f3a3fdc979ca210b97ea32d2548976801393cf003ec301f464ae570382", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "8da0cc05473dd70fe8413a7d97f06c567f66aeca95ff1529f9006c4ccacc5fc1", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e7e54c08c699cc142201527e698cb661e61e5d23b769dfebfa596d3091b2391c", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "9d66f3814be7d3fe061b266348a4167401fee3d53769d3fca52fd3211b6010e8", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "50ab3143a2509856620a5caa5819aba3d592f4952e4209d86ef73220dd95d269", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "085a92dd3090e97dfb29cd2ef4f4724c455fe88e00a7cbbd5bea961e475bb606", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d1ea989040664e7620d42f43ffcf5c5d8d86ba43d2546684292dd6ece43d5528", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "eac905750226dae074099f4f61600e07bdcf5591e1659fd835558197da20501b", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "f0e2abb8a4309e67e549d8d4c6e64d7a1c7568ef98954c6cf966dc760d989de2", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "1515716eb1798cde23c5588333a0885015bfa5f46fff5d01f3aea7c565d0a3f8", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "6fa579c59a758d0d0c8e5819936cf1e6af6fb202914ebddfb548ddd167fdbbd9", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "57edfed4a650f01c9c6ddf43bd66d6d9710b6bea1a0c73437112edebe3127a84", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "423eea3a9a5b3be39d44901f98dac448c76ac39e0b3b016fd1f57f830e414b69", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "4b375a895fdf50e6f7859d26387aead816866880b6bb98de164a75ddda791d60", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "8c4fb38a0ecb455a77e7fd39d066214d2af50c44b90539b77dde30eeb073ce9e", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "84a9f449c9a1256d916eb1bc15438aa167cd6fba4d98e506cadba978f1ccc46b", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "702c3a3ed528e1f46ee8644b5973284970d09fd81be9e6a3eea7340a115fd7c3", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "451ec930c3a547df2a45b2b5e6e32b3a711b64bd28a9027443a7c5da2aab1bf1", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "84a0a603c236d0c1674378178c0914b8ee5ffa802283255f226a0d3b56f0744f", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "b7f6f3a603e36cdd9d3ffd779a29805ccaebd9020377f295834037fb7e70d355", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "0d806bf8bf76d1537c6be208a988b14bbe3b1e8c805d5422d71640f5ed3418d4", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "0d806bf8bf76d1537c6be208a988b14bbe3b1e8c805d5422d71640f5ed3418d4", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "64554efe85ec3aff4c7e395546ee42ae197de135d473b95acfd1e35e962ea1ea", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "67e35ccb77ed2ac8071869e590393933de177fc7a7236d942fcaef4e446e55ba", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "eef88dd4b2906e14a9d3b021bf23baf44d8a886325ddd57bbb5b695cebd53941", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "d08b58172fd280f05135f012b41c8104e644043b455894f58b217277cbce5f0c", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "5bd7a06e28043893e978ae113ec0602d77854cc58e88da3921a5099e9ce83e5d", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "e17c8d11434566bd80620e839e5e9a403f6a34b2147e59624649f155a006e6b8", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "371ea1d5e2bf562146d6c7534d9c3557539a01c8df34f2a0732bc6d5948cddd4", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "de5d73a8fb3b305fca4c8c58ac53f2e37d83aaa89c46b0b945db89ee08287f8e", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "899752caaad474cd83e5733e91f087f6612968cfca2398e44f7054eff2848d9e", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "68cf2b6281ea452456b0c897e1ce71e49222938a61ee01fe0cf3178382608dfb", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "654dc38b6427e0e14e172527ea75e04c3583eb77c990ce13c2a59469f05e8de7", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "a437cab2755211ab6cfe7311b755e86c264e1d71fbf5ca8feb28c24c90146cb6", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "ec77ee378d1d825d087f255743f0889e1b4b4f31599d8216f1a99b4ee0cf518a", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "ec77ee378d1d825d087f255743f0889e1b4b4f31599d8216f1a99b4ee0cf518a", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "5a34a2fdb94294beac16e0fc6f1ac10f98220ec36c6f6d1a76e72b912e40a748", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "fab1d049c2534fb4698b80abcb9d65498a85692cfbc5584d4b0d680628f8c5d0", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "28aa0fc5820a9b20446e669370c6129c9d86b5701b7a64b89ab098afff042fcf", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "c0f1f7b540a824b01773e381281a881616b78dfd0831cfecf361c9285310f43d", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "dda1d3d5e1a7f19683f87d97f628544bf98d19d71bf9bfc2380acc0851a5a9a2", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "489a9e8bf3faf59137cb4c4ed181020b2e8f4c0e2cb0f9da7c6e499e470ef538", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "60e577d205836955c3a384a0c2167c47686b9b4104b664f7142d1a3ee7169244", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "51087bf66bd536df015238dda5173466d2ebad5eb69d38f7ebab286b0816aba0", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "1efcbb703b9edb470ebe90c53df5f15ff0b4cbbd3bbeb4d2ec6db4f733a65ab8", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "f32e3c1d0d9d42413fe92a93da9e2a31a163a61477136982e9c5ce84d43ad86b", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b075b98674a92a6bc1d7fc9c6f98a9b9339356fedaaf10fb78783089240841ad", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "069c644b49eba20eb8595461cfe4d484d2aa33a3895da54b1c76f226f120ac06", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "20646fc414445b55171e772180ce653aaced7f01334b598b6e40eacc7e999a21", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "63a76bf8aa15984b1e895f1489bdf1fc1e60f8ecc781698ef7a4bfaac168f131", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "1f6a75e3d9213b08ed0972e978e58c9baa14859d1e5b8ebd97ddac3e71076d5f", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "8a3ba58408acc32be072fa057282b6fdfe2e7ed22aceade38b83b414030306b8", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "c52d071c1a94d85a352a2a44ffc6a941d8ed43bf0c92b198c57a8c01b523082d", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "8a148294707be782b73cb7cfa57a2f7efdb75687e7ad8431d0b2e3fce9a9ec1f", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "a1236a7da0932d4682148deaade49952d50cc21b7f9a1793ac7c43e1f6ca7edf", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "69f24f090ab42f1ec97f4771d96381b72ed399cc010756471d2ab5bcbf3f821b", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "2ec9f373935ea87255162491e82ad4e4d86ccd482957423fc477c2740dae2e33", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "62b0368aeff77ce839649cf1ef9157d6978cea1963ef647c87b8d29bad4f62ee", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "dee1b3d342d279573d557d5737cdb8899ded0b0a1e6296f1c7871999c4d065ba", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "e652826dcc36750a55be26120da9bebbc09634c9607864140508c7d1613cdb14", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "ea2fd2377008542b18e20752992574184fbcfc28b434de5d0a69703323c7f6f0", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "6f515941425592f310418568eaeee1b21cf61f33eeb523da0725f6c3e1015ce4", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "827210bd1787236c31b0acdac620b87c066bab0b36659e3e163dafdf694a1ef9", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "f790a421c467bb1de98d842c9d292d25b81a1ada6695f40a8571d5fda4b1b23d", +"TR_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "d3b410e94d90f18195f32c09e98308cf4905e03e1070d2b524da7e1cea5153fc", +"TR_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "525c3dc0530220043088724517981cc71932753a6eb3a84e420e007a8a2a12fa", +"TR_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "39f52231954401d77a679d00cc9e087fc773ffdcc09a2e346077eb8658fc2f00", +"TR_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "41756d94190e4022ce3d7bd9fe3975f7cc63cf809d2e73c7a210121041fede9c", +"TR_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "ef5a02abcb966e4a1f1f4b54b9540053ba9ec3a9d4ead01fcfa800e8c62f3931", +"TR_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "94242a939cf5a6d0a3b2f9eb9c8e5253314f061d488d777bb334727416ec5da9", +"TR_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "0c43d440d5bedb093138fc8883c0883d65c955ebb17f14f06895b14afcc7415a", +"TR_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "cce2953e654ed94aeac603ca1bbc2dae40012f537d50298178b704fbec292795", +"TR_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "6c60d3f003f9a7203b8d219b618dc3ec4a2b94d9bf3662028734e30376244799", +"TR_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "12726f0c084791d92f195bbcec3761dfe19fac3dfb1cdff9ffd1f2b89df5feaf", +"TR_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "914fb776985eb4ba398b27087ca33b894c5971d98323cc3460b3987d3e0cc40b", +"TR_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "3c93204d2d46d8b056a975e314522f790b16aaf60293becdeb80221fa344c85e", +"TR_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "34b0a87b00da5d82441d741102952dd032e30a528248cb9aae34e172dbf8b633", +"TR_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a21c025e4f654d74842ea9a683ebff8dc559160a635a9d035a0ade6a4f7a4d33", +"TR_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f294ce3bd568077c319571d1c46b6aa568bfbace5b034efb5a69ba89e25a47c8", +"TR_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3d8732b3370eac774a32025e94230c7a15ae269bc329c7530c61350691165887", +"TR_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "f3f1a365442b60ae6d7b77779884ce9ed638617dc2322d69e2ae02bd5a691704", +"TR_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a2cd2ea0c9f73e6569c01f390bb2f2b836fe7bbd4da00372f89587d9ba6e5a81", +"TR_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "4f7df86bff1b036ecf0d8f087b855d37f17b143353740f041ec660495a4bad45", +"TR_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "aa6fcb823d51bc75fdb175a7529f861b499c7f455e72657fa7c1283037ce6406", +"TR_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "3922d9cb650ce64e2ead7720d1217e98755b1a742d505fb6da9afe531f38ea46", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "00419212c5cb1b9c31dcacec46fb472be08019fa82baa6a978942a478c8b5cd0", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "72c6d04563f1d7a6f840c2cdded67f94e50405b1603144e364a66e56812f1f6b", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "09fe7367d16b35311fcfcb070c3b76bdef3c8a7fb85713af9f64ee908498ea0c", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "ce42cc79760f9d8f07ba2a70841a86272f51d99811b40187182b31a23c4b07d7", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "5e3c7fa84f906cd97ceccd40166f24017352488c3d71d3a784fc025423b002c5", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a1aac4f91cacca5ec354eaf40f0fa524683135c7412b586e6c4ed4e22f53bd93", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "c69daca444b493b23dd9b9682a03e5b9f993a7d2276c2285f61629231b43bf15", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "89d398b2bc331f1bfeb85386dfbe020cc61a1c906ae196e73d73de2838839fe3", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d6877955f02711d8da08d8f3de6f85079c0740b88fdd525d93cba00e50912a11", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "bc268b30439540da1f037ea83f438c18b7db766729f9fbb5c590257da8efbb46", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "83ebc1a4e3922f720cf422ca6e7c3749bf203e151d463b803f26d3554f0b29bf", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "9776a07190c35e202da74c5a661068550b58325dc7779b51a9e9434f03417310", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "17a890bcf0742d462b8634673833a6658b1b873bd4d242eab6a2cb08f6116f41", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "00aa221b9a976c7f4859c61ed5fa58ecd4afd770e56deefc9a8a5ae1dbc98770", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "6089998b3e02e6461a14163b6aa61adee5e6551c6e7e2ecd3989fd1587a63d50", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "70462417b0e6f5de235b78a4f50f9283f5824160f7db397832019ae8aaa4731d", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "95b61e5185139d5ee5a0f652f390e0c2a605921f1e14e33fad21c0b1915aee69", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "abaf8235cab797a27eb25ffa0abb21ef8bc7dccc7770561cfd12e7b5441489de", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0f0af9968dc57c90d8cfed3c6278b89b5dbddf67724d3756696fc702ae8dbff7", +"TR_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "633dd1e8b2b694e6a237c3ba2f17f5e48b43d46b9daf5cb421a4434fc5fad468", +"TR_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "93c0f0fb8f009d53ca3291158581e4afd8438e4fe5bbe130a18819ff88c181e1", +"TR_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "2f05323dd62a5afafefcf444bc78b80cf62f999babdd12c12582b8d2f60e4fba", +"TR_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "f7b3554efdbbf476956608cdb2b149757f3f87d05a8076857feba132c54de662", +"TR_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "903ef9c3ff8fb09a9f10be1eefd55ae74a250d2101344b01040ebb32c392512c", +"TR_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "5284ca685a720a8d5cf7fea05924057571a657a97696541f984016cf75139ccc", +"TR_en_stellar-test_stellar.py::test_sign_tx[source_account]": "a4b0d9a35cf8abdd278b47cc26ad90ee5ffaad067f1845f6911411c5888acd61", +"TR_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "f871bd95a6cae6ba83acc351e2bc23c0d32bddb1a46702456500e956371a10b3", +"TR_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "09d4e09b215153b3da47dd8c4c54a42cc8beae6e2f469717005ed2d63a59ab76", +"TR_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "48a6baba52ec2e50051c7c9c9d7d153f5c747d3c41c4b5b2eec5257238ab84bc", +"TR_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "95b61e5185139d5ee5a0f652f390e0c2a605921f1e14e33fad21c0b1915aee69", +"TR_en_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", +"TR_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", +"TR_en_test_authenticate_device.py::test_authenticate_device[]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", +"TR_en_test_authenticate_device.py::test_authenticate_device[hello world]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", +"TR_en_test_autolock.py::test_apply_auto_lock_delay": "56e15781b06dd59696c03817efe7f8716c95d8b65fc0d3b0be3281a0901e6f72", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ef2f9b8c04ff989954c46942460c32e32125b7475c35e16fee2c15c121205a0f", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "6d1ef42b15d88fb84c17b9b6830ee39eba964dd31978022c3dc0179bc04b2f45", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "94946c6e986f351aed3af94ccc67166e08906ca4fe0f37ddb43305e3e945198c", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "43009515b95e657ce19bcfc2699f6dac50fe18caa58e91eb8445a5e2d9d7053f", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "bf6116bcf72754cbb490330b4d629121b6c271c275133fdb5137630db2460978", +"TR_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "14fc494814c65309be6a64d0c954758e3e4b459054b46025e4917a259e6f34e5", +"TR_en_test_autolock.py::test_autolock_cancels_ui": "1ee27abecb32d42ef8f9a3601a603e787eef338c49702f8c5e5bc30d4807800e", +"TR_en_test_autolock.py::test_autolock_default_value": "d810436f4404563b1a3dda410cbda2f42969ef6bc746b85fefc6fce2fe835369", +"TR_en_test_autolock.py::test_autolock_ignores_getaddress": "c5e41fe24ab50d93b40d5ce91a2b4232cef22046ea0d6c0e01603b01a333ada6", +"TR_en_test_autolock.py::test_autolock_ignores_initialize": "c5e41fe24ab50d93b40d5ce91a2b4232cef22046ea0d6c0e01603b01a333ada6", +"TR_en_test_basic.py::test_device_id_different": "0abb37c5dd2cc89e22f3952cfec9191413873c9c291df8c8a43a7c89f23b5fd5", +"TR_en_test_basic.py::test_device_id_same": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_basic.py::test_features": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_basic.py::test_ping": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_busy_state.py::test_busy_expiry": "0cff54da20c3c70d5b5de75a45fc265b29683fe322ad498f947656118691eeca", +"TR_en_test_busy_state.py::test_busy_state": "7bdbfa392d76bcf551685c356042ffe4463538e61e194c1381ad0eb70ef0112b", +"TR_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", +"TR_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", +"TR_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", +"TR_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", +"TR_en_test_cancel.py::test_cancel_on_paginated": "79f025ebfbdc5a81dae1385b17d2d802280063479c8480fa5281734fe1542385", +"TR_en_test_debuglink.py::test_softlock_instability": "cff029b728b242ec07f405a0fcd12a77212f0a28e9ec14f1b9e2db1b63293783", +"TR_en_test_firmware_hash.py::test_firmware_hash_emu": "a5099e7016da59ba2a1efac6a060711383f199d674c8357146738c42b79be6ff", +"TR_en_test_firmware_hash.py::test_firmware_hash_hw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_language.py::test_change_language_errors": "0cb01b8002472dff316d6eb3ba901dffb762d88fdf61e5ef8642ca7772d3e71c", +"TR_en_test_language.py::test_full_language_change[cs]": "ba3669f5c7043e8021d84589d5c173eb1d3f6b2402f1e31525ce832094ca1e20", +"TR_en_test_language.py::test_full_language_change[de]": "1e4c899a324230cec67dfaf7d3c5dc6cd66385bc8e8e68c6aaf6753015928fba", +"TR_en_test_language.py::test_full_language_change[en]": "a9c383b584d24c5aa9623b7955fe3e45dcf6016dbc0327a7ce9176ecb0e4d5d3", +"TR_en_test_language.py::test_full_language_change[es]": "561f5c933f7de6f9aeec469cc511070fc669824407bce86635a87bc14f1ac3e1", +"TR_en_test_language.py::test_full_language_change[fr]": "4225a967071de062824fbb6e0b503937a6af9a0e3d69d39c42929f63a10c85b0", +"TR_en_test_language.py::test_language_is_removed_after_wipe": "5363564a612486602f3e6c94cb5d18ef82c2253dfe51df4623d56b5bab920a2e", +"TR_en_test_language.py::test_translations_renders_on_screen": "baf3b0e15c9ccced6ce4d4fb4d026d61cee7d7e557434aa6dbfbc78d1dd54420", +"TR_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "fc78876e183a82d8099263e5b3858620f65f7842f7d31f4679dddcb045f1dfb2", +"TR_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "57dc2b38db364a7ba43566c700ab27a3e98a08e64efc564db53b61aa6f4098aa", +"TR_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "5f2cecf0c5bf0e7c8743a3a9f241149abf4a09431d21b801c6989c171208aa6e", +"TR_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", +"TR_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", +"TR_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", +"TR_en_test_msg_applysettings.py::test_apply_settings": "e84453642c927b2fe15325a109672814103f2f94d7b5d70a313d921f21b88a37", +"TR_en_test_msg_applysettings.py::test_apply_settings_passphrase": "5775d63130fa4646263cd26d47bebc87691344dafd9e849c9fa361a1ea7f7e6b", +"TR_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "caf5f9733414c8edd4f13800250d7d3d0d3a4012844b826ed314db5c608508eb", +"TR_en_test_msg_applysettings.py::test_apply_settings_rotation": "28c4463b15fdd9d455f2bd6f229fd22432bfe9ba48606602e2ff637b1bc7a6bf", +"TR_en_test_msg_applysettings.py::test_experimental_features": "0ac7ff5ebcc73c8922545b14e8584d13199ea0c5d0712189b16e24ded22e3c17", +"TR_en_test_msg_applysettings.py::test_label_too_long": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_msg_applysettings.py::test_safety_checks": "a34a867f1d58b2a29c5d1724378f269ce699b380fd2206cc8cc4c06bcb76565d", +"TR_en_test_msg_backup_device.py::test_backup_bip39": "d8778ebc414b075141007dd18f9ecf652338947187bb2f9770101ccbfa56e233", +"TR_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", +"TR_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "2292ff8faec75a418fcee48235a2333843fe1458b4e3ec0af673b5153574152b", +"TR_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", +"TR_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "fb35ceaf56b93785eb465f5f6b195a4db7fcb0db1cc6e4be32691f5a1a096828", +"TR_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", +"TR_en_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", +"TR_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"TR_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ea276d47a239b8389071eeed9fc51e962340f808ef642343fb30db48c8ff699d", +"TR_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3c12cf8b0abe61410de9eb830b922c2ef6154d3cc67a08c9b30f7f861d25293a", +"TR_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d9304c9e8f08c28b5d34e4e3575850febe0b6540e526a4a6056a6af16f5c9ec8", +"TR_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "d8c9b5e0276545c008069e4acd6118e7dbf6ad4a00aeef77c0cc4bf794c2c63e", +"TR_en_test_msg_changepin_t2.py::test_change_failed": "ace510751a5c91022e21e3e088013ff4260dfb1c25732fac80cdc88345d0cdd2", +"TR_en_test_msg_changepin_t2.py::test_change_invalid_current": "c8a5fdc1a70727a9992d07f44d6dbdd9886ccddd99b3a50b41eb75a7e2c2647c", +"TR_en_test_msg_changepin_t2.py::test_change_pin": "a218c9db7f5567458053cf075cef32d3afaec724111c3ba9f23d53b468d4b0a2", +"TR_en_test_msg_changepin_t2.py::test_remove_pin": "9e69d8a6e72383d4b48af12340790bef5e55ed77821f80c7ac959522885097a8", +"TR_en_test_msg_changepin_t2.py::test_set_failed": "36a5cde2473ea82c5031826ea4c4971043850332ab9eca1020e1ea068e97e3f3", +"TR_en_test_msg_changepin_t2.py::test_set_pin": "762965944766f817ededfa4eb23166542ce71412a4d5c817a7bd0c65b974d3be", +"TR_en_test_msg_loaddevice.py::test_load_device_1": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", +"TR_en_test_msg_loaddevice.py::test_load_device_2": "caf04f8db960bf67885209f02f53bb79d5687aabbd63c1d437daeebf47ccea40", +"TR_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", +"TR_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", +"TR_en_test_msg_loaddevice.py::test_load_device_utf": "c125e969faf756918c52c2452495b8cbc024d84484c40352dab4a47774a9de40", +"TR_en_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"TR_en_test_msg_wipedevice.py::test_autolock_not_retained": "d5b209e9a37b43744388a798a3c1ada135398727b8cdf91bccf074209fc3dda4", +"TR_en_test_msg_wipedevice.py::test_wipe_device": "0abb37c5dd2cc89e22f3952cfec9191413873c9c291df8c8a43a7c89f23b5fd5", +"TR_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0c1d2e8f1e4b43ee5071cf1d6e31c134297ba8315f1f4568765875438e7720f5", +"TR_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0c1d2e8f1e4b43ee5071cf1d6e31c134297ba8315f1f4568765875438e7720f5", +"TR_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ed4af0c4901c1f682a4ab2f7f741721265a0829d6eac91b3696f6c2c58eb8b0d", +"TR_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ed4af0c4901c1f682a4ab2f7f741721265a0829d6eac91b3696f6c2c58eb8b0d", +"TR_en_test_pin.py::test_correct_pin": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", +"TR_en_test_pin.py::test_exponential_backoff_t2": "3785284a7044f46b47123c8867801b989a81ea1d7fccbd2186c944f9049473d8", +"TR_en_test_pin.py::test_incorrect_pin_t2": "e0c34c861c8f1d9a1a4cbc0bd8c96d3ee05183631bb7b5161450bb90cb0e4416", +"TR_en_test_pin.py::test_no_protection": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_protection_levels.py::test_apply_settings": "5ef2a8b4abd91ffa462afeba9aaff358b280dbcdc2f9486505dfdefa159cc630", +"TR_en_test_protection_levels.py::test_change_pin_t2": "eb1e880c4ef5318605679e049636ec2999acd0f0bc6c8312ba9546e40c174ffd", +"TR_en_test_protection_levels.py::test_get_address": "5cec735f5e5577477fcf06968c197d9e3df43d2d2071bd6fc73822d28245f4dd", +"TR_en_test_protection_levels.py::test_get_entropy": "cdc3b72ac640e0e9307ef5c21a7c2df7f0e5906b6ff714e4e639c6c44802b0b7", +"TR_en_test_protection_levels.py::test_get_public_key": "5cec735f5e5577477fcf06968c197d9e3df43d2d2071bd6fc73822d28245f4dd", +"TR_en_test_protection_levels.py::test_initialize": "d22db62a01a9522abe132e6e4c1b69d62b7e74e7d558ad103776a36b71b02b6a", +"TR_en_test_protection_levels.py::test_passphrase_cached": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", +"TR_en_test_protection_levels.py::test_passphrase_reporting[False]": "c5a8172367cd2a97f9b446512c4349bc2e2e275eadc055114c3c9c2c0cc74055", +"TR_en_test_protection_levels.py::test_passphrase_reporting[True]": "ddf4eaf9c9d1d341cd484658135750b684ed31a7d77a5f4e6972fa8553bd0a29", +"TR_en_test_protection_levels.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"TR_en_test_protection_levels.py::test_sign_message": "3bfb26e19709830584f27aa1b1f114e7bf41cf15ca57a4ec9bfa618fcba80ad0", +"TR_en_test_protection_levels.py::test_signtx": "e8f34f91bacd50ffc4c446e5e381c06c18b2a376c2ca9a99c77dc637e806a90e", +"TR_en_test_protection_levels.py::test_unlocked": "e76b12522fd28fc08af0135271615d63a13a0ba9f013ebd1afe20ef72abe0803", +"TR_en_test_protection_levels.py::test_verify_message_t2": "5f04a88b0acc2daa3e87c02074a64969aeb34157006adbf15a3655e94f838bdf", +"TR_en_test_protection_levels.py::test_wipe_device": "bc06c63c7f5b9e7f0ada0d3d342125905b4fc463fb0eb2ba363b300909dedb9c", +"TR_en_test_session.py::test_cannot_resume_ended_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_session.py::test_clear_session": "c4ec976d3a6d21237c46f4bae10a16d792cda271feae0530cbe570b91fd81a49", +"TR_en_test_session.py::test_derive_cardano_empty_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_session.py::test_derive_cardano_running_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_session.py::test_end_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_session.py::test_end_session_only_current": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_session.py::test_session_recycling": "ed4af0c4901c1f682a4ab2f7f741721265a0829d6eac91b3696f6c2c58eb8b0d", +"TR_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "909cdb9d1b284fe0a1a0f4c0cc5ba25c0ede8ff77caf7a820b5b00f606299264", +"TR_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "eaf5aeeabb4bec1846ff03e81ef95fc9cd12f949fa7c5ff4be4ffe1dcffb7416", +"TR_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "1e7dcbd0569b57c17d3f177ae48642bc262a581246ef0db9aea1354ad3b48a67", +"TR_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "de4cd16001555d8cb75a00f1d1e3f78a0c7613bf5ccc3bdde28f9780a3c0c6d8", +"TR_en_test_session_id_and_passphrase.py::test_multiple_sessions": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"TR_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "ac3be5842712eb2d53b443d6b1d5a1189e481f94ba124e04ca75c61ad199473d", +"TR_en_test_session_id_and_passphrase.py::test_passphrase_length": "221e1db4c2a92b5b7fa232c0bd2ecec16365d83b544b22cc47526e59a0d9321f", +"TR_en_test_session_id_and_passphrase.py::test_passphrase_missing": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", +"TR_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "033d6c8d27b79461137aa78d9a89acea049f52539bc0d898243e392514e36ff2", +"TR_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "69281f35174e284b0aa08b107bc7be6dfa13dfd7d315b6d15c8fb2677af0c731", +"TR_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "94d8f4f0b384923e5e2e54ab0aa86d064872915061bda987c8bd042ebe80f5ad", +"TR_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "718364f43811e6e8366675fb29661438a924f5bd59a51a7c253a2297f902ce29", +"TR_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9208f4ca66bc8a7be9ce0f7661cab2d6f102500a0fe5214f6c2042a452b45299", +"TR_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "53928e3a3f32d480e096b063c6700636fa6612421dc3b9708db25e4b4c7f136c", +"TR_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "30a75b8ca64781e76af502045a34c2b08a8bbb96509b6de2991ea6b88faa1dad", +"TR_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "bb6277c10508c66434b78c00900f69241924a8af5363416003edc338b3588ed7", +"TR_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "6d6707c052afa001dd326f7c2a75f8fdf1a792e79dc3dde0ecd22feff60b6794", +"TR_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "9118737aaebe86980f3f318413b2b4f8c9321b1ac157579dd2ac8b7622fefb07", +"TR_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "a7e4e8c2224855e3da7a46260e7881e67745215d44a0b5d26e791156c53871b7", +"TR_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "801b375b822b625a9da05c6ea900895503f580009258583ac3ca7246ac10825c", +"TR_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "3206320e637f68a3a43859df8976c52fb8a1011f9e8b0b673486655ad43ab8a3", +"TR_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "6f59a5800116f1cfb0bb3092d3a17c83dd15bb4046ef2ed0e1c5043e7c4d58f7", +"TR_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "6e0b5320536f399ee0e49307924453de1ac7592e7643a63e0bc70f5474bd6630", +"TR_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "2d4ca4d5951086bffa7d6ee400529da8a463483d01067f42731a3c6b0d838377", +"TR_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "7fe4eae75a497f6f58f6f6fd9c157d2446ef0b2e75414aa3d50dfe70092bd7fc", +"TR_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "3dccc92989c6a6bbc5a408d07cecba4093613b800a2d2e0c08ddcef549ec6f1f", +"TR_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "457f062e77fff8d87bd37c77ddbc719b2847cb1bef46799428966b64eb074ed9", +"TR_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "dcd41121e57fbb1386580b09b33f3e5ad9934aaa741061b5f7cb832cbee2c782", +"TR_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e8be8e0c3a7b9e565ebeaec54199fe8475a7b1ffe9dec22d001ccfb9ec4927ec", +"TR_en_webauthn-test_msg_webauthn.py::test_add_remove": "d8385fdba14ee5d71f75145ccd6574a736d2e3c3915acd15597cc40618b14c94", +"TR_en_webauthn-test_u2f_counter.py::test_u2f_counter": "097bbc8fb0ed96383c110ee6430e1d168d837ec110ba04d29179bb0789cdc3d6", +"TR_en_zcash-test_sign_tx.py::test_external_presigned": "234d3d65084105e95d632c69bd0e8624988cb98479f02da591104911877f01f7", +"TR_en_zcash-test_sign_tx.py::test_one_two": "f99b201fb591f2a94c4aeac0f41c509a78b09d6113833d995e312ff7e0953e2f", +"TR_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"TR_en_zcash-test_sign_tx.py::test_send_to_multisig": "0a786b0abad93ef3cf66bdc60384134414e83aecf0bdf960c49a79fe8fbcbdb7", +"TR_en_zcash-test_sign_tx.py::test_spend_multisig": "f85e7c0dbe7919db2c8a599ba17cc2c94f90a29fb259546089fc08494cdd894b", +"TR_en_zcash-test_sign_tx.py::test_spend_v4_input": "eda208bcbe9c956ddab927e5189ae25d79a92f6c30cd1b13f281341f2333d18b", +"TR_en_zcash-test_sign_tx.py::test_spend_v5_input": "e8ebe34d69bb1870a8fadf3ed0fee90c228ede047b99b91c02331e79ec80d7eb", +"TR_en_zcash-test_sign_tx.py::test_unified_address": "704e29c0e444f569843ae894614af7f774580d5fd23fc8e0eaadec4cf71c794a", +"TR_en_zcash-test_sign_tx.py::test_version_group_id_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"TR_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "eae61b776a9576ceaf63e8a1d50ff9b8800fa343a32817a43581feb1c6f96f37", +"TR_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "3a5bd2dc1f7256dbad5865cd6ace5901fd63335e557322a84eda96d1b42e7862", +"TR_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "c45c447f1ff5aee4b10dedddd80265b5b8e83d4bd7d887f8a5106e4f28fac5fd", +"TR_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "6d9913614bdb711a10412164ccdf2f882a158019f5191769fa67c575fa527744", +"TR_es_binance-test_get_public_key.py::test_binance_get_public_key": "dff409ebc07c966bfbdd3f0eaaaff79d8e1a1e0aba280aaaab61916afe21d859", +"TR_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "0abf1541e80b2651ae25bdc8a6de0be44a7230137e7760b7f66cd717706b8b05", +"TR_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "bf355eaf098f89afe3898ad76fdcdd4e1ef2ac17e6cd968396fa2a866c6cdd93", +"TR_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "39ee15fb90c6dea458b5fa971a917c48179dcc740c67f7626c73d81f3be23380", +"TR_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "0abf1541e80b2651ae25bdc8a6de0be44a7230137e7760b7f66cd717706b8b05", +"TR_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "bf355eaf098f89afe3898ad76fdcdd4e1ef2ac17e6cd968396fa2a866c6cdd93", +"TR_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "39ee15fb90c6dea458b5fa971a917c48179dcc740c67f7626c73d81f3be23380", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "3949d07eb42aded1664ff67f9d8c502b89c891473c0e32e352c9c20983c0ef0d", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "cf4acb7609a798995e11c000958cce612def021b28432d56cc148da09d069053", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "fce796742f8bdb5d18d9189395a558dcd41a89e8e4e0cf9b425894afc085a7a2", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "c671e605b1c1ea06585dcd9b0e8229c12e33ea81cf8e388a9a4bd7b7ee8b0710", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "56fdc8537bf23a26d0546cfb19fcd668bd45fc5664a0de52d10d07ef4c3799fd", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "56fdc8537bf23a26d0546cfb19fcd668bd45fc5664a0de52d10d07ef4c3799fd", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1156ad8bcffc5cf1566fc5d85341250b331112c404fa0d320f7c94e61aa90e9f", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "462e83df7f4883fd805983600229b27950df85d5908ca0f3cf99b865e2b70269", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a00e07d98568f51a1955e2b2f856af47e924216e46d325c71451647d46cf63f9", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "ca1b154dd54e188561f8c4c42777408bccdcd155a66442da898e5283e5923f14", +"TR_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "ca1b154dd54e188561f8c4c42777408bccdcd155a66442da898e5283e5923f14", +"TR_es_bitcoin-test_bcash.py::test_attack_change_input": "617fca288028cb647488254955a9d21b005f43e95800e613b7825a26ed90440d", +"TR_es_bitcoin-test_bcash.py::test_send_bch_change": "eddc24963a281ff0da0d0185b7719080eacec409a5681998609b4b05d5280ecf", +"TR_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "8de5405219f51ba280b4a9c0a80e1fa503d8ddceb89eb7842eaccbacd23a2577", +"TR_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "ccfc612c655edb82ae5164dc52df9c3fad428185af8f929c413b5ee6a008cbed", +"TR_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "c11a9a5d9a2fe777d360269df603ee535172b48f5f602383389648aaa66e8d92", +"TR_es_bitcoin-test_bcash.py::test_send_bch_nochange": "919365e7de219e2fc37045a536ea8229782889bc17569e0427d029dbcea7be50", +"TR_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "9ea6114d8cec8a47bff88b3e48a4d579924cdc6c9cf215f07580b49c1d3d13c2", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "150fabfc7038e6035538494b8715f4ea78e6cf7ffd9565aa63becb078be3ff8b", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7320b97b7cd125f4064ae6a86a74792564d3727d4b1d93a7277cb8e6f353ccfa", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "79c799ec119ba36b3d2104037a544fb01ddf5ee13f7f380c7006b31c7a5ee760", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "ae426eab988d026568cc5b377d1f37d0b24365faef7696114428a0ef318f4843", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "c1cec9d5f07e7af59b42c74b8d409bf301aa873e9314589aec8f7bf41a393f5a", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "dff314e97a64270c846f10315aad18dbe00535a73d4a1b6e69e060ca43e755e9", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "76fd8df14b4046264938b92e974947097e0367c61160a4822825c09ca53766dc", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "c9d731d944b026460d1219bd95783223a4eb0c944b3634674c2662bbb84c26d3", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "dd7c23d5eb0bc33ca1c02ddec3c7bdf682053dd60c284c54dd92acb6387505ae", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "85dc11a945f6ad2d9ff8afb7e030499916e672f7b4c92bc87e3853381b63b31c", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "cfcf55e3584863d815f54e3301a8974ead77cb4a35f090fc2094e22697323564", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "1d1bd0d7222170341782096c561984e627469dc816ff4e72d023a06f8cae6a12", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "c4a23df1aa6dfbd38fc7ec2cba76fc3b6a90497dd897423efd97ef70be02d752", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "d3201ee737a9549d2bf5654e53708bc3286586e74b8738b75569d6f6424c0373", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "319d50a89b889f7aaab01c20b3d8d043c8dea14e7469d46af6b560324ff1808f", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6ae742336cca5d0cac279c57e28e4794ddd648db6dbfedda88ccd8d12ebb2c8a", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "e9b933a356644a91b11c0675983cf0f2034d5d842e6fe2efcc072bb9b3601464", +"TR_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "addd27321248f4fe58497fae91b8b2554f9865f3c963400b552cd64d04c689a8", +"TR_es_bitcoin-test_firo.py::test_spend_lelantus": "a716883de0873a091dd3f2dbe301436e85dd46a9ba37135c2b83a714c229356b", +"TR_es_bitcoin-test_fujicoin.py::test_send_p2tr": "9498bbdbb0a471de1e64499f807bb07e7314442a5cbf02386f6a45209b46e451", +"TR_es_bitcoin-test_getaddress.py::test_address_mac": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_bch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_bch_multisig": "448d857f14abf914ed2172d02ff22b790ea95671565cf15f37eabe89d9c48ef2", +"TR_es_bitcoin-test_getaddress.py::test_btc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_crw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_elements": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_grs": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_invalid_path": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_ltc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_multisig": "09f7b7d71374d64990c07c9736886a2c70ee5d1ded49f1473d1348ca0cd57707", +"TR_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "2d9ce115d2b6d9b7087a98640ccc72432cac1aa7d5c046fca7f13ef9300b363a", +"TR_es_bitcoin-test_getaddress.py::test_public_ckd": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_tbtc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_tgrs": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress.py::test_unknown_path": "5658ed25dd9f103278ba14651b433a5a01b2fa2374e36d7fc88ca632a90a77df", +"TR_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "6e8b4a36e4082ce737436dbfe1cb1662df49c9258e24e256659260de45d1e194", +"TR_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "c8863d2f959831cf9fead6f4be1fff6479d84794c9720c793adad4de5e312730", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "f8ab63041925239e0cc2bc9e09fd0d067b413d9a6ac1c8ab1872f2855d2cbdf1", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "96a9490207c5ad2429ad6dd24596afacad6a9ca01a3365ff2e06aec8fbb4ecfb", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "b51a6d7d208c61ae34fa999aa5ff3cb44edaf4ae58b9949929cfdfa129b3efb3", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "a8a51c36c311fcee7620c8d7fd1f506285648c3f64e24b2b8536e3bdda89f9ac", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "81f54916166073deb69a3f5bce2df13d28ef71d5b1d09307d8b79782bee98457", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "14dc12a92ceeca82319d97a2a691444a9240e11c156ba157057544d40a8fac16", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "121ffeefd079483e0542d76d8a598d5780f6ae175d05657441ba5fa762f1d9ae", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "ce9b39a3d6e8f70654a2448e900939825194e39e1614f1032e4f1fbd06764f44", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "d96571276e205cf9ba36f3bc78a01ed7866403e1f075ce2af70a37a9e17fb1b2", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "9b4333e2ddd14b0be12739c9f5817f2f65c643430fb318d8423c5d1ffc25ac86", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "e53ecbf48e9312264f75b442f8e045c5506710c062c36c421c06cdeab3409a70", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "46ff5d55544029034ed0541bcde3a29ff96aeaac8c8861077968c71fc6852fb1", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "74caf78d6ecee8899f895358f930a8701086177fb45897150cdb23d4c2146422", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "d48b55d4228254af1a0ce14543b211f22e365bbc6f5622aa7221badb024ea1a0", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "ba8659777713d6190c0eb256d00bc8e74347fbb6938bbc7790500a7c56247c0e", +"TR_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "8c44704886063107354a9166ccf3538270ae3e57f14d4d1d2765bb94ce66b8ec", +"TR_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "6a7f00fce84191ed13b46ad6a4f5a0d4bc6b8794a5044e48de2b0d85b70034b4", +"TR_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "274fb0b1a674c0d9a129d3d14c08ca87e12961fac52d69c6c43c1a029dde8cc5", +"TR_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "e7b7321ac8ffb80368681d3ff78799bef31d028cd0f8ed495aba0064aa803c7f", +"TR_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "838f5d459bf295a603d439a8920011bbe47b607b3fcfd04dbf7003d3b2dba611", +"TR_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "94cd50bcb402e905f11b931a250ca1384ff30aaa2e366920fd942d81faad24ba", +"TR_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "d4fa57d5bb89db2a816d73aa25e8ec1fbd11bf721dc28be624299511a5f3395a", +"TR_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "d4fa57d5bb89db2a816d73aa25e8ec1fbd11bf721dc28be624299511a5f3395a", +"TR_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "6136eac55a9d31294f09c29952ac8999aa0f67a15aeea8659257a900d910f6ca", +"TR_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "35703040fd5d0c1814aa8460d5289f1877a9ab9121ef2b71d360daf73b39c7b7", +"TR_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "24ffc50e3ba6f804798c871a3d51d3bcfd6ba193d5f8ddd5bfd4a24d9c022207", +"TR_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "93aa4df3253514e02a7b50d2206864cc8ef1e2480650336e45704f6326dea6ee", +"TR_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "e49d1576cadbf4b6bae84d58563c7ce5f04ae9d2707259ada682a56f1a87a53c", +"TR_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "2a1a516588cd915155638d1fa80443d1143d958efce36dacd864e7e4fe3819b9", +"TR_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "4e34f4c1bd33ceb42821c6cc875ffc27818e639a3392833e49a0ed0f4789f7b8", +"TR_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "37233b0ecd41f14475b64a4b52bd2e7e2b71cf69842f31efa091b43c35c120d8", +"TR_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "864ab967ab1d4e8b287bf6d6feee0a1f9fa4c99a4f3067e4534536e9e5576206", +"TR_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "17d8efa9c54f51628af64b30253d8761394193274157726ffdc7f1680d0f1df5", +"TR_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "7de12ff97844578531de630b82426fe9808f1a642287abb142e3e355db87c0b2", +"TR_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "eb3541822ba156973bd7777e40f37415ad4eca58974f001fae18a2486ddcc283", +"TR_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5e4bccbab65c950aa470fef3b3de922889b1ecbce8098bdda5920a1bf40bc5c9", +"TR_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "b4f1a01240f2bb053c4528f1a1711805c4f87ea8d2fed5bf339ce2b9d097794c", +"TR_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7320b97b7cd125f4064ae6a86a74792564d3727d4b1d93a7277cb8e6f353ccfa", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "5cbfe223a97c11b03e93202e9d49791a81cd5849e5121a12f2a057a66395bf38", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "13d81d55f27c981fdf7e5b093503a6f544dee01a1079df7ed7d74e19869ca0d0", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "855868ae0d8ed17459effee3fc32b3fd57a489cc3af376892f5cd1b550dfb088", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "4ae41bd9e925d13108681c5b1dadc5a70abd6e96b291a990155feb77ddf96634", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "bba5c001b590907afe0730c019fc4d9b0e1703577b917d995b4a1c2124fced3d", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "893c701885b8c1e776f68d59072e2ad0778a8f31e18a42dc691df53521aaa83c", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "2f83236ba4b6f98e3b44137c57eac26942e3a99fb1068d43ef364c30b4c40e40", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "afcf328746f0210834e2c3ab2cb6856e2061789bcf7f0be910e2cc653493ebe6", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "cfcf55e3584863d815f54e3301a8974ead77cb4a35f090fc2094e22697323564", +"TR_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "13683f7ac7adf3f575d953ed14ac4e725ec9c6ddeec6838cee1be449a662260a", +"TR_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey.py::test_slip25_path": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_grs.py::test_legacy": "7eb04ad53560d4197e85afe540c081e50581e18d158eed834235dc55090ed2bb", +"TR_es_bitcoin-test_grs.py::test_legacy_change": "882f7dcd75bdd86f45cc4905300df047b7ed5aeec41410257e5a41952a8d97e8", +"TR_es_bitcoin-test_grs.py::test_send_p2tr": "95153469e7799ab633f8a2ca08dfb77037e712074177dbd033bf4b32154999c1", +"TR_es_bitcoin-test_grs.py::test_send_segwit_native": "27c1da329d36d44d8989fa847a80c7af184f232c6b01039c5920abec2bfcc21b", +"TR_es_bitcoin-test_grs.py::test_send_segwit_native_change": "aaefb0b2beeb173f2bb62ebfd1f34854f143138b570ea217e264ed99c780b5dc", +"TR_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "a6e3e532b01155842c7517f79c9b5a6fd4346be78be77f74649ee1f12627449a", +"TR_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "03fab447700c329827e898db2bae61e72aea92a036b2e1410b77000828ea728c", +"TR_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "9f845e55e8e1de1cc95347c6b5b0b91e339fdc113f60f5172355452d9d57e411", +"TR_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "7df5e5072a558b724b2c39cd7ce04c98b1e8bccd1d0cae7d37152534697429b1", +"TR_es_bitcoin-test_multisig.py::test_15_of_15": "03f345d442592351b0daabdecc180e7c5c0995b93390cb29685afd7b7a231410", +"TR_es_bitcoin-test_multisig.py::test_2_of_3[False]": "9d21258328852de08477e9ba06180e09f331d5345516c9771369b5d6b847f464", +"TR_es_bitcoin-test_multisig.py::test_2_of_3[True]": "8708ff27d2bde12a6638da5ecf622fbe645420287ee524a15db828a0388819ab", +"TR_es_bitcoin-test_multisig.py::test_attack_change_input": "ddef01ac19a2c35f710458d04f5e57da0a3bff79420bb73bee2932dc0cc0d48c", +"TR_es_bitcoin-test_multisig.py::test_missing_pubkey": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_multisig_change.py::test_external_external": "434589b25ce7940b0fb624e453ded223380b5471d91edc4c8beac82af5b4c9ad", +"TR_es_bitcoin-test_multisig_change.py::test_external_internal": "382f1b1282bcbb61dc479f7bcd88ce7134f6b7283950e95c296a75a076f7863a", +"TR_es_bitcoin-test_multisig_change.py::test_internal_external": "2d5de4df55557ed65faede1ea570e532b5b1c60ad288054a85fd9111d0b755b1", +"TR_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "072170ea4b479b296327d04fa8c2e95e484dbecf32502074aff12e4bf9b97e45", +"TR_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "3a91b06e17b4067be1b59c9c51f399fe4f2b43ba4cede1b113784875fa41c2cc", +"TR_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "9ac929acd23614bbb1e03fd4a37b5c66685c0f8a87dbd41b037203197f7be16a", +"TR_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "4678e3fe5f556f22e307c8d265505a138b29df00b01a40a71fffcc066131f406", +"TR_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "182b54951e252176bb31bbcd701ca4cf3317680eecf5a4002a8f22202c9ac042", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "df74ce02715dd4ebab5c89f6ac76e9af30651844ca3b30135b543e5b90285777", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ff23b2891fba37e57e6a402ec402be03662792636d89ba9debe3a42cb5aeb153", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "89262116dc188164300a633a7d5b06a2ea658d24832dd8a266d9de3d05f805e7", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "bb6b76d7065aab40ad17d5cca74f4d5e90c48d7366e44fb2a12ffcc012481531", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "db8ba2bba30a1faf550137abe32904d164d9bff4b8dc5a018b0c396a42eae436", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "24665ff4a96ce6fbdecb596a74a5bd10c6d7d2b30938e0da24fbc8f4d82a8aa9", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "01e7208caa6760fb3203d382ccca88d655a14af0097f40bd7f69eb84ff47fcdf", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "a6cca17d93b6fd0ee44636b00606447882c8f4423873fc6c1723c09ef1464054", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "e9eaebc1624d3a917e1bcf4d65080c5db96f792dd56cd99784a65a1e31e1970d", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "297f28609a44352ac1d9168865a035bdcab87a41cf1b06fc92fea032fb7277d4", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "5a5352fe6a8da4675e87ccaf27bdbf7ba7a8d2f499756c12128369be439f968f", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "6cb622b51120c2a85fe1e9a37879f450ea6a4685d02db6f71cab97e2789868a8", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "037e06c27c4a157d2188a57fdc8a0a95df441e0f69b41c511e6d7ca9642091e2", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "ab6d684a626b7107f3dbccb9995d59e71da91ea62490f4df39e951b6e50a0b42", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "c3c6bc4f1a62c74231f3a256aa43dcb0c3ad121088ef859a225869c296357588", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "8e035f5c72850b376f0d1874f6e362bf8bd7b8a26ae6b85b6fff029ca852f1e0", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "24a63a966074269fa4122af7eddc809529c279d74eac041c0e975b7a82e94fd3", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "1a810bece243d8d644c16ac41318dbfb11b893c2312b020fd5a8a97372af0e66", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "f52bdb65bdcb98c57d785b98f071e1b5059c35944dc0bbade54ab33b5e9b26ac", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "5889d04f03517940a99ff34a867e57372280f3e9889bab0d08ef71cb8cf700f5", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ecd8b5882fd6736b15af47f4fb01df23fd991618df4ee3660380492d6944b0dd", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "1f08851a756179cf3004f73e02fe69eb93f3e7fca79bda7d38c592c4d8ddb86b", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "68c64353ff38a08d4d655ece7c31d18682b331461490a98945b710f20945c08e", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "b057b5627f374e4ad16e6b07468cce84968fe0f7f75e6d6fb8be9ffed54674c6", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "22dd3f5ed8551e46d4d9bf9030141b53ff0a90086fb66d4a5a0ee25bfe547764", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "25fddac1d7075ff3b546f38ff37e6339e5e9f7fec3380d46820a61a24b030036", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "bc151808ab9afff2c6253271e27f59f1bd3f431a9beb4ef9b0965c7361b9cfd1", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "7d2a9cb77389a5c85eefa9ff2bbf87dcccdc43529bb3841a1870327324030da6", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "cd87fc6dcd9cf8de747eed87f7b33f6dc0307fb4ea68ce0d81024a7dc42eae78", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "a052f8e5166bd6ff0b0e6377506ad88581ad56b9608b6df6c0a21c0e6d9e2253", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "d1fa748387d805d0e09ab2d2623fda857424332a2a75a96e9ef06b395cc31721", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "33f8ab117840d046967498526be41fee217f9c27af577a8115d061c3f6e1fe63", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "cddc5da5a29e50d724fb9462c550035330f6b8640d7baaa0952958a61490fa8e", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "dd2ad0a2ccfb8f805a84c28caf05ac463ee7767a43aa73ebac1ff788a7dae9e4", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "6bff9a9c244940d18e1e5c6ba8824f805d5ac37acf7a902565bfb04f637e5273", +"TR_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b55fee63516bdb295ee46b05a475efee2503d29ae9c07bebcf08d3068390ca63", +"TR_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_op_return.py::test_opreturn": "19a643c79b9960a1c89afb0fdce4b8305fa7799b4313b6970df897aa017cba88", +"TR_es_bitcoin-test_op_return.py::test_opreturn_address": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_peercoin.py::test_timestamp_included": "6ecdec1e788161280e80b116f46feb0434797e3485fc4569a1a0e78a974628ee", +"TR_es_bitcoin-test_peercoin.py::test_timestamp_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "93cb590948383906dd302bb2744c8ba23bbf1edaf776eaad73d3977bd6e4615e", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d08cf52864d9b3de5d6774e056958e4812c58b2e0eb5f15485109b4eea6a0e74", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d08cf52864d9b3de5d6774e056958e4812c58b2e0eb5f15485109b4eea6a0e74", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "1df943355bdf72e682369425ff484f68191241d3e5c7dd513ef6cc10acfe7037", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "53c76634228ccf3bb21c4be0a2b4861159b44c78af2cb1f7f9a4acdd234cff24", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "7be208321f7a5808c6d31f35535e4ea85c9b4ead1783af3b96b321587712646f", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "744a4ab7985e7340f3171a00e9b66518a00a0ba84b31557b57eda7f62cfffc05", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "0d42988477600653daac91960f1c45f90ceaea0b0cc8df484dddcb59fa41f674", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "0b84933022eab7912db5f619797bafbda48b2d29d87238cd23338a2b909e26d5", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "0b84933022eab7912db5f619797bafbda48b2d29d87238cd23338a2b909e26d5", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "3922807d0a9de72c1f01fee6ea704caa5d0ca842a4e52db7ab1539bca1c2b1ac", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "47fd5307778d563fe90a228fff831b6121c6f84b18dc910cfded13215d67032f", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "6dce887ad6ec79e73d57e6d66155ef649a5718e0a704795c4055d3b14ab50d9b", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "6dce887ad6ec79e73d57e6d66155ef649a5718e0a704795c4055d3b14ab50d9b", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "6fe945b23361fbffcbab93e6022f7f27ec748ab20ecfbbf931875493f1de73a2", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "5f4da7db4a899393161e7fd507d7a901123723ad18f466ae3d790644c0a9e8c8", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "e1e5343050c3a811a98a1e18ff5330a0a60d900977e8d693aea858bd0e345d7e", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "e1e5343050c3a811a98a1e18ff5330a0a60d900977e8d693aea858bd0e345d7e", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "82b0a2f5ced40bb51945485eb318c6734bf0dadfff3bc3b08e87f02a972baef0", +"TR_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "1aba2732964130043a92586f0e514fe32b97267a4b1839dc727e4e701545424b", +"TR_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "27de6145041b33f0d2384f39751401940d15935817a67f413e7382b23b9fb5d0", +"TR_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "ea1e5f4791ace6dc7c80283a5f35374274dc3cb0a136dbf7f62e44c4000a27e7", +"TR_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "748361ad232a1b2f824b07a1bd321a607a19a20bd62d43d2c03ac25a4f25b89f", +"TR_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "3b876f043a317bff46a471796142041e9af60d81f8cefd687785d7600196b5ad", +"TR_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "ea67da30c5825e5745d95c429563119c61d176153fc6842b856805c99d1d11f5", +"TR_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "f26d245d0c1e2029615144d69138e05a6611cec4eb661752c6af9fd252c70fff", +"TR_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "2a7f266a9e2cb01b1a1de162e4ce0d6b7016ca5ca4ae67b696df25e88ce8c98f", +"TR_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "142b245af6c6025eca15153880bb71cfddb0cba333ad643040a9db421e14b5b2", +"TR_es_bitcoin-test_signtx.py::test_attack_change_input_address": "ee796187a8c714070af9c269994eef3ea53f69f4a978f51a50841a16aaf9c38d", +"TR_es_bitcoin-test_signtx.py::test_attack_change_outputs": "c3593860c7ee2a2627d884df197a7ca67d5a5e97e07650b6172247ec1e0d6aa6", +"TR_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "475123b0b6e4dbef9458e5d4f062ece4216512ede61b353c57c07bb1d1c69f77", +"TR_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "475123b0b6e4dbef9458e5d4f062ece4216512ede61b353c57c07bb1d1c69f77", +"TR_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "6ae50dae27d7e46ac5f0ce518b88d4bef16e5f72c5fca33a0965725bb85caa51", +"TR_es_bitcoin-test_signtx.py::test_fee_high_warning": "db117a63d93958e0b9dd0b7994b2a4b00dd71845f9af34dfb75ea12b2b1bd730", +"TR_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx.py::test_information": "c27d8427fc0d620ff10feddc1acb91a8b01f3c0c12bc80ad9ac02fc4bf109edd", +"TR_es_bitcoin-test_signtx.py::test_information_cancel": "ca19d193a80947837891fb6f42b4f2e5b305a4c87e296cb4092ba081fb342c86", +"TR_es_bitcoin-test_signtx.py::test_information_mixed": "99f9d2850d646e4481c4a0975c30d67d6c8326052e0aa5014b8aad3bf40eb40c", +"TR_es_bitcoin-test_signtx.py::test_information_replacement": "8f9b126b9049fc701a388d90f583f9aa52efa0f573f307aa95e80e1d7ec8c049", +"TR_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "9b8630f6f23b1adeb13ad8b9ef9114917a82965882cd542fb4c63b89dd1e0945", +"TR_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "2c784d912becebea53d9d2d32ec0d9b9b41f249d59c4aba96831b590a83c67b4", +"TR_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "c473a97252728dd9e1b977c1543f2dbdb41d6c25fdebe824a5f2e2b5bfca1304", +"TR_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "4b5eb6e146fe88a69aa5013258eba7aef6dc3a2b1031f7b1115b8c3b4faef193", +"TR_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "7bdcccc5780b42cef03801630edaed841bfa6406de2809b4f97a3f3bd7007fcc", +"TR_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "22aa09b9ad70ddfef0bb4924bf6f1cfa338e3566d8ddee390be9dc92347ed78d", +"TR_es_bitcoin-test_signtx.py::test_lots_of_change": "4969b8aa7ae6e4b0056e120b394294d51ecf5bd1a04d03aa60e5d6fe53077b14", +"TR_es_bitcoin-test_signtx.py::test_lots_of_inputs": "6e31b8bc6244f4341fd063904f73a457afe13a8dbcc4e7f7dfd7f1928f006026", +"TR_es_bitcoin-test_signtx.py::test_lots_of_outputs": "a469f4fc5dd05d66423d8ee9e872bf8f8d38563c90e6b546dfef860275fea9c7", +"TR_es_bitcoin-test_signtx.py::test_not_enough_funds": "a25cd4e3137136f89a1a92b799774e6c38c3d54d0269e18e46f3635f4368724e", +"TR_es_bitcoin-test_signtx.py::test_not_enough_vouts": "a9dfcca61fca9d6543e65fffec41d1f16a730e7b3ecef10c4a2deea490c59f5c", +"TR_es_bitcoin-test_signtx.py::test_one_one_fee": "9e069c932e6ed00c6a3e8d8ba3aebd5afd90a237a2f94275c3ea1bc30932afbd", +"TR_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "5bdbabab62b603a9f38393cdbb4141cda463712bb6ecb4b734e0a2d75e31efce", +"TR_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "40989b441421fc6b62fec3fa4c2df510cb60e6547a4143b59e1d0cafb88690fc", +"TR_es_bitcoin-test_signtx.py::test_one_two_fee": "da46f41ff221cc9a960bc94d5b5446c1eef5a9c85a5fe9d1ece1d74c2658f279", +"TR_es_bitcoin-test_signtx.py::test_p2sh": "af335aa8d63c719d46dc97e87a5b1e7a35e2df1917410c74fab69b0cb37903bf", +"TR_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "1d112979ca4d90ba1f94799fa6e60c8a4a2d8f0490782905202554f9581de4b5", +"TR_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "1d112979ca4d90ba1f94799fa6e60c8a4a2d8f0490782905202554f9581de4b5", +"TR_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "1d112979ca4d90ba1f94799fa6e60c8a4a2d8f0490782905202554f9581de4b5", +"TR_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "1d112979ca4d90ba1f94799fa6e60c8a4a2d8f0490782905202554f9581de4b5", +"TR_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "1d112979ca4d90ba1f94799fa6e60c8a4a2d8f0490782905202554f9581de4b5", +"TR_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_signtx.py::test_spend_coinbase": "3c954ae93845705614a4f0e8b9ecfd4d0b30b47cae3b2f8c1c48aa9f9a6e3a82", +"TR_es_bitcoin-test_signtx.py::test_testnet_big_amount": "111f5eddb49fb90827db2b4bf2292026c308394f0fa19f5f17ed9c1eda433c30", +"TR_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "11b52bc0a9f73c386b397fc27b2c62d8c56a19c6f4e201ff155f31abb419269e", +"TR_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "475123b0b6e4dbef9458e5d4f062ece4216512ede61b353c57c07bb1d1c69f77", +"TR_es_bitcoin-test_signtx.py::test_two_changes": "b3ae5575843dfa286bd34362d8cc0b8af44acd32c2dcefd0359709448452a745", +"TR_es_bitcoin-test_signtx.py::test_two_two": "ce53753a801b9df9e78d515c799b191be540c6fae5424b179148de65a60e3843", +"TR_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "9e069c932e6ed00c6a3e8d8ba3aebd5afd90a237a2f94275c3ea1bc30932afbd", +"TR_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "745848348a1413d8f961856b8d6375459bbe88621218348a0bdfe11a5f2e2679", +"TR_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "d0f566ccba3a75b21e9703b7ac2a33a9c26aa0170f10a516049519053a35cbdb", +"TR_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1d2c2f40c3fdcde6d67bc5b7a88fe10f5798a352737018acac4f0791d3764ba6", +"TR_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "9e069c932e6ed00c6a3e8d8ba3aebd5afd90a237a2f94275c3ea1bc30932afbd", +"TR_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "334dc6fc9f4b03d9f0c562fd9a4be643f37cefbf992b1ddc2887daacef00002d", +"TR_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "a06d16792e78f484fb32cbef7aad1d3af38adc76770c7e2e44051f40ae7572d5", +"TR_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "2c288b0e3663f94552c263efdc71427a7862afb13a3d50a791393059e726c638", +"TR_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "9330dbd9bad36e2326a04da290cecdfb751e7faf7b5495a46ac4e216a1a21086", +"TR_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "334dc6fc9f4b03d9f0c562fd9a4be643f37cefbf992b1ddc2887daacef00002d", +"TR_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "f89969d7f70546c64bb74539a2b8c75f00525effa900215a81a82a5ce079e579", +"TR_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "af6f43af071d46a5ecd41d069d57fa87b83e127c62c8b01469a949692b5bc2f6", +"TR_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "eaf3f170aa9179d6a00fee889f424912df10f1803884cafea3cab817715ae1b0", +"TR_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "4046d55452613961cf7f0b180017be4da2047120e0d2bd11012a788e93ab3c8c", +"TR_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "9ee7bcdadaca2ba5a40c6a4c6b477ccdf67a2b54578d56129d7fe286093cc59e", +"TR_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "aa743993f7c1f90539957dbcaa7cfeb74a17a6a85d280215cbf5d11bf2082595", +"TR_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "6acedb654c436314bd36ca81b39e9452070ec527cb081c1059b50a2d21f7cbde", +"TR_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "e7d0eac369025052f8d5f556e3d01d659909c3b01f61559c60113459905d1ced", +"TR_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "831be8e2c5f53db3740717b2337043e12ab11226473fbc1a1a7dd53cd62996cf", +"TR_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "3bf9123a6e5e0164e201b1cc0fde4122cbc9226b47f7bb1c9a4f31d9f629bb46", +"TR_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "41d8d7200d5e1ef035908df4912c79487c273a10b780a88573cb7b004f138aba", +"TR_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "0209112505a7977209f50dc5acb68d6831824b91ff83051f2338005e1ed52545", +"TR_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "cd02478636fe693aff0b48b1c570a3fa5a7c56b327d76f9eea5f02f0b4c2bfc8", +"TR_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "5450ab74aaeee83697c273a569416b4a9ab7ec888c251c18fa35fb5640b8c4fa", +"TR_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "cd02478636fe693aff0b48b1c570a3fa5a7c56b327d76f9eea5f02f0b4c2bfc8", +"TR_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "a7a0582a46c9ae5ea71ad64bc4835f2b33dc43e8e7b98a1760dc0d2a4d23f14b", +"TR_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "07dbcea72fb3b02975ef53e855e1518156b2e71f95440f7ff266b3d638ebc849", +"TR_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "4db021523f3c33ca47eebbf9364a0184c4ef3249912aab000b346c263f483004", +"TR_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "2e07184f7b5c4f9f9a0b4f86a7dae23f1b40a12cb28ae09718fe3ef71c8bc34c", +"TR_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "35e12852e9e7d0a0c4b4233cc0de7175f02a934d5303aff51fbbcbe77747e969", +"TR_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "11c4194381c46d6cb2ed9c2b0cebded8e85c8f79f8e6b88dca5a847d6de1c0bf", +"TR_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b5d46f33334d004146c4279a7cf989f81d124b5f9d2abeb58c4b398fdc2f84f5", +"TR_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "d6d34122c40172372533a705f12388c03cfceacc31765006e7bb712fd7e63b75", +"TR_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "47f5804a186cebf610874c8e92a1baf14cc4703955eab8da0b05c04ca20cbc7d", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "47f5804a186cebf610874c8e92a1baf14cc4703955eab8da0b05c04ca20cbc7d", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "47f5804a186cebf610874c8e92a1baf14cc4703955eab8da0b05c04ca20cbc7d", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "47f5804a186cebf610874c8e92a1baf14cc4703955eab8da0b05c04ca20cbc7d", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "cf040dbaf66b3c8567510b90a64b1fc09da28ae25f59a3cd11cc532c8cad5d6f", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "cf040dbaf66b3c8567510b90a64b1fc09da28ae25f59a3cd11cc532c8cad5d6f", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "cf040dbaf66b3c8567510b90a64b1fc09da28ae25f59a3cd11cc532c8cad5d6f", +"TR_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "cf040dbaf66b3c8567510b90a64b1fc09da28ae25f59a3cd11cc532c8cad5d6f", +"TR_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "b646c692dd0ec3a1ebb9af4ab9584f578f49d3d7d5a6d9a4daa0e43969786cec", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "b6d47175059afe93a56d74322cf67b2b3ce3a552e0c4358c24e6107b19556af9", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "c7f8b01117178bbca936a3d6dc0195a96393aa85dcbf6a1ddad21243e16708d2", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "c7f8b01117178bbca936a3d6dc0195a96393aa85dcbf6a1ddad21243e16708d2", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "00ea0463af39544cc383e98c07d002f01e23064df81e0166ea261225163e9334", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "8b0cfba05a5c479d62897bfd49618f2a3934ed779ff451f03ca657a9dd8afd2e", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "288a2e23f2c140b5f817ad9fb676bfa3f8b0b3308490bb097f2531cbdba899f7", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "00ea0463af39544cc383e98c07d002f01e23064df81e0166ea261225163e9334", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "9831f6aecbdc4e3dbbf121bae9f2719c4428b4654070ca2528b4c5ca9f3cba08", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "5241419286557434c5a131fa61dd3b122fb228d9460e293cdc0d6bd97beadd04", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "5241419286557434c5a131fa61dd3b122fb228d9460e293cdc0d6bd97beadd04", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "5241419286557434c5a131fa61dd3b122fb228d9460e293cdc0d6bd97beadd04", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "92901333301e6e0280eb7820fa8a1894c1d53bcae22cdcbfebdc9aeb742f4ea4", +"TR_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "5241419286557434c5a131fa61dd3b122fb228d9460e293cdc0d6bd97beadd04", +"TR_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "f2eb2b05f914f89dcb86b3bfc5e61a736c63d48b3cf296196f4e105f74edaa1a", +"TR_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "4130ff61362185e87c6e40cac77d0382e59a11e416da00af1cdc67d33e5cc3ca", +"TR_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "26dc31f65ecea06519a3f8fb89aefc5eb9749910d8d97ce0576f934b545402a4", +"TR_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "2c7aa4156287ebea05de83a7b64b3009382552f6ac3c3e55b716d0ce1f81b6aa", +"TR_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "5a763ce8b4c47db0acbac96a240b4eff0e88f51cd50c957b0b1273de9583b7f5", +"TR_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "6a8c826c9d54cfe7db1380e863d6a844dacd012e0988b960bf9e2fa4abe035f7", +"TR_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "5b461a2a800f95051591ad9d5cc0ec0741aecc667e1d23cd24a3c96fcb8daf1a", +"TR_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "f471ee14ad52f8df4e168559bfc66333632c6940bca66a7bf2bc7c33393ca7a6", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "b6ba026f484090c2e949db7e959271666c92463e7dd91b26b400a474764e8111", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "112cef77719e452eae0315b30e55f69225878ab92c9a94ecd7045bc5ebf406c4", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "44cf918697ffa9450e4f6361c6f1af693dc1f90a74d323226cf7d37b7e050805", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "c9f93377cc58a23e0062749ced38f52a689cd49599c8c16e03c7608e546399e2", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "e6420cd633ef0c401ec104cc2e1692a664637b75206817a1510b1251e31ac2ac", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "26843dd2c8e239863a1ad6855be2dacd60229bd203f1c9225df70062d0eddcd5", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "334dc6fc9f4b03d9f0c562fd9a4be643f37cefbf992b1ddc2887daacef00002d", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "fde42cc3acec72c2d8f9c1c528d1bd9ef9cd6a04256fc8d5276dc63f9a6ab0f1", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5ad4de85e4678d740738c0b0b5c38a803e68dbb2856ca85e65ec6a8ddc8c5a50", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "4737c117fbbc14efb783f3881a16d2ea102edd412edb2b4233c1453f3d760e00", +"TR_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "481530761d858158b7e19782017a6366ac6fe19a9264957f235c2783fdf769f8", +"TR_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "255713bae41d719ab45e7ef0720e766eb646c34be1d9c23569060ae3473c154d", +"TR_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "0fd7987b870f5fefdd5aa9556521496b9092128df86359a65bb1182d0d45963b", +"TR_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "4024c2a8352c96b2e0dca35313773251558f3a795d992f9848da05af62ada79a", +"TR_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "d3ba1262dc223bdcb03a7c6e704106bf75d5e61876a74261de1d6c2bfed873fa", +"TR_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "674c428dcca5d8e94090f13cd90458a914a27f9bd2dd908fc33bc89ecdd21344", +"TR_es_bitcoin-test_verifymessage.py::test_message_grs": "b8d9f9845676e13441216ca0c091fa9460a527192213aa8e89d9e9f2f9d6543b", +"TR_es_bitcoin-test_verifymessage.py::test_message_long": "adabffc949a49fa35bd80017ca0cd2c9042d73caeef44103fd705cf5721120bd", +"TR_es_bitcoin-test_verifymessage.py::test_message_testnet": "8328c7a21fd3c694fcc4f06319ba6dc7aabdedb5db95f2706e4262a2344c4b80", +"TR_es_bitcoin-test_verifymessage.py::test_message_verify": "65be3d6c628f1f0d33a7600cffcd63935efa0b485eefdd3e17b69a2a8261f7a6", +"TR_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "6ca2a2d271c5eedd80da2d8c2842b83aa1bf9253259052c972ecfff630969d6d", +"TR_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "9a4cb388bd5c8d33136409d7de1b5b69228b431c08e2ea899d0e523b14549f3b", +"TR_es_bitcoin-test_verifymessage.py::test_verify_utf": "b82aeac965262dc38d144afb9e7f5a4d9bf632c84faf9318871a140c88372012", +"TR_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "16a9be8c5143f2bd3d0d4218aeec2f4c6b118784ac822a7a60dad64d21898e49", +"TR_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "18d3232a7f78eb32cef56fcf77c88e473bc19bb71b116efbe11bad6ac6905319", +"TR_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "1ec0955086c8b1598eb14aa8327b535d889595751efa3be1118c57046b828db6", +"TR_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "a745f1eed4c9bdd2724a902eff27b3713c231478528f73e4d633d9acf83d3d90", +"TR_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "90df6e5910fa71c2de523896a0300a40adb1f722a358607578e7024be3931012", +"TR_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "f729e24e0cd022860a8184c0932fc8cd5d1aa08f0e376d90ac5fe327945bb03b", +"TR_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "70a651b8e2dc84557fa972c9f68d228d5c93ed80ef7160131f09b5433a646393", +"TR_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "dc543d1c52be76d25f5747ab26d8aadaf53dd24ebd35158badc7106f90a886a8", +"TR_es_bitcoin-test_zcash.py::test_external_presigned": "82a31a33f56ceb92ac5252133f1e4bdcba3a8e61dc65c86e0cf2581dcc2c7f14", +"TR_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "f33b20a76cf885591319a265f6d7412b8e86ad7bafbc03716f3366e7e44e1f24", +"TR_es_bitcoin-test_zcash.py::test_spend_old_versions": "7b2799c3be5eae31e32d4ed01c4dca4f487040ed82462326e9c07038a422b75e", +"TR_es_bitcoin-test_zcash.py::test_v3_not_supported": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_bitcoin-test_zcash.py::test_version_group_id_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "8933f53f41f3179358f6520ce751bb274e58c6da74ff939af24a89a3360a2c2a", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a394290bef49407e9f7c53bbec26d65d69ef690b5d9f797766ae50750525ca21", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "c0937249415a0f4bc00ac94dde4f701b1963a40f96537b98b74dc09b7656c680", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "c66bf8f893b20fe3cd24a3d851cfbd355b921954a5c6cf5d0c61f0fe98eb4834", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "02014453db0b2e3505f936a979ab8eecfc326728e029cf255d98ecb1c6d25f09", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "6f1cee096e1598e74b1bacf4e7fe5bb4c316f3c7e5422ebcc7fb54b9834d15bf", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "15168e2518219b7aebeeb48a2118892182023b9c7503877c0a7b8cbfd81dec5b", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "55b6326d79fbae55d39bd189b1e14101b06b25b0e7975cb5a6114620c086627c", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "971a5f0232b069f7593f5a0583183878f2455c14cc7ea2f1c9f3126f70aced2a", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "ad7b92c3321a944d9b94547e3ec90a5a56855b202fe1066dcaa06f046d34fabf", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "6786b796c1e1916aaea90a0939b8a4742283b218cc8b5442ac76c37e0f1700bf", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "7987f114c9db57e08eedb1f085ac8698c2639e3d548a566857cbaad3bb2413aa", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "5a43b2d201a8171e19a2c0632ec84a418c536ce52fcc0150e436b6f114ca2b7a", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "1be3aaaec3300687784464a83fa22c193d10ff2066fbcb5c9819e5ffc60ff533", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "447305f4c0d8db5e6137d70d6af6d966a355beb5bdf0453891b5b55e6fb1efd5", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "085c31d301b8f31a054cc218dac9288011dd0365feed9db49527a06217ac8be6", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "2a0468a95850a80ed94c7ba7432ced8564fdc17161105c44ea317661f56538ae", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "9089cd034cb214c054ca631197eb8c0bee5b44c5e18debfd502b5767ff662ee6", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "17034487f9eef17edf0a76722564fc2e8ac3c405a228092a09cbe57906f20f33", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "e80e71106bd0ae217031002ef8804f43571d1875ece29a7c714833e954470afc", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "aba7e08c2a82775773c982f98cf95e27e2d3052d5094677a139c04a7bb745415", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "ed0243187b41605ab56b31df3f58bd1d278683dce232cbc30443bb60ddd362b7", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "f31d5e3794baa091b04787b43b07f1cef565a2694fc84cede22e8b53e8851920", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "f1f3dd6117ef80862971c72c33821d0363892906cc7bfd25bc02e278c5ca8fe5", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "7c8513e70e3800cc618385753ef3c88f5637c6f0148eba127a6e6d99e91d56cb", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "6c4e68bee2248aba175b02c650093bc3c1634869e25b7b1ac17449054bd1a7b8", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "cf649c41425329e41724018e7fc33d2503c0f4cbd2baa1ece7c65ed7cf85ce7b", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "d7f6980ef50e75495f8794b0ff365111bef8b4bce1d7472f2d3e64d2201d62ac", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "4450cb671ae9d848c667d98e35b7b7e3680567787ddd7b7cbd684088d1b7bebb", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "3ce10014828515220d87350187e830d48385e20f65b7d3a7e48f502cd56e0de6", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "7de7b2125623202fb43ffe2f4d36ef297dd96f6d495f8dc55756d7cf3b9c56e3", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "023bed7ca07fdaab7544763622072338c53a91a0d89560bc6adf6660e04990a4", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "e278cb98cfb5d991faef6614d1e73ecbc885be9d8805f2599bae732123b3f13f", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "d525f22b44b40b62fb92dca176adf3b2d4afdc53ae8b1829f68ceb49fb3718d4", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "867f0f078b864558f10fe2cb19b3980cd0cfe3efaa5ddb2ac6ae46c074ca919c", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "f245e443514fd5513075b4a26c9b7352213a170e81387b6c03ddb026f525b550", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "56964a09b7800e8bc8cdd97bd1f3e5d57f187fa0fc76147003735c8a2056b9f3", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "c6db711325d84b80e675c87ac72b5597ac64175da6a7c0ce3acb02f5334aaa99", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "6fe7461d0ac3381202e237dc8f51471ea97ee881c19773f3ed7ef82c2eb9c876", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "d549f56e6b84b59680f1cd69c1255cf360240e4624ff5ec0d17a8b21eb92fb4c", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2abb59ae3087d32dd7593021dabf96d7f0df001cfa9ad0a3a3ee7f24c9f45b44", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "5ba3a82bb904d68810da1fb2713cb14ac512c5197386a024f6ad1631d350f04e", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "4d2631a0a2abaa06f676cfccba5a5ffab12fab2bc6c6dbb47bd434099042319a", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "677ec8e4a761366a6b58f2e2ef1498ea170767f5c4aa3b654ed70825de100814", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "3a9379ab53f8b1bc61d34b0e9ce910fc83256ac78adc58d885a53a3fd9bace2b", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "f13ccac1744f66c599f505fd817eded9409481386f452f1d02a82481db93483c", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "39667c9b8a3faec95f1711928b8d89a0dea2ac2da868a614169ee9106bac45a7", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "bf276c56643afac4772c9b941dad89ad546dd9f5bdb90b392120851a23653264", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "58c3eb1894e861d2896d88068e65826015dd752ef91ab33bef25580abd210594", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "0f06a113381d995aff55a9875e6f0f4f4042211edbd5237e19ce0e951293ac2d", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "89aac5ed6b3e22f9fab16111fc59e0f91c49bd9524560fbd4ced7bec9c643375", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "149c2b499ca143b275629c6cd82ab36f3edbda4f833a9ec9d01dff436c7ab5fb", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "25831c4fc697bb0c31eb57ec8b44316e488dd24b524ed446e8723a85f393b408", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "5f7861a89c1d6a117baef7f39dc0e640c3ecded7a8251df7300832890c6b18f7", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "2a789f2cb2af02d9a0aa093bb89e06faf7d9f23813687925b44fe3c084c3a17d", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "5a8686982a9ada01ec1f33c93558e8442837e3ec7915d3557914ab579fc0b6d9", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "02860083ea6c801487c470f159bc21a5767bc7ab9b952bec95efe643c62f713d", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "eec0df6eb831f4a170e6f446c9638e5bb04bfcd2b61401fa8512fcd9830467ec", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "0d00bbf166e3f668a81bf4ed45d7ac02e83cd5567ccd08824c78e96afab329fb", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "51e5438fe277df5ca8c182ae188e2605fc1ad3d5cc8dced06bc8cdd29e231bc3", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b69b53527f32226dd07742ba3c9ec81fd6c249fe8c36527ae2513500f9ccada5", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "fd7d826b168bdf9ea9f858b4ba2e8d0fa95b4eac1483755d5ccab40503d2cdfe", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "e788db93077abcb0c38430e94f4d90f82b544c9819bae483993196deadcb3b9e", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "82f7aa5a1f12e508ca718e70c529852e123629fb9d225e3c80e222b0b7872464", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "e37d09a2236f241982610470ef59f68727af42cf30af6bd306307e3e0d3d5eeb", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "fa739bd0bee931df06e480c450c04f6852e36718c88a13df69bb028db4c66d87", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "1c2801364499466d253e7053a18b3193556c544d34f9b2789b23b852e2b803e6", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "44274fc37b56a4fd7b6d792e1ff95752dd2597a2635e260deb0df0efe554b2c4", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "005e5358c0688d0ba349f42b683f0464a0c88484ad1d1aa0a2ebae8cc67517da", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "f693134788904cae04eeb026ae52fbb4db26431f0ac0208d699441f30db18c06", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "cf851a8a6ff08fefa06f1a2d855e078b4c441ed4f42a61ef79397ded7aaeeaab", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "a39193177118126b717b0047ddb6488ea42ac30a5e96b57d013207b051d0b579", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "1d6589c671d4644e14396541480d1e303705c70c336e56b3f883740e4f4f6150", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "48e3b08098fa87edb64cbec994b69086eeb246f28bc8f3cfc90b77297de52d3a", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "5eb5a8e99744fbaa76d908af356d71ca65f5e01ad3b38b973ff51edf67b33278", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "2524cc287321368ff3caedda52c7f468411a6015480ef1d3bd5fae658151937c", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "b752292fd76611662e6774cf6d1b01cfdb3aa144dc87551ebdb6d0805598bc48", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "b396510b3fd2392cdbdb2317e76efef5a98430a660a876eca494f454e3bd4676", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "5a961e2562b102ba7aac014c6d5470fd94c2820b342d220e2de073ce4bf91117", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "2cdf9267f55c3d7d5de82527c26fe904140f78b4fd1ccfcedc8ee73bdff3e15f", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "dbd013ca64838624f750a64857c923ab1e1b2d9bd60b02470ada52da78d87f0b", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "2b9ecc64918def75c57499fa9c3608e88253c2a8df237358d6f68da8c6568ee7", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "5c9b72a3cda66e2dee7814e52f8469d8fdf7b4751103c24265c274699f043a3c", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "d592ea3625022a2890831aac7e9013669a232fd9fed00f1a75b48883d92e076a", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "a255946994f4b36e39aba627525f8c8de020087f544e93b10519b2be73b7968e", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "b060cd8ca476d8e2ae27671ac3a3f3777b7bb7d61248520b15cbe9953bde0561", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "f74dad9f989544c2c0d2436cd0766633b7ee4fe947dd27fa9363a0d1151f2394", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "b364854e4dab9a4a507408949f7623978fb76730482dbf43f329cc6d91df2343", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "023a93de8c5453cd0e833524356616669f18d11350909ea1e791a9c6979b2495", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "61bb5540f8097aaaa0dde4b395917d9345fde8e797918cab2106137cfadc0fd3", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "2a44fa1cf2a6f16f0373a38228cc4491d89b4eb94631941e676df1ef1fc8b358", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "9e49d84a8c82040e1b44882206586ee36eca3d1262a70dcd3e3a9a64a8c299cf", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "425eb43c073f55c2a0172c0385c226e4cfa3ea9d6453de03660ed0b7b19472d5", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "091162dd8b51f03db854f4568b91ad160bfae45d33cbb352c056ecb49dc114b0", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "a8b35a6683fae22d0cf79e29f0390d09ddb0871952937710f05b225577a3b228", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "ccc2ff5f0f93d15bc584ec4d5cd4e6cfc51fee92c94d6dd0cbcae03086fa513f", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "802dceac803fa1acec0a2c9f9e50880f9235b6ffc4da341f15ca37bc4e37a442", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "15ae836f0326749990e07dcad2b8254ff60075721ee70e1834484f8d4b7b3b8a", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "cbd218894cc8a436e4d62ac7e5e9bc172e1f217c26eebdbbee636d5bf3dd9a72", +"TR_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "158e6b2b810bf62390a7a084cc417c64602bd81cae018a644b8d3cd45cbbc08f", +"TR_es_cardano-test_derivations.py::test_bad_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_cardano-test_derivations.py::test_ledger_available_always": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "c4f112dff4070e9a3fabaad96cc7e063e09e02dc98d87f3686b1f560f97be26a", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "55229857ef3e2ae79f1d3c07f0cb189c60f3878fbc65af62642c2e47ac7a1606", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "aa2adb002d92365246b94d45600051e0cfa8bb34433e2cab6a99a298304645ed", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "be3ea972122dad102c7c0acd3eb3d56fa3c43df763f82913eb15a729736ab6ee", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "79b53793c672263f430ad723fae0d19fd24d56f537c520af7898ccba3caba769", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "0e09dffb403012134a78ed53f2593c4ace70b1787cc96f4785d1f08e7afb24e1", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "ee4f9314c52116bc1b07302e9663f41fc37f554b4d6fafa53244ccf780ba3b3e", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "fd687748192bbdbe2937cf8c725c443a8eb62ef47fcaec784dee2fc36bc1e007", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "233dc343f83ae687b8138d291e6c5a8b46590f689675dda9aca294b51ccc9a30", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "07a696d0b3606270c4b2620fdc2df7e99a4a30de96abdf7324165bc8be98edab", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "0183cd1496779cd0b5a96e513b6e60ee53ce179bc981c836a04b183a5e7616c1", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "ef22f0ead798d3dedbd3b45601e5d8e25e4b508ccabd9f0288ac1d4d0a3348f5", +"TR_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "ef68d0de5051f56b6c65bf9917fe143798ec67654e0e29739081152b4364204d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "7bcb0cc42897493842204ecaf7b513a6f83db3b32d537a36bc9e031acfd7fdf7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0ac594217425d1af70ce0d130c7df6006beed807aead9cdca50680493072ceec", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "9749f11b89fb1efb7478f28bf88116dae3aa9ac7c994af5ab101cae9bbd6001d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "ac6b4b4cdf384afcaea824fdd21a16b9453ebfb063b48b52eb7c534dbed02bd7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "ac6b4b4cdf384afcaea824fdd21a16b9453ebfb063b48b52eb7c534dbed02bd7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "0c8173cdcf63aa213ab9532d8a7eab3323a4f7229e1c0fd3c4420b6d9bc882a0", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9fa13a018e9c41cb94bb050f2948fd89b42c833ed185d72d4e54f8ddc7801979", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "98ddd84b08cad3d995edc29811897dca4d30acbb8c23dd7356e99e4c2cc62bd1", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "ad7364496d0338e3ebd5f471b3ebb922e417c84f0b00e3238247f9eab801ce57", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "bb5cc3b57efa6851656097a1f5ceef13250f628e502c0b1d450aee714866ad80", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "2cbb39d9161f1509a49cb103eca4e504ea02eeaaa773a47ed3e7a1d9e31f752d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "52164db76c362b373f0b110cb1704866fa605df047b2aadd8a93401cadbc62bd", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "f3140b77415542a9ae7bdee4da65a97a1e58390ddf77c81b326df499aa45c3a0", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "79ece72f6a59af653f826bf0a09e1cb4177b627e2c5c87762a6ba81fe44bfb0d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "79ece72f6a59af653f826bf0a09e1cb4177b627e2c5c87762a6ba81fe44bfb0d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e97bcbbcd04fcf40383c2fd17f6b779ab1c38aa096e08806e45e054155c5b534", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "bd677b3c114a8fba5a8ac7b288b0969f717a8522bd03298fd166d5eb62eb7082", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "89ed00654506eb608a7db3805ff4292f68d892cd784a48e97177d1101964a94c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "13dc3d5877de2e88a7fa34ab325cc375079d965bb7914113e3d251952004e951", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f5a2d0c6f4f4f463eb9ffaf8167f0bfa158cee7864572b7e675d038a140fe80b", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "c8f67752a7e15cabc489fa8b6230bf1cb786decea51cc6b0889080bc011200a5", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "009d89d96706b6a4c501c1143db04f0e2c938ea9cfca6e39d832cdfb9a95fdb3", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "a010776171b47d4743e14b5030b91ea8b53af4baf5f4f2efa63b4cfc4c1e3fca", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "ac6b4b4cdf384afcaea824fdd21a16b9453ebfb063b48b52eb7c534dbed02bd7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "0fc8df8dd67cc2c3636ab588fbc883cd341bb517e727206481bd896544db5082", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "13dc3d5877de2e88a7fa34ab325cc375079d965bb7914113e3d251952004e951", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "083ed02edaa6fb8978820a1053d4c68149ae69c6725fb81ad61915315c27fe4e", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "c8f67752a7e15cabc489fa8b6230bf1cb786decea51cc6b0889080bc011200a5", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "009d89d96706b6a4c501c1143db04f0e2c938ea9cfca6e39d832cdfb9a95fdb3", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "07aa8d431ecf2081a902f1c8b82f5bcde76bb196f0439921c9596d4e9524763d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "13dc3d5877de2e88a7fa34ab325cc375079d965bb7914113e3d251952004e951", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "21ff819f7a65e957856907cd84dc33fd27ae980354b745197f663ba7d6be5fa4", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "652dfc4ce3f8d85ec454a49f0655b2a833615aa8d6eeff76951fc9f0d21a0cc8", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "80edc895b461d3cae5f9b261b0f5737c066cfb2b73de0ea1db82aa381b8946d4", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "3b80fe29947b4596921a7cf68367f32dc7175b7907960f34146ed7dd94fb600d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "d8da175bad74b6a973042f00fed6275347a7680158f11505fa5b5ef94b3d78fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "d9dc4ef3c8dc5308ecf9fe5bb8122012b8a1a9e1e642fed72d3a9317dc41e432", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "047e44e01b2f19716613a49e94285e1733528c841edf72b1204f16299405d9e4", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "1152773cf5510ac105b762ec45a9bbbdeaee02827221200bc5fdb12b03397b55", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a862aaec2ae478014140ba2c4b31a05e74414fb045b037b16550029e12099160", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "966a786a3dc07019116e248b6599bc967388f2856ddb450ce1a7a9825120e065", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "b2cec8b055cc75213147e8ffbbe3f5494384fab30a5b1923d56b54afd670727b", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "60d25103145e0b4c518dc7abc38d329e7d6fc33217f02083205a1b29e65bacb1", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "4a16c0ecabb78e234857c71f5f19a9e8e50c71187694196361631b88e6a0c564", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "0fe51feb856e8995612028d283a871bad3bd8bb3fbb66d86585a3afab9bb93b3", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "d8d5ee0a3bac8092862c358b434702720eb75b0a08bb955170d40514eaa446fa", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "d985dbb61d7d020685d85d7a3f3f39f42811afbb88835f75cadc210e9c2f8752", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a08d329392c62407c15c74a81108f9a882852c81b7ac7acf3d00e87f965b7cb7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "3bd8ee1bd58316635e1ee53019184bbdafab71639ed80090c7791b649719d816", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "3d0c58305a9195a7c439aff23bc330650e4d88bcac3cc9341c43dba87148f48b", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "61d6911a34ca886d1a9660f9bd74364b9fbbee2b04467438235c9c3ad7b250df", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "5122903da1358371990dcf4aaf57b0773df87a37361b5c8e0cd258c80058f0d3", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "59432a880fee1d9e5e02c90324d2031172c2f7aec90f59c8f0da9b26f49facaa", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "59432a880fee1d9e5e02c90324d2031172c2f7aec90f59c8f0da9b26f49facaa", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "94cf4eae1bece09cebd14670a0de7523490fea25df681b94fc85736c402f6ced", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "6631bc728fd43f05dc60f481331b918272da26b0176ca22caa712fabb85f9902", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5daa183488b661bf8e75ac4aaf30a8ed209ef8f45e5da8d006819750a1b364c3", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "bd9d5ec5774688ce281922a7c7bbc16b3475d98e08ed99e6c1e7170827afdea7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "a7d22ac547d87631c67bf0fe4a3e15b5d634a13c2af52ff21ea80b60c8a71f75", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "a6b566cf1921eedce50ceb0aa359c5a649ed199c5bb4e2ce1003c23f73c5819f", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "5114499ee7647afa16c51fc9697944030cd3cea3cd23d32bb95243a2d9ae5984", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "88accce09345c5655983ceea087a1ccd84f1da16307c13774d49b5b9757ca4fa", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "13dc3d5877de2e88a7fa34ab325cc375079d965bb7914113e3d251952004e951", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "9a366756fc73533ab41995abe3e333099e0802cab32301b58330cee3a473ffe5", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "4ac2a2aa92e4d25a7285a2c2f628e5923f2699e542e8c73df1645937726c37a7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "d5a8d056b2bdeb1024d772c64ca25256103e92acb2f3d593fb14a9a2ee29f989", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "d0d64595b93f08805ef335f5afe0173beaec13cd97195988f9af15e236c2571a", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "5822287c4accacb1e9409e61f92e17079e4ad015dd9eae4e1db94227a34c2c28", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "bfbbc20ee03224facd6ca5254b302ede1c5529a922d73e52cd850c56c5e6682b", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "12020b3c275b4cdc6e272559f321acdf6f1d511c00fbf43a414c7992aed10fba", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "13dc3d5877de2e88a7fa34ab325cc375079d965bb7914113e3d251952004e951", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "04bc227bcb542a50d09599062d940c67749d004e78defdc642e8ba0118dea38b", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "2ff63a63dc1f01eab8fb7b2e8ae9f6a7aa68acf17dd2fe94bf55b88081c5300c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "25d9fbb60eee7fc32788d0c954e650ac15e89685a0f80622f9969fbc64c73ebe", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "69160f7746f51200927ba5b5f4c34dbeaba92a2fdaa8490cf3bb9c954cfebe65", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "6daa56be2a0813f1301a670347ddaaf361fcbfc46f5d9ed0615df82525bab374", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "5ce19915294537588c5567f6e732a5191c13e9c99669d7a531150b16a46e8aad", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "3988bb3dd44cc794045a22f31afb0823d17b513b362ce6f2af21e0915893cb90", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "8ef11aa7bf35c6ee768edb940f154886b7ef48a7cca8c8082f72281e3918fd5e", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "29abb412b15182f3f5538df46c259f87743689c9d1f520589956f17cf494d914", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b24fc7d2ce60c1abc3fc65a64d2fc81148e1c5125e1092f22cf12fa014862c87", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b24fc7d2ce60c1abc3fc65a64d2fc81148e1c5125e1092f22cf12fa014862c87", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "18ec78451a9041cd113eec1ee9fc64b0caa0127f8e882dc867ead64dbe90b915", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "f869c103fe1fc6dd8a0a7025991663d0578a02c608804a8b801950b0f8bdd9dd", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "af31672743626e174e1509998d78f8d3a19e426b0bcc83923eab282dca93457c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "20207534e383cc19966d8c2b5b6788eab6a306128ba0ef1f11d01b68f48d9e6f", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "16ae09f5fc18f47b1b3d5c3f21ce8a913697fc05853a9dbf57ad7cfd6f06b508", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6b80a8d69a035c908f279964eee6fff49d3eebd03879fe9e4b31b3f7cf14d7ed", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "ac6b4b4cdf384afcaea824fdd21a16b9453ebfb063b48b52eb7c534dbed02bd7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "ac6b4b4cdf384afcaea824fdd21a16b9453ebfb063b48b52eb7c534dbed02bd7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "7de41f936f79d84c1ef66e9eac170559323b9f0de55113a4769908ca71276754", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "1e50377473fbef81c5a669b6a4ec36f4b42c04e2223d67955eb89b421f3b4ee2", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "d46a858027b425f454429467a0db28df6f64a21bfdaa83c8900ececc3cbf50ce", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "7bcb0cc42897493842204ecaf7b513a6f83db3b32d537a36bc9e031acfd7fdf7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "ad7364496d0338e3ebd5f471b3ebb922e417c84f0b00e3238247f9eab801ce57", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "276dd08339c27f5857040db89a5f84417172e5b4ebf68fb567ea50f080c7dbdb", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "fe6c5df8d9c9ec27f617fe9ae4971901751db98bc2e3d4a58147635a47c70df9", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "fe6c5df8d9c9ec27f617fe9ae4971901751db98bc2e3d4a58147635a47c70df9", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "87c9a50fcb04a64d6bb35514776c839332a264ece3e809fa516d07b4b021192d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "41585c44abc984f853911f683a09187ab36e15798cd9f547e151d069cf2b82ab", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "4960bafb5ca8c94c085fab2339f26a0ad6324ab437b664d4643c92b98d73493e", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "13dc3d5877de2e88a7fa34ab325cc375079d965bb7914113e3d251952004e951", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "87c9a50fcb04a64d6bb35514776c839332a264ece3e809fa516d07b4b021192d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "87c9a50fcb04a64d6bb35514776c839332a264ece3e809fa516d07b4b021192d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "c496c13ac245b7bcd0794440a6e379e3449c6b07c42e0d46b50eb615f278bf08", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "ac23326e66f017c6b642f06a0249aff582ebd354f9bd3a5af052398cfe8b4a55", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "e0dde975cfd66d112917abdf29a152d3d87efa3de504ee36aba8d76f29120605", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "3b088967a8f114812213a8bde4dce1c2fe940d6bf1ab13a81763945c63d35f12", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "de15e9dcfc238dced63d4696767414589945c3abfa84ce40ede6535c6573cd17", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "30c385b42b0342e52c9337af24fcd1a8ba2812b465a508c1b14dfaea70001cae", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "30c385b42b0342e52c9337af24fcd1a8ba2812b465a508c1b14dfaea70001cae", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "30c385b42b0342e52c9337af24fcd1a8ba2812b465a508c1b14dfaea70001cae", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "30c385b42b0342e52c9337af24fcd1a8ba2812b465a508c1b14dfaea70001cae", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "30c385b42b0342e52c9337af24fcd1a8ba2812b465a508c1b14dfaea70001cae", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "30c385b42b0342e52c9337af24fcd1a8ba2812b465a508c1b14dfaea70001cae", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "de15e9dcfc238dced63d4696767414589945c3abfa84ce40ede6535c6573cd17", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "de15e9dcfc238dced63d4696767414589945c3abfa84ce40ede6535c6573cd17", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "de15e9dcfc238dced63d4696767414589945c3abfa84ce40ede6535c6573cd17", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "ac23326e66f017c6b642f06a0249aff582ebd354f9bd3a5af052398cfe8b4a55", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "7df34edb5c4839cec4f71ec7373eacea352b9f428f1d31a514869cd9ca7ef1e2", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "3e0e0be367f045a63cf6dc2590214504de81e787175b30d19ab562aeb9e257db", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "af88d9638d215efa4ca8319f9107600f9d12dc774f90ecf7a17f3c76f3ec9213", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "5332c522b2761eca25d637a873b59ce5b92f06b651fb18aff7c460eb8208fd01", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "f4bc7f02af3da7aaf60fd182f9680ff3f3759bc983b9edeb5ddc8b2d98c454b3", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "65a39109e3fdbd4fcd7839b4ed10ce0387aa69a7c576798019467f429179c41e", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "95cea0768266b23bdfb6162a899823a2b2c17de16cd9cc9594198ad4a90fef7f", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "87c9a50fcb04a64d6bb35514776c839332a264ece3e809fa516d07b4b021192d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "87c9a50fcb04a64d6bb35514776c839332a264ece3e809fa516d07b4b021192d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "bf4b59061ae3f66ad9600b1de8524927b4b58b57c2bab11f4e598f2261193812", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "f849dc5e45b4397c5c6457ba9e051c3e8199a6dad54a8a117140ae7bdfbf8e57", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "f42bac4b396417087bc0b0817364d9ef7e2b549eb98598fdb8914c5dcee05baa", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "a60b64f9f19af625b35154d2e74e76cf54b20ff55208d29591af433f7cb9f170", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "fe6c5df8d9c9ec27f617fe9ae4971901751db98bc2e3d4a58147635a47c70df9", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "59432a880fee1d9e5e02c90324d2031172c2f7aec90f59c8f0da9b26f49facaa", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "59432a880fee1d9e5e02c90324d2031172c2f7aec90f59c8f0da9b26f49facaa", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "2ae6010533497ec20c28fe08f00957b471b4ce47237e3a22316a600e71658245", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "59432a880fee1d9e5e02c90324d2031172c2f7aec90f59c8f0da9b26f49facaa", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "87c9a50fcb04a64d6bb35514776c839332a264ece3e809fa516d07b4b021192d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "87c9a50fcb04a64d6bb35514776c839332a264ece3e809fa516d07b4b021192d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "ee1aa4d5b3be40fac02d95678afacfb6b5a74badd005ec440ac642eb30b89bd7", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "d9641b738d100e1b28a80f665c38a88aaeaa7691ebb33810d53a7be5eaca8532", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "f627eabd9f9a6f4a195ed277ed9d4da3f623472291a3f4e6d86c4ca381f711fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "2b437de6b99b1cc52aee59757f5e5cf3213f2a69598e83e328e1db8cf5bb61fd", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "7dc2314e0300ea316e04d055899aa6d60f130f758d2438b8635518271f51249c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "30c385b42b0342e52c9337af24fcd1a8ba2812b465a508c1b14dfaea70001cae", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "e3bdef9cc50315b495c0ac1d55265c23aa44bbebd249af8d929ee385373a5d04", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "4e177d3ae46923d1d5851c21e0d02c8f3b07eb5e979ce63b4a155a9b052a488e", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "6d5454e1f938cf6cb229fd7f5c696d75ea76c138ad7fbc385583c8a63c6a52fc", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "50ecb6c42e48c556cc6eb72d8e875f7cc7b10a4af8c080d3795722b1c4fcddc2", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "25a332843cd1a5eb75156bf611567354ae1f7e6de598fdf76d1b5975285e7dae", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "c3c80d96533292a65c9c89c12a3e7765ecf3896e2b7fc9b09b33b805dcc6839c", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "009d89d96706b6a4c501c1143db04f0e2c938ea9cfca6e39d832cdfb9a95fdb3", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "fff7c8b240ccef736397a7161eeb88a21f990f751892df4f6dbf5f70f1f1f1e1", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "353dbc3e36647bfec55020d1849d2709db9754af4221538d90eccc05466a2d0e", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "5ac8512da6868177613c764d11e43f17afbd92f50ebdb2f64de34d8aecc1bb69", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "6e2e893be097d771cf78b45c292683d2c2e49bc864adf063ad4fc0f32337b39d", +"TR_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "4c663784550e046aceef17624e71c9724f06c17a4d2b0a9bdd52a92196621a8b", +"TR_es_ethereum-test_definitions.py::test_builtin": "d054e5bec3415eff419fd9d597ee579f18cf85a3ba757059e7f52c08112f4787", +"TR_es_ethereum-test_definitions.py::test_builtin_token": "edb58181c3578fd82d299025e390936fc769d333cd76e9ce8dc0422546b95036", +"TR_es_ethereum-test_definitions.py::test_chain_id_allowed": "516e9d3e4ddc61268c305e8282c201c35079868773d979e36e132f60de17f096", +"TR_es_ethereum-test_definitions.py::test_chain_id_mismatch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "4dbb551c4eb291dd1e743b4d3184436c628208117e285d24ba0249355ed33689", +"TR_es_ethereum-test_definitions.py::test_external_chain_token_ok": "534a2ad0989e28facbabf8e68b4b7f006889bd3d817e8945f92bc678fb623d0b", +"TR_es_ethereum-test_definitions.py::test_external_chain_without_token": "7962fef5ca786e6439450a5771fe3026f2d61650681d8904f15f6eb2c9002132", +"TR_es_ethereum-test_definitions.py::test_external_token": "879342f6dbf567bcadcf77806c313c965cf1d85b9f4d183d8bd982b4425542e2", +"TR_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "c637d82878dd618b81bf7f700703e3afc948fd70ba3de2467e81afd7d82d6335", +"TR_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "39492dcc1aff224626356303a5ce372c6c1f4a5ce00f1ffde430a8f1545dab60", +"TR_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "ea689c7656723d31ace9920ce1e3a3fd6d3628364369f22b4f5ac82431dc784c", +"TR_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "8e7cdf091c60bbbb92a3fcc294fb99d5909d85876fd8e4df463a00430afba454", +"TR_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_slip44_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions.py::test_slip44_external": "0a9795c682a92e6fe16610529dd69ce74e0ebb39edcb13668d8ad49851ab7718", +"TR_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_bad_prefix": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_bad_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_bad_type": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_mangled_payload": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_mangled_signature": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_missing_signature": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_outdated": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_short_message": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "f1a7ca5fa3c4e3910e1c38e42fa1bb28bf49d72c49428edc5ebd636124a18392", +"TR_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "03e6a4b4704a2c5c1d7afc5feb747c7a28694e265e85f17cc5a0620a165d4fb3", +"TR_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "a98be46d16ecb2e6076713a436895d1508dea2c50dd0ec5c7dfbccabde1dcf2c", +"TR_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "4d99552edb0226b5924bd82badc94d738421997848761857b34998065e3c47b4", +"TR_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "fbaa40fa3b16f44930e13d384172907598c2fbaafa200da646a5e4c0b2785ece", +"TR_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "23ae828b4fb7ba8518ba26d9ce77e969eebd4d2b41f26ae562f101fe1fbce44a", +"TR_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "88c3a489cb31c0a55397237fa296068c8cf2e8b265d20ddc18de20121f49c5a4", +"TR_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "d996682bd3e552bd18c87b3d0bd3e1db8852f57b6f8ee7be9144595f2d47fa91", +"TR_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "6a5b086e111265360a1131a574298fc27e8494a5f58336c09667954df669db53", +"TR_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "035add4915d9e07c8600e3aca1ae57ae66d8daf46decd8120af8af18d44eee53", +"TR_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "99dbe824c2acdad926701f3a00667f1515df1ba352e00563b223f19ab9b404a0", +"TR_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "0d5776c9bbad66343c695627db54368936a635a02b7b3bb1d5ca3e4b08b38761", +"TR_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"TR_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"TR_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"TR_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"TR_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e25d844d6c63ccb37e6574b66e8a05db42d04daaf199db82edbed66fc39cc94f", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "4523525b36d7cc6d616d2bd0ad5ad0919ab0e14bf214e83a21bfa3fc1431cec4", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "cf0ef80ab39b07033e66f56de95ce78d5d7eeab30f9340f997f36fab3b4dd866", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "bb9a6149f6d8ac748220366d137e907ec832d12246f6f9df02d54e1d45017f63", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "85cce89d0b86998b8b0dddfc162550e4147aa975be9d47a63f7b8fbc68748b61", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e8aca88ca16a2e80481e5f62dcab1dfb4fdd2fe8db77ba9536788fa9a42256ea", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "cf0ef80ab39b07033e66f56de95ce78d5d7eeab30f9340f997f36fab3b4dd866", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "cf0ef80ab39b07033e66f56de95ce78d5d7eeab30f9340f997f36fab3b4dd866", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "cf0ef80ab39b07033e66f56de95ce78d5d7eeab30f9340f997f36fab3b4dd866", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "0e1b2ba095230d7e4105cf27a4d24d4f730acf071b314fbf20a07fe3645c89d3", +"TR_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "2f0a06d202ea938677391f722335d1c0f057f4ce79ce363dda7fc78029d74770", +"TR_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "e36cbcae20413e0db94717139034ec266ad4c5624d3d164c7cbd7240f43e9b9b", +"TR_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "a38cff651b1ee320713473379909a63b1308b611322620b5d78f2bc1cd876fe1", +"TR_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "6fc989d200271b4f64ad2fafdf6ba3ac949bf95674d38e8638d0b1ca2ac38db2", +"TR_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "a2bc3a113ed03abcd58d9ee8c80a06f89cf9a290a40d6451cea811b230b2b246", +"TR_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "39949c2e45a3ccc3331c73ca8952bc6dca8c90db48c6fe9a9d280f127a004648", +"TR_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "741018d3dce19a4a87a39e2882617e741c953babaf11c078145e5092b6d97be0", +"TR_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "1c9603e637fc25d170ffc5f73687e43385eed88cb71175e09aa2a387d683cbcf", +"TR_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "1b9373856c2c9fbc313588c2c5ad72e27f4cb586d03842fb269fcf0e7cdb1a1a", +"TR_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "d8493246e2625728c4251e54cd9c35ae08695d935f2e0bb5d6c8db4221194fca", +"TR_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "9c70f978c7a1f3c622934594746f55a2a3ef85f40883170e4ca6c4470c331045", +"TR_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "7a7f74d050a3cac27502b7ef9a27271834b43da565e25c1c28a4fa6ad9ea5091", +"TR_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "85de7466d3d8b574f07c6a7abf8a6999ba84b4c9988c293aaf80405c5a69b73b", +"TR_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "b64a5e09b9650b72eb2325f67319a43db5f54a6b46364404a6907d158ff93765", +"TR_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "f207938a02c5fdcb46663f05a9263df999e677fbc4ee76bd1258c07d4ef642d6", +"TR_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "d10e14c95d56481d458bc1695f456ef8ef1396044eb5f0f5baf34c0d25d09218", +"TR_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "4d1490665fda4206438c3970e839bef303e5730eb7969668d3d00005def8aad8", +"TR_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "103a1ab885be6bab79ceec7d21c46a9206b7a3a65718a506351e7e8ae2147ec8", +"TR_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "9c70f978c7a1f3c622934594746f55a2a3ef85f40883170e4ca6c4470c331045", +"TR_es_ethereum-test_signtx.py::test_data_streaming": "181aec6874756c645fb90727fdb857718359510b80279e6000d807ed6086f29d", +"TR_es_ethereum-test_signtx.py::test_sanity_checks": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "4c46f274d22192b91d80fa8522a2f81504a42467daa241e345ef9a002622ad02", +"TR_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "067247597dd64700a94a9f252109ccf3ad10a9e38c881f2c2bb1d23533809d14", +"TR_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "39c79abc9e85e1a5fba514577f5a8bdf66871a4e5ec758f7905c35b3dc78d43f", +"TR_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "9ff603835d48bd38e98fe95d1c68949c2c2800fc323cdafd13f7c66125d5b227", +"TR_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "39c79abc9e85e1a5fba514577f5a8bdf66871a4e5ec758f7905c35b3dc78d43f", +"TR_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "4c46f274d22192b91d80fa8522a2f81504a42467daa241e345ef9a002622ad02", +"TR_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "4c46f274d22192b91d80fa8522a2f81504a42467daa241e345ef9a002622ad02", +"TR_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "fc832748d74832447badb2d6b30e2f19fdbfee683a90e663f2e1b6c478a0c29a", +"TR_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "fc832748d74832447badb2d6b30e2f19fdbfee683a90e663f2e1b6c478a0c29a", +"TR_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "4c46f274d22192b91d80fa8522a2f81504a42467daa241e345ef9a002622ad02", +"TR_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "4c46f274d22192b91d80fa8522a2f81504a42467daa241e345ef9a002622ad02", +"TR_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "beaa1bc4fe30092a923b7b62cf9ee57370a6f2e0026e6801a8fa2f630c7bc745", +"TR_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "37a3d2d837d04d5608fe15f1bddec33c54b4653900e9c2fab3b4dd199eb792db", +"TR_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "148b8fce78d171e9dfff7cd3c1ec6537e28e81c920a8e1155f59d38527dc3a84", +"TR_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "4c46f274d22192b91d80fa8522a2f81504a42467daa241e345ef9a002622ad02", +"TR_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "4c46f274d22192b91d80fa8522a2f81504a42467daa241e345ef9a002622ad02", +"TR_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "4c46f274d22192b91d80fa8522a2f81504a42467daa241e345ef9a002622ad02", +"TR_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c36e6b9c3fc822dd23e46261d2c5d847dd2b822d577a26e667ba82e8c1e29954", +"TR_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "d9a4d471e72afa3f2d1292ab4b555b881056e52bbc550f9bd883cabfe1a0327f", +"TR_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "28f527c0159be23686da41d4ba7370163a45496c32ee9f7f4bc7e26ee858b33a", +"TR_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "bb3a6fef54e4a0f1add8cbb39305e781c8a747fb194e01ac5245cf743b747734", +"TR_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "f0caae377fac3d153e0782ada74b82009bc6c61b11a4bd8c31c1168c884b0c08", +"TR_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "bf6aa59be5b302ef53b96b895d45840021c1c413e37726b984f1dc98a04f89f0", +"TR_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "e8c6b33bdabae58122dcd119c9a1d50037a38109fb2d7f28b355093223fbe948", +"TR_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1d3bd0a68aab39a470bcd01fcb3aee6a6ce9e45fe799acd90d960e819d13f219", +"TR_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "e8c6b33bdabae58122dcd119c9a1d50037a38109fb2d7f28b355093223fbe948", +"TR_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "f0caae377fac3d153e0782ada74b82009bc6c61b11a4bd8c31c1168c884b0c08", +"TR_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "f0caae377fac3d153e0782ada74b82009bc6c61b11a4bd8c31c1168c884b0c08", +"TR_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "a03e5ba5c0373197e86c95fb01122070db6db53534268ead402851a8d1b5ef64", +"TR_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "a03e5ba5c0373197e86c95fb01122070db6db53534268ead402851a8d1b5ef64", +"TR_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "f0caae377fac3d153e0782ada74b82009bc6c61b11a4bd8c31c1168c884b0c08", +"TR_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "f0caae377fac3d153e0782ada74b82009bc6c61b11a4bd8c31c1168c884b0c08", +"TR_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "97f845b6f6e9181cbb45d3dfa1a688f6fabcbe2bf5e4c5579cfd9ef26b624a03", +"TR_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "146ffa5752ef048d69b6194deb5be92e44b30953ccf74ea7d66f2aaeeab60658", +"TR_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "d755be0545379ed0fbd604b8cc862c1a327516fb8733fab4a3c6bf669794695b", +"TR_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "f0caae377fac3d153e0782ada74b82009bc6c61b11a4bd8c31c1168c884b0c08", +"TR_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "f0caae377fac3d153e0782ada74b82009bc6c61b11a4bd8c31c1168c884b0c08", +"TR_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "f0caae377fac3d153e0782ada74b82009bc6c61b11a4bd8c31c1168c884b0c08", +"TR_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c36e6b9c3fc822dd23e46261d2c5d847dd2b822d577a26e667ba82e8c1e29954", +"TR_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "0309683953f5cb4dddc79bc7f9aba3019a2d0222d3cb8e50b9d33b4cc37c549d", +"TR_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "144a0a0517eadf30b27307d36d646551dcbc16b43f6fc60d0a7a2eed1bacc632", +"TR_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "7f0da0bcf98fb71225805664410e6e2af7338aba55ac7ccd0626f192e0d6cf3d", +"TR_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "9e9966ff991e839313e246008ed07c2462efc60eb3eff9a2b1c285f80e28bea4", +"TR_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "3ce00632e442221068e25f433666407d863ea6fda40a203738c9cab99ba915e6", +"TR_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "8aae26113003103edf84a0103e2c9a5f74f53d000dac7fd0e56d062945fa4ad2", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "45ae379b1d2e4704cf3cda5541c3077cbadd4a97d0c0f6dfd3436c3b7193eba3", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "f0f1e49171bcce36e09026a1a46f6598785faecc24405ba57ffafda4fe9c985c", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "b467f93e1e4b256df0b0dc1931c3b959b5c011f8dbd0412bebb6d42b194a0a57", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a63c6452766e39cf732335cc3b4bc83a297156a3d58635987536549567209edc", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "8e5cc03ff589d6066515ecb9b0af62424232727201df1a8d2216665673af673c", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "02a130c8020388ea2b851688e175b82db8cd16032af7daba233d588b91c8c180", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "45ae379b1d2e4704cf3cda5541c3077cbadd4a97d0c0f6dfd3436c3b7193eba3", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b414002b4daf62dbaee9b3e33132b942f2a46003377abe14b5602ceadcfb2712", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "d5ac64ea8e2d8e171a2a70ead492b255e0ade608df37c3ee713d87f7d247720e", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "b50ce0ec587d7e1e06f695969504ea4ecba8e8d9fdcba140f0e9b37d6ab50aff", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "ab1bb090e82764d0f9ed6adbab4f923dc7892f1787117494d13a2a1123e23c2d", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "7c3a0fe7c270f9b072228ce567a9b8ea91527ef9867ca68c3b8fd7c0b38ac405", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "f92421a85f83fb12015c86ece05b265166321f06813fd7309deb5f740e054f51", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b414002b4daf62dbaee9b3e33132b942f2a46003377abe14b5602ceadcfb2712", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "65eb96b676c582dd5c676ee6b76c0d449b9dcc297647b154cdb6ddb37ed81464", +"TR_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "65eb96b676c582dd5c676ee6b76c0d449b9dcc297647b154cdb6ddb37ed81464", +"TR_es_ethereum-test_signtx.py::test_signtx_fee_info": "b7f42cff21524da87b3b62f5de99f8f33125ff225b89daeb12c92248cb452b53", +"TR_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "b0b39a1b54af5214edbbd9717910f7d458e19e6f99128106a9f3e59a7b24d481", +"TR_es_misc-test_cosi.py::test_cosi_different_key": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_misc-test_cosi.py::test_cosi_nonce": "297375a2909db93a6a70d01af2dffcf6612dfa0f58fce4caf849f405db3ba6c7", +"TR_es_misc-test_cosi.py::test_cosi_pubkey": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_misc-test_cosi.py::test_cosi_sign1": "297375a2909db93a6a70d01af2dffcf6612dfa0f58fce4caf849f405db3ba6c7", +"TR_es_misc-test_cosi.py::test_cosi_sign2": "bf0374e5e73060d300502b7159d8e29ca0cf75939540bc8958997992e90f59ef", +"TR_es_misc-test_cosi.py::test_cosi_sign3": "44349b414a678b1249d1983f48ad9a5cff715bf9a02452378e7cc763f8178a3d", +"TR_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_misc-test_cosi.py::test_invalid_path[m-1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_misc-test_cosi.py::test_slip26_paths[42-0]": "66debd5310e20b3ebafb611de232aa8a877a40933bbd3ad7bf8b178656fddde0", +"TR_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "f619d0200f2bd9f9652cfd5f44af38f556bf2cbae9f44e41d7702ebfa3682d42", +"TR_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "e1f8f4b820cd41fbdff9a613232058ca47493cbea59ea9cf2cba45f0be0d8874", +"TR_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "c5401f2f026181bdfceb182ebfac9a493f682ba962f34faf199122c61f4554b0", +"TR_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "cf633041c4f959a63d458bd32065e3145c2fb241010ef9c5f317c04645db520f", +"TR_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "c6678e8887db836bfa2bb2c9edc23d137b9cb36398c69a27e2d7e7ba001de762", +"TR_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "cdc5b6880062bab99deafbbf4434a0b780f393f4c8108a45e514123baea84494", +"TR_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "ad2fc983ec78bc38af7d689ed8faeb9a9f1a9474995c74dc76ee0710f06b867e", +"TR_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "5980c0ffcaf2598cfbf19410a131ecd7d6d1f640c3ae4c59c83b4c5cda6a987d", +"TR_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "fd3a8fab9d296448eec77b1d8c5ee5e7d431d5144d17c424646af436d9573288", +"TR_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "49d91056a3228be725cb1740a78a29f5e028225afce080e3ced930c5d8745734", +"TR_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "86b105f3b395bb18d2b4a8f88b21cceef755be5a829ca19408a2c599a3e29340", +"TR_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "2b4a36edbc389280f9f7415044b7a1bfe194ed170646bae4827fdaf6a247892a", +"TR_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "22b0ab714c5b0b5c189edcbe4bed1fef25110128db43b9b46dc8803c1ddae286", +"TR_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "f0ffcfbeae16e6580320d6f85e06fb3226f3defd935a800f9ed37513502c967c", +"TR_es_misc-test_msg_getentropy.py::test_entropy[128]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[129]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[16]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[17]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[1]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[20]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[21]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[256]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[257]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[32]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[33]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[3]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[4]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[512]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[513]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[5]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[64]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[65]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[8]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_getentropy.py::test_entropy[9]": "8db70298af0e564950195c126fab71344bc3e091b0aba28bd93a073b9e857c6f", +"TR_es_misc-test_msg_signidentity.py::test_sign": "8815825d1153ce3df50138c0fc37a8337f2bf87d5f0db72ad29bbed08e544ff7", +"TR_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "32581a0ee085912187d592b67cef1156fc680b15abcf0321609dd70b57f64bf1", +"TR_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "fa9dc5e7e1e02f8f974e740c5d5d3c15b6fe0409001a9b4d48c67bba7571cc73", +"TR_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "5a0dbb81b931faa8d264f82a9552e88aae2a5d3c6c1dab95fc4257e74bdc8855", +"TR_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "bcc81fe46628880bf4bd85aa4c9b65860ba4f5f55a40623b505b46f5b9131a6d", +"TR_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "14da1930af3a4cf71ca433a8ce1cb26f0059364134f948153fcb2c871a4b371f", +"TR_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "6eb7df0aadc2b048b941fc05d67b2f3e7c851433070cd57a0c672e749cd3bafb", +"TR_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "1e7ad6312477aba4f8854208ddbc028d09fb3cda6e80a80af0e7ef9282739e7e", +"TR_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "c3fcc51e7b8ecb56e530bfa537fd96ad2520a7a894f47265a60f7aee90ebedda", +"TR_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "a2b17ed89ca8aa3037a9ea1325229a3a5df0d6b4ec67ce14d560c2624a126a78", +"TR_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "0c24e34280874405e41df8dabdfbe7d8d7a559ac901a3502e78153bf5654f85f", +"TR_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"TR_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "5f9690fbaca0a183b42cde74fcd2570487c2ee2cdcdd8e1d243825172d71ac82", +"TR_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "5b0c2cfd8d8886e2fee3ccd3090f0037db744155fbe2f70a769e550a4d1f283d", +"TR_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "6e82e27acb7a63eedc960b67f47774e74ea5873c4d9e9d4dbe6291eaf156cd9d", +"TR_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "9102ea0936682d2371883e61cf8a11496dd3c1b206911d706af63ac6698c0b8f", +"TR_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "f147de798b68cc2d5c65487c1f052691251265a1e82417957eab9fbe2aa73352", +"TR_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "14d79d1fd99ada5b8db3099c84dd6658de516658e873612a1167c6cf9c566a45", +"TR_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e91a510d744f1a353926060a48e0de2d253e5a3c844fa45350150e047e4b40b6", +"TR_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9f75e5f375f137c8227e61899a4d74ff16824de449b46607236d0ef91560aef9", +"TR_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "7340e003282eee780a8021e5acf6c773febc039380a0963f0a6ac18b31006475", +"TR_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "9f75e5f375f137c8227e61899a4d74ff16824de449b46607236d0ef91560aef9", +"TR_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "7340e003282eee780a8021e5acf6c773febc039380a0963f0a6ac18b31006475", +"TR_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "837dabab1a687514540b4ae571f9393a3375aa59e0590323e72aab231c4d9b31", +"TR_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "61249d437c09c2c18402da8d1c3adf84a304340995b3de7baea54e79913ddd19", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9a04113b817c7d74d13ccf420f3036ffee71e2c495fdb0c2dd64922a81492441", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "6e82e27acb7a63eedc960b67f47774e74ea5873c4d9e9d4dbe6291eaf156cd9d", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "9f361e4c7ff96f2182371fd6128209f8e55df4eefd0fc076c7fd35e2f58a5a8b", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "01687c0ba29f942d8c3e3907f6e13749ed3735b1200f2bc5bcbd88bf0dd294a4", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "e904c74e0251bf1d571db5d6a9338dfd199710d4f9e27c9df71098c14c9c56e8", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "155903c52623aba155b23d43676fe4ffa4621f3c296a7f3750b7572cb27542c8", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "c0725592b3e4ffac74471cf6491fdbc46610cd289d95ae38dcf7712eaf6a51a7", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "44b479f9ccda0877fc3001ffda824a1ffba4b003d8a1b5070b2308af4b20f5bc", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "d9448b56af8d4d4b466ad8b6f514f1dfc7bc9150de9e550dc28ad29eaec96bee", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0b82f93f099facbae426236dcedc058ba7178829f3cb2701fa5997c9247ce80f", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "39adae2bc0d920d9bd7d4c71c1d1aae1588f7cda590e7160423d7566b51742da", +"TR_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ecb3d356ef9735003063a96690fb56ad641085072cf323360c4e2fc51dc0753d", +"TR_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "4c427b2fcaf956fcafa6dd48f3d58793ab4a7f5d7f3b3ae5ab467cb4b3b03cbf", +"TR_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "93b7754ba67c15534befca2c6f4450245e3f08d492b8dcb590f8cfb1967b23ff", +"TR_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dd861fc8efc9c63b45a458ea833dec3c07ff8de2b51d3851c7b1686cafaa38a1", +"TR_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "c4b4764642774194bd3a24fcdf28168fd97eb0ed4804bc8dfcdedc0ebfdb2425", +"TR_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "3ddd59fc4ce1a467450ed57f556fb43a2fb53dbd38858cefcc015b059a7006b0", +"TR_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "76e616814819562ec256c345ad4aac735db9355de865f8924742d9354e8bd019", +"TR_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "776f8022a099a0de70b1364db318c9ef89ae5e122735608dd01a94306089da19", +"TR_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "56e0044082760c4182c5c2804f73f83bbe35e65daf4c45863900dd2d1e4634e7", +"TR_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a7875261b0855e128950f81c5301807eab645138f1932194d39fb720497a8577", +"TR_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "05dba9c7a0469b742b796e2ea19be06e088607e73ec30ec6ead0839b4ac5793b", +"TR_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "102fb96f3b94277dd63f4a6da8f6f2a133429106135abc0afdcbcbc1429e1e75", +"TR_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e5dbd4c85df72982e063216ac62c8bdd89b1df971a8308a2c47829bdb77f2ca0", +"TR_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3a184e5b9a65f7e59806eafc7db62c8574e5412464962f10d66f878eb4d7662f", +"TR_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "cc827ab292b6689ac425e091541fb91bdf9337f95b7c2e32daf7b30df9a3218f", +"TR_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7a4a18fd46327417e3311cf482d0f0e48e097db3226bcd1850972c424b9538a5", +"TR_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b19053c2b79c7d9e0093f83cbda9641d467ffd9561eda18f12e6a44b4dedf778", +"TR_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ac1516171340ecc874c90a61ccf52a6e5418c12c20576d342b7dd694817c54f8", +"TR_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a229214fc4cce51a2fd30366283b12da3f784b216c98f6a7c309307c6de70f06", +"TR_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "57c202cd29218aeaefa946a58ff7f242677859e3399cf54bfe35e227fc573bf6", +"TR_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "d86943850d6407822dfb35617004495f80d71d4fbdc77158b1c8d82918675b2f", +"TR_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a88d4be4d9493b22342f2b9ed1c603ff958d89180dbef22b0c208833f4831e00", +"TR_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5e03ad60cc8453b97b7dd514babc0dc384946295490beeb4c273e3a84ac14ae0", +"TR_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "6e8dce08f5564dfe23ada3346c6e9ec8b15f2775225ee05611601a19d54df7c8", +"TR_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "61ab982dd3e4563498d68382343e5e8bab4af4bdac9d12296d02708e06277c5f", +"TR_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "0cfe7f0754ab4180d8323b2b11b510035d1b35e41acaee36b9ccd61309bd0d2a", +"TR_es_ripple-test_get_address.py::test_ripple_get_address_other": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "332179338d63306e0d2c75c668c518fe76f9faf651496e52832b4ce3478d1d6a", +"TR_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "0eefa512bf62f56aceed320deed09a8104d9bf5cc8cecbd251bd6e4f150636d1", +"TR_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "59e288c1dd0bde5875ed3bab1369d0ab33e7cea11920a48be7c78914672d5e64", +"TR_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c49dbe51023f65e0d58c2fc85d58bdc1ab1e82aaa1932382e14d8ffadfa3f0f0", +"TR_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "eb5f585d74c3926c2191ea5b4de196b2c57740c88a5c27c5763ad9b8fe293217", +"TR_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "bce9611e1425fbc8e0b1ef9fcaf48b8f38d2f8f795bb309a86a0c1159d82625a", +"TR_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "3605a7c963961e3439854accfe5d33c75947811b65db43f85758bcd5658f6df1", +"TR_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "488ca3c784a71c7e24941267627d7ab20a9a78a827f9f20bcf1f1948986ef6aa", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "73ae310e33c07b428c39fc8f358aadfe83baff2c2186b011487d940295db63d5", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "6d945fd897a23321486df52c15457563489eda2aab4e30f2eaa915d0830d7486", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "723085c5145198c216a3e791a843a6e4ddc1f9c783d2a8e73af081c9f5598a9a", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "447f8e0c7d8fbd3700480e2bdeb6eb7d44e8458a483f99980ed6f8e0345b38d4", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "108bdade359b31a3449d7d3b30f8c66110ed9400fbd4b1e3498a0e579827f882", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "769353d4429edae92cd99b26837fad042a3360f8a8887036f96320fb48d62364", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "f29affb7d7ff21d76a1566bd1842e48db7c18f1dd57c7e739707132622266a8c", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "f6aa66d254f1fc8ea583407940a01035cf203fc510cba8fdbdadcd8ab370cf88", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "97176cdcbd0462b446783dce2a60ded45a186b203c5be72ad09efb709359fb1f", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "a405823edcdba1eaf80fa2bf593b32c9c3584dc342bc0c4f9384d5325b44cde6", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "0da82dddba6ba85cc667f087b9ca9aa274589e97c01b263b9d830728dc70d166", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "4cb2864d6b5ced408f0819c6e3275eabd7415d0970e0b6b9f0fd5c1c8e441191", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "c4c15ea38bb76130c40ec6eb58314cdc1db7c53b5b0f3afb450166a31659b3ae", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "0a96f69a0cd824b600b4835700ee359509f6b7139ac518568c894351c8aba47a", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "c81c5242e2c642d996b6d58821aa6fbb3b8ac185cad4a6b88abe1ce8fec0acde", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "f9d62c7fe58ee5af4e7f698d0ce9875918e29708dcbaccf507d75c685bdb14d6", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "d273d141720735891b0b5edc1d8669ab9b0ff99f3872e0447d8763b7881fa6b5", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f68fb97d9b577a512343d2ec570c1137fbd79b57f8e2d0d21f6a571f28481a19", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "75fb3e1d08f7c40f69bdc0b36682bce2daed80127c7b9076390fd0554562f6fa", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "73d26c5225dccf3e794030f910080eab4911dbac2841efaa5c3409919edee639", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "3752991aedc24917144d87442db56f5906e8cb463b3e15a68e70b3d6d8141cf7", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3752991aedc24917144d87442db56f5906e8cb463b3e15a68e70b3d6d8141cf7", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "a6d9c0ef280fce2a0eb1305b0fcb4018b29a2634d04bb0ec061dccfa86fee46f", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "cdf12c3c4da25a1389ef58aab0bac94864c7a426dd2d4cf9d2f0071961e3f55e", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "a082577650d4ddfe8792d815e973b316b6e754c1aaffa7f371554d08e7a5b0e6", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "ac7bee6f0aba4f26c4a757879e6609ffcad8a9c22794cebc775a2628d92dc39a", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "bdc780d61d30230997ce64b19a59f0bac24e6ee8d6c25a578b25b82ab4d0585c", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "534efd8a083ed753973e62c1a395691f002ca01206bcbb845ae93f3114c608b8", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "61e7b066c79c99b8948c84a6334a5093547e28091b0134bde663c6d2ea83b0a4", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "e41f935b65abe4de31c052115cf5fd249ac067bffdae6f6b2c75dca026a07084", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "79c8d2f875b374721f197239e46cd1fd58ae15b7c0913358f42a6ecd48584eee", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "d280e244a09ca3f728a3e4980dbb46a7da24ff64023e8769751aab4f07d11b3a", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "32d396c184c469402577069ae556b7ab02812d6fe352783e7dc9c8b641b79f8a", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "6f25c3235f2f1ba4d28aedb527de4d337d4d46cf9a2408f5bb668ab5324f5281", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "60c0e92b1d1a31d3c3eb7a063390c57be826ef6031379d6f27c8920c56d86dce", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "60c0e92b1d1a31d3c3eb7a063390c57be826ef6031379d6f27c8920c56d86dce", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "91dc8355255fe9d87da82dfbf90b6e45c70d423fa8e1e2f190c3997a9f792fce", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "c26d6ca0ed802c4a282b48982ce39d1a05846f5ced2ae40de58e42cd71b569b0", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "c656ab17026e712538902daa5642c4f1f103624ea89479de0409aade9ae9fa07", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "e5cab91d15b25c73cb25b7a2a9815fd1aa4bca7ebf6ee54b439eb5c36bde4420", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "b7e945d54b27979e87e308d48181dc3ee1a4ccf0756f4d52742c9b9bb72255ba", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "4ee804324e608addd2c8def8297f914b053c914e2173212c433f635eb63725e0", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "d00dfb5b181fd7e55b86eca57bc4367829673eee90862dabd5fe7ebf8e07b5d8", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "47fa829cef86100e08546b47383290300e211d6acb02c88a0826139567b44676", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "077570e3bbb4e70ffe43c72e1f52cfe5f32f5893ab0afa85e4294a08b0203be3", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "7a3110f8f08b190d0708be45e055278fc48b4a74da383c93ca4536ac6c68b6da", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "9461ec600a7c8ac9c5531a471695d4fd6df32a58e32b5333b9fa2ff41c0c9f2f", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "d226226921ff7091a4eb30c3e9dba3d9ac7eda414a87e27e21c012a366d58621", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "327e055cb9c4181397a39cd587e2158cb21641a1d20640cfe4ac6724f5e3a1df", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ed3ec84b407b8836570d39c5330ac578a573d3f9c68b1a59cf6a296463590443", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "e1140a1f1dec277f0e6481529b7a00ff036005f8c8adddb3255f959a0a20df5c", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "6718799a76e6fa6b2d481f79f64b6b675580b1c880302c3e5ab27fc4b4d28e8a", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "223df8f5b27e83ae75bb32a688665da4d663b183f0be3b70be89fc6f8718f8bc", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "bf11455ce29eeb5ce3279823a572b8a257a4f3cb94efa17dcef3a4e4aa5cca7e", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "b246165ba4898168063efda902b6674ed3a2248d83e3141c911782d774d9aca3", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "00434cc472e24dbbf7ef12a786de091ef4be5c1b6e1c05481ccd338220efeacd", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "760b77c66fef8f6fcac79c0cd4d7d9f25a27d0d0730a514a8039915ff367791e", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "3397698a373b2af07e4e9b6aa1e292c6ef22c3b7e2b49cde3bfa8bffca397887", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "e01b87348451e03641ae8d507bb8f9a423eb960550576b614e7a697c939a70f5", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "97730cd73f50daeb572b3bfe5cbff14d6634d383c2e16e8379c9ea52b1d40cc1", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "21ce982a21829e000ea08094b7faff7753767c4554dc3ae1877b039aaea85a86", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "c214786544acc8e43c16509327ac6bc010bef92235e7f838d68e99a679c16032", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "94ca91930585d1716ad48394ec1b43e482f207219bb30124d5b63db194c9b712", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "2b27d9c8f635b50582c0a288a79bf03e797330625f5cfaafe62af34b07332fde", +"TR_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "a8dcd5c77303e42fe778715794be00aa54c439041541f596ff755ca5be765108", +"TR_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "76ea6d1ab77a704f84c543626c65167d27784a7bad4c22454a7e10eddf9bf579", +"TR_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "c897783fdd9f77adff8dcc69177c4863acbce2c26821dd067fd807c9de4d8665", +"TR_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "bdfa575915159b3db41c5ccd0befbd816c7ab1e8d7f7a2e49bcd945618c74544", +"TR_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "c30fe26c36d18e162bfc7f169f347b25faed782eb3398aa972de7e1096607191", +"TR_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "55471f835530733edea0644442764624e26765d9d17ee217a9d7e67ba3440d54", +"TR_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "d2ae14609cd01a95cc2d70fd987aaa07e8ae8ccf907589ca65299f397c8c917c", +"TR_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "00658901f5ee237b22e5878993f2671c26d5ba82c31dc7b61d002f1f4a0e7f43", +"TR_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "4e8279c16906ed53513b88bbb67a2beecd5b20f35359435cba728ec1a9883cb8", +"TR_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "78abb7786252836e6efa41fee89efe74dab0136bb6e1d047543c391b85b19d2c", +"TR_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "b931ac50ac979f1b52da4f1b5df8864531cdd02a50d1fca28f930d5420c519d2", +"TR_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "9af50c0bd97ba11fc2eec572869503f5d9cd968d9746bcc8f0ce42365432b78b", +"TR_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0be300fc47cc683a33f46482213e64e2601f38fbb29a3151fa52fc7fe5850695", +"TR_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "7b53c34361cff4ded407362a53765d583fca8c812829ddd8c67fb06e24970d03", +"TR_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "a895c1a420e9020f5b359a3c9a2120347c595c4b1deefac255c3110734485fb2", +"TR_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "c325e0d1cdca0aa18e40bb7f1b7b259eb31525a6ae45d33838f36177c727d3e1", +"TR_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "b6bf2d5a7dd087ec799af1b7263db4bf28d0bf24304a9a6f325add154ac17699", +"TR_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "7bb72c32a35a3c1379646012d2662dd0b1d884c2e2af35547a88465bd1006a22", +"TR_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "b26cb11289908cfcbbbf09b8ebbed2b8cb10d0b240087ce6d914fc127c71fc0c", +"TR_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "147fff0af1aff2f12de0bca2b758b05547e2a6f6a59e868c69326194bd672b26", +"TR_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "e14f0a124cb426389b141a37f0a08c15ea50b676939101d202cb9f26a0b5d634", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "f89df74457e5b8d335b41e1c1c9a495bdf74f03e2be967544a69b7fdfa562e44", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "ff93839cdf9267fab1de5c2b4d01df4abd574748745b2e68086a95233a102ad8", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "5d18f46a53c39cc595f4e416bb5a72bad5e4ed58ea9d798819db2511a1a3e261", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "a406de548c80e373c73e8c0f8ecc6ee0d5699419d51fe505a7186a41a820e6a3", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "d0f3a2984d3fe1114f50a69610ee4c711d593f720933e58f4f6012314a2cd52b", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "116dcc690a27f56d8136d5470119ccf99e5a03f7d45b1c5e36f3af8c274b5834", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "e76403f2e537af120a95648c01588226a756e203f351fd516f12cf82beede41b", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "caca036041ef12af9edcd1582cd9f9e2a6baa119fd2b3b6ed8fb8b8d2c2cef66", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "e41ebb45992d599f06e344ca128c4c07ae80e81365da3e208ab8e6d80283d440", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "99cb62717f4572b93809b6382136a3938c8f89364f8e7d991a67a4c335907af2", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "2304e187401aa54b84844c77857f58406f503a8931a1f78a984200d7475998cc", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "ddc8b64eb5583780c6dfc93821cb6b2947d99c73e7cc47de59ad7acb01bca45d", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "e60f9bd370bfeb0016bedeafbbc4cc38212de0e52f35384823ca72519ebdd77e", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "2f0807721eab7b4ef94779b8d2760dba9a07d732dd1b71fb55340fa2d8e3e602", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "84fa7651e4590830cc997a66fc0956b7b41a3252fb37b4083dcb8249b8c9f016", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "e65bd4fc5e88b0cf7092e7019ae3ac6cd870acd0afa857f7ae80879f3648c162", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "11c482211d4228c576de0f1c92994273c7f309208f00afe4f6b29191198559b7", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "4959c9abfff6e6b86c126d1380d5a2232e01d9baa6e85e90d7d53f0ac344c3df", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "1f1ecee2ef09d0117483340af3876c52c20312b32a2ab8b0e1f6269c1755f095", +"TR_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "26376312e9849698189b55e5121d2161e6ce14d83b25cb9d5a31c2e9e7139cd9", +"TR_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "245937f363e5865f23f5ba0f266e1bb1f0ae1853fddaae7ac6a0cd97999ec95a", +"TR_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "2d06ec81440d2aefc59af53550528061a122c74fe4970b9d960513bf3254e9ca", +"TR_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "91c9b0d98e865625697e531fa5eb1cfb75853b458e95061c4b2b4cfa0173687c", +"TR_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "0b3391f8c860b1de375a8c593dcd5f375e4a9973aff2c159493d0e5ac602c8f7", +"TR_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "8da564bb0060c7625b914bad2eec146726020750d9fbf5e2f4168e23cbd2f538", +"TR_es_stellar-test_stellar.py::test_sign_tx[source_account]": "efaa9e457a882250a01f381f7966cae73a1d8529b3e15cfe527827fcbbe30b52", +"TR_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "3b29f7449943dc6c8288f086dc0b372149e42b3bcbcc9654124ec42ff8099887", +"TR_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "5984e9434b19f1c8b21735e218263e2bf6ec14cc8fa7212dcbd74ac8ad708907", +"TR_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "6c8d0e5286ee3f54c32980fcebcac8949cc538e241b51d4d7c3135ee30a2ecc1", +"TR_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "11c482211d4228c576de0f1c92994273c7f309208f00afe4f6b29191198559b7", +"TR_es_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "7a01f79fcfd197f4df5bb81d564e1c27a5552686e5cb68a244ece07004130f76", +"TR_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "7a01f79fcfd197f4df5bb81d564e1c27a5552686e5cb68a244ece07004130f76", +"TR_es_test_authenticate_device.py::test_authenticate_device[]": "7a01f79fcfd197f4df5bb81d564e1c27a5552686e5cb68a244ece07004130f76", +"TR_es_test_authenticate_device.py::test_authenticate_device[hello world]": "7a01f79fcfd197f4df5bb81d564e1c27a5552686e5cb68a244ece07004130f76", +"TR_es_test_autolock.py::test_apply_auto_lock_delay": "6724f35fa31a273f2b9ebcea6f6264acbef82d56b2158245ad41b0dafd3621b3", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "1b83cb4075963acb1f0bb4b069ac56f9b31dfbeaefc31f1aa1559461d6b9e7ef", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "1b83cb4075963acb1f0bb4b069ac56f9b31dfbeaefc31f1aa1559461d6b9e7ef", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "1b83cb4075963acb1f0bb4b069ac56f9b31dfbeaefc31f1aa1559461d6b9e7ef", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "1b83cb4075963acb1f0bb4b069ac56f9b31dfbeaefc31f1aa1559461d6b9e7ef", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "1b83cb4075963acb1f0bb4b069ac56f9b31dfbeaefc31f1aa1559461d6b9e7ef", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "aa9825fb1196df402f73a146e2c06ffeb4a4e66fb7c998d1827889779263b30d", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "ea5cbabba6b7937bc1eb35c3a3b4d7acc1af011385f8a5baa0c90990e3556091", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "804d9e7a836240748c184084f1270ae4ce295347367e90869d6b6dd6e4e7bc41", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "4295bcf29a7f2664fe068ae16e084954a73873190a9c72df2a55c2dd4819361e", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "3c669ec66003f6c192ab0a9496a15af0e4b81cca2558515b2220a53dc44a4b1b", +"TR_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "8213148f8a680384433b6273b386d75fdc8a5491b0f687bc6e3d56fb52c128ab", +"TR_es_test_autolock.py::test_autolock_cancels_ui": "7f352612e3fea2f5c84bf155ccc59a67298f48ed15f5ba9caf182b42a96d7433", +"TR_es_test_autolock.py::test_autolock_default_value": "ac9618e402239c1d6e48ba91c1fdf6ebf2c361cf0ff2518d0be4ee66b1f688fe", +"TR_es_test_autolock.py::test_autolock_ignores_getaddress": "7d4d34c145b29f7d8c9d411c2ac9c269d487738a6534355eae268be53bce7cc2", +"TR_es_test_autolock.py::test_autolock_ignores_initialize": "7d4d34c145b29f7d8c9d411c2ac9c269d487738a6534355eae268be53bce7cc2", +"TR_es_test_basic.py::test_device_id_different": "1fa69f36880f3abde22fa279a9e58c76edd9cbd691c9473aae5aee2e3a3a3b67", +"TR_es_test_basic.py::test_device_id_same": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_basic.py::test_features": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_basic.py::test_ping": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_busy_state.py::test_busy_expiry": "c550a9bbdc796a989d6e46a699b8e138c1b87aef7761dbad49ce4977bff27f26", +"TR_es_test_busy_state.py::test_busy_state": "885bdcf601977b24adab4b5efd0c3afd48017c11b632bd4144c12a327972cac8", +"TR_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "8e96c4930ab714170932c16f00e219262048ca1bea57dee0693565668bce4cb6", +"TR_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "8e96c4930ab714170932c16f00e219262048ca1bea57dee0693565668bce4cb6", +"TR_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "8e96c4930ab714170932c16f00e219262048ca1bea57dee0693565668bce4cb6", +"TR_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "8e96c4930ab714170932c16f00e219262048ca1bea57dee0693565668bce4cb6", +"TR_es_test_cancel.py::test_cancel_on_paginated": "33d54ecb77bfd5c59ff785de975ab6b7d4e3aece3439b072bec05be176432861", +"TR_es_test_debuglink.py::test_softlock_instability": "0f6bcca00d7301f5bc33039bb4da8d4e98f67c6853d2cc884347a65aa9f1d607", +"TR_es_test_firmware_hash.py::test_firmware_hash_emu": "42094810a0ea9fbe4372f8381e6a8aea4f9ab996deb0b189e5cccddecd435ce6", +"TR_es_test_firmware_hash.py::test_firmware_hash_hw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_language.py::test_change_language_errors": "f120df47025b9994f183357faef693638360bdb00c8aa6860c7e61865e0a7f92", +"TR_es_test_language.py::test_full_language_change[cs]": "57eb4cb7deca278419f2a5742de168b78fd1011030e58dc9978937bf4d16f553", +"TR_es_test_language.py::test_full_language_change[de]": "f26d51decec8d4ead72aab01d3e1c5c8a3f1324aef3a8d44eb30a34f645b8c22", +"TR_es_test_language.py::test_full_language_change[en]": "34ed14ca3e452e7a9d10ecdd700b0cb244c0db86d2dfe3979a5f14f66a18bb3c", +"TR_es_test_language.py::test_full_language_change[es]": "62395a2abc84e392fe9caa66ec729b9d6c1a383a38a0f57d3317cad17a5060a9", +"TR_es_test_language.py::test_full_language_change[fr]": "7ba8896c0281c1060cb11f29ac1f88de1883b3a217e45cd7c8ba0e8586fe710a", +"TR_es_test_language.py::test_language_is_removed_after_wipe": "96eea4b1049c853b1f35093cfb0d4800d142520be58284eb54257760803c3fd3", +"TR_es_test_language.py::test_translations_renders_on_screen": "4b0244c0ed99f47eec62a04fcba26b1236eab308c7ef51684baacf4f9fb4d784", +"TR_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "c4f6732082ee98768fd58a66d6d7fbf095b9792fbb86b85888b1b52a33106c52", +"TR_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "3f522420c36f82b2f79a292e42ae57502bb0be89453dce71d517d7fec24618ea", +"TR_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "c5599246cad4383bcc6f40fa9491d43483e49485c6cb486f739b350a1f556fd4", +"TR_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "1b83cb4075963acb1f0bb4b069ac56f9b31dfbeaefc31f1aa1559461d6b9e7ef", +"TR_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "1b83cb4075963acb1f0bb4b069ac56f9b31dfbeaefc31f1aa1559461d6b9e7ef", +"TR_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "1b83cb4075963acb1f0bb4b069ac56f9b31dfbeaefc31f1aa1559461d6b9e7ef", +"TR_es_test_msg_applysettings.py::test_apply_settings": "3758993d538827d013ad9704db887e7d17a507ba6120f81c8781f3a4258f21a7", +"TR_es_test_msg_applysettings.py::test_apply_settings_passphrase": "6cddba46618d9bd2e6fa33c0a7cd2a1ea196f1680f0cf3c1b569b3d3bacd5231", +"TR_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "697af7af27a57544fb4f42e5898a3612e7a1adbfe75862bb8caf7aa1bba4225c", +"TR_es_test_msg_applysettings.py::test_apply_settings_rotation": "8abed297b0106017f008cc036e786fbe971bdfca5937f729e1c924cd8036fcc5", +"TR_es_test_msg_applysettings.py::test_experimental_features": "8ef8691d3d26821d5515010a05a8615922068ddb2d823a039b6f8d5266388650", +"TR_es_test_msg_applysettings.py::test_label_too_long": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_msg_applysettings.py::test_safety_checks": "2d278b7a9475ac24b8f5a141e19b4a69945fbd0089f7dc6a1db5b283c3d96f38", +"TR_es_test_msg_backup_device.py::test_backup_bip39": "d1dba0ce5da15a0a8ade79f3e6842fe66f47228c923b5a2ab86cb6e218445523", +"TR_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", +"TR_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "0188c1be53df60c6ff727ae79952b19ca39534a1b69a3b96c34611412f9b7727", +"TR_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", +"TR_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2b24519653f034c06b65b08b97d45f36edb9c0f4569ba52495feaa818dde2ae9", +"TR_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b1408c4e113ffec85f27ad94b860e73e486f904bc560c25ba50587c87e4a32d7", +"TR_es_test_msg_backup_device.py::test_no_backup_fails": "5f447ca95e4075dd0dc442db6e24711f9f625ef87613c82c0ab10a07ac9b7610", +"TR_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"TR_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "63b75125e8fbea3d5e943ab2b1d3f2ab6e6d454a5740e9fa22223bed035be9cc", +"TR_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3f68145bf793c5b30b59b7bcaddbc66cc1c7f0fd8fbce468d28e0bc91fb1b7ad", +"TR_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "32084602cf049448bc0e9f8cc2ac357253e98ce55a3946877cdb8ad291f94f08", +"TR_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b055555a21c227e173eea2184b91753fb80135a811628512dba187aa39d155b4", +"TR_es_test_msg_changepin_t2.py::test_change_failed": "f943613e0cd54560d084b3f1ddd908e0847122bd32bb5dafe492f0442644d569", +"TR_es_test_msg_changepin_t2.py::test_change_invalid_current": "c791336b99f0c0c1dccf14b12967f4b319f3bfa8e0f129e9d5542722ce777f10", +"TR_es_test_msg_changepin_t2.py::test_change_pin": "ecd69e5a1f9f278fcb722111d45f77bb442b9c4932c2aba24b356142621cbfb4", +"TR_es_test_msg_changepin_t2.py::test_remove_pin": "21d8caf5e952f139daadcafe666d6eed4164efca075bd0346038795fa6ed8118", +"TR_es_test_msg_changepin_t2.py::test_set_failed": "6ab3326acab973104f5610e1dbbfb827cb923f47cb554e8a5bb3379758a819a6", +"TR_es_test_msg_changepin_t2.py::test_set_pin": "d4ae8b5a9674aa6424d737eb81beaeb1a25205c3a0c2341ba76204f18e27383e", +"TR_es_test_msg_loaddevice.py::test_load_device_1": "0cd329cc03baae20146ae526c89bd9f3bc99cd4de0077a4da69549255e7f250f", +"TR_es_test_msg_loaddevice.py::test_load_device_2": "d8844dd6c702ee173fe8a046a132ca5b5d5cee115f43486f54344de287bcf543", +"TR_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "0cd329cc03baae20146ae526c89bd9f3bc99cd4de0077a4da69549255e7f250f", +"TR_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "0cd329cc03baae20146ae526c89bd9f3bc99cd4de0077a4da69549255e7f250f", +"TR_es_test_msg_loaddevice.py::test_load_device_utf": "b00e22b25348e3e891f1d1cc7da1d7e057d5afdcf06ec0c74585d3576dff3458", +"TR_es_test_msg_ping.py::test_ping": "7f596f230ace8b535cd4eaa5593833c4c79a4ad9551ef93f8c07f8aded778c39", +"TR_es_test_msg_wipedevice.py::test_autolock_not_retained": "6644b394ecdebcc0f43baa276a4fe17fc11254c9d2090898e1408f67a18de1e6", +"TR_es_test_msg_wipedevice.py::test_wipe_device": "1fa69f36880f3abde22fa279a9e58c76edd9cbd691c9473aae5aee2e3a3a3b67", +"TR_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "4ed994e1fbd7d09ced814af638b4f480b73f5b81e4cb943f6543c1cd32f56b25", +"TR_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "4ed994e1fbd7d09ced814af638b4f480b73f5b81e4cb943f6543c1cd32f56b25", +"TR_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "c41db460da5758752eb618f8dc3a27228aa76ccd04fd5a5c5640d130c3ad9524", +"TR_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "c41db460da5758752eb618f8dc3a27228aa76ccd04fd5a5c5640d130c3ad9524", +"TR_es_test_pin.py::test_correct_pin": "1b83cb4075963acb1f0bb4b069ac56f9b31dfbeaefc31f1aa1559461d6b9e7ef", +"TR_es_test_pin.py::test_exponential_backoff_t2": "be62a4f1a57d8efb339085241f182c90ecc50010fc1cb89bb3582991204e6343", +"TR_es_test_pin.py::test_incorrect_pin_t2": "3d695f9b14fccda4d10b7883499bd7940c2b079472d85d6e58dc6f3494498954", +"TR_es_test_pin.py::test_no_protection": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_protection_levels.py::test_apply_settings": "395525fe044d1e20176da9be190a28f8aecd96bedd636f3058d9ca3cb94c651a", +"TR_es_test_protection_levels.py::test_change_pin_t2": "9cf53474efed09dee6aebe742edd859eb098a2755649192d8abe28a9539ecc75", +"TR_es_test_protection_levels.py::test_get_address": "c989d6a26a73cfcce2ab5b452f773aebd02e5cc817c6d41040f987ac64b7bbc0", +"TR_es_test_protection_levels.py::test_get_entropy": "e110e505175e14c22984b055f8bf849afba1095273229dceeeed9658d1c6354e", +"TR_es_test_protection_levels.py::test_get_public_key": "c989d6a26a73cfcce2ab5b452f773aebd02e5cc817c6d41040f987ac64b7bbc0", +"TR_es_test_protection_levels.py::test_initialize": "a44505bfb4873c932f0a10d151651e4a425786eaabbbc9b663ffe5b4c3f941bb", +"TR_es_test_protection_levels.py::test_passphrase_cached": "14790cd7ff44900f996fbfc347f1de31da1b60bc8f76aa63fd7bf74a6d049861", +"TR_es_test_protection_levels.py::test_passphrase_reporting[False]": "baf407a36edbec8a9a306d0b12549b9391a454c01baa3081293ac2d5343f433d", +"TR_es_test_protection_levels.py::test_passphrase_reporting[True]": "bc523ac60d24da40c84d66dfa884dd921b7f95dec1fecf5af5277d7e4ddfeff2", +"TR_es_test_protection_levels.py::test_ping": "7f596f230ace8b535cd4eaa5593833c4c79a4ad9551ef93f8c07f8aded778c39", +"TR_es_test_protection_levels.py::test_sign_message": "647192424c5e40a3afcabc23072bf47ff784b75e5c7f9b4779eb650cfda98b1d", +"TR_es_test_protection_levels.py::test_signtx": "79714ae80280bf58cc02a383b8885480ff7448b96dc4bf9f8fba6e4a3519c6a4", +"TR_es_test_protection_levels.py::test_unlocked": "3593416a75212bb39b87a9c386ad0f0dcc112ff615af33aa354926efb2362dd7", +"TR_es_test_protection_levels.py::test_verify_message_t2": "0cbc992c7d878849e14a8d50a1c5cf0d71c05b730ba33b1988bf244278a6d36d", +"TR_es_test_protection_levels.py::test_wipe_device": "5dd2f5a472e3c3ed2de9be72e307c4b04706741ef38737c178911a0b2d5581e4", +"TR_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_session.py::test_clear_session": "bc50f1eb012410de8371b1bd42d2e28ea6d5b233daa000188c10ff41e1723393", +"TR_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_session.py::test_derive_cardano_running_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_session.py::test_end_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_session.py::test_end_session_only_current": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_session.py::test_session_recycling": "c41db460da5758752eb618f8dc3a27228aa76ccd04fd5a5c5640d130c3ad9524", +"TR_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "f7e41a466092eabc74d8d84d8a28afb24cb2ef24ba95b5bd5d9207176174bbca", +"TR_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "d8e48a927365b4131bb87a67f46d32025f3e7c86950723c2d09666f7ad5c6365", +"TR_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "be0a34a1e47f25af944929d3c6aaf7f0a7721a6dc1073727f6160de731d1e718", +"TR_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "d8df23e7dbb0d5faaaaa4bcedfc1a472d4d3f97158c74dadf67069025984c56e", +"TR_es_test_session_id_and_passphrase.py::test_multiple_sessions": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"TR_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "864d883245e164d77a9a9ab574afbf195322f361c3b8d83c759614fe796eac48", +"TR_es_test_session_id_and_passphrase.py::test_passphrase_length": "4d4a573dbae21aa66e507902f41d16d075b0a9d64a5ed1a9b1eeff3fdca7071e", +"TR_es_test_session_id_and_passphrase.py::test_passphrase_missing": "14790cd7ff44900f996fbfc347f1de31da1b60bc8f76aa63fd7bf74a6d049861", +"TR_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "379bf2715cccf35267bbd23c1eed47cff80fe106a2d8cb3d98c691177927c549", +"TR_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "0e5734999c0e6d094fa34e7ef8e4530fd2d4d829ae7503edde2a4c2b86e759e8", +"TR_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "88ae9a2aebda528c6d9dbd7c6c3504094637617777bde5a34ffcc7daec796a58", +"TR_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "fa8494cc489185f204e9c8cc2a2b98c0c11b3c35b18e51b71122cd6792e1d557", +"TR_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9e202db9b161bce3a2d60bc841aeffe12827daa071c6e7ce4647c841118b9ece", +"TR_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "e216b121a78c0d2c56b02701fbc1cb029ebd8f1c27825520f59a742e3c68e4b1", +"TR_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "06a97327f7e600a2270c8b5f6d7757a5008c49f1826d182db4b0075cb4428c34", +"TR_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "77b2c65e3dbbf7626a16f4fcb94db4656268472c25b05b5491ce1db86ebfe73a", +"TR_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "e4ae2688b8e5a73f72d5fb8beedf914b987c38cc35adaf20d01c627764d86f05", +"TR_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "2c32e2aa3364f5b844446596d0c158da29c25dde1ecb9958a252935bcab1fc12", +"TR_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "07e196c135820af55338646f5e85d821284a933797ce5f58cab3535b17f5e89e", +"TR_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "f2baf490fa3714e104030dfed93a001e03cc8d393d991c83b5fb57a29554d90b", +"TR_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "841914651817f9b58eb57be78bfd36aeecc9ce4f9ac275290ec4701dbaf5d754", +"TR_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "e16cb520165a9a25e117374512eb7e5b2dc017d11003e1e255fe153ded258bb7", +"TR_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "c9bb3c1b624f2ab6ee1eb44e916c34e6cf007b637dafe9701e22cb56889244a3", +"TR_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "4ad9096b674b3fcf93a1a2433ab891635578e344f4596a21009aa9dcc42fc956", +"TR_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "6a5f06468a9ae71f79082ffd36e05aa679ba282d97616d51d0aef0fc28804f64", +"TR_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "8836383a9eafd021dc87b90352967678f00d408e43af669ce3bf8230c23c2fb2", +"TR_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "e0e4a9affd40015b7b4935dd56609865f96e109ea2022324521604163fac485d", +"TR_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "3f447c9b12188440c7c5e31a99469e653b3abf97313a03d767e315eb338d0b26", +"TR_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "d0038fad94eec9f7a4c315a61605131064ce65a2d8bd0920d09696cab87effd8", +"TR_es_webauthn-test_msg_webauthn.py::test_add_remove": "d8974c52068ddcfa49771f1ec1887229c77f079aaab191b34e2cec62062ca830", +"TR_es_webauthn-test_u2f_counter.py::test_u2f_counter": "2c3b46205cb605a7c50efbab41a1a3dc6bda912cd534f199ab4821e1b254264c", +"TR_es_zcash-test_sign_tx.py::test_external_presigned": "82a31a33f56ceb92ac5252133f1e4bdcba3a8e61dc65c86e0cf2581dcc2c7f14", +"TR_es_zcash-test_sign_tx.py::test_one_two": "b18d2f43fd5957d43fdac6ea1d59425eb8fa7d51958fe13649e20ba0ddff8776", +"TR_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "2ebbd760e1ca120edb66bcca6dd4ce6196ca0ff1edc48a71589045a0dea6e1b2", +"TR_es_zcash-test_sign_tx.py::test_send_to_multisig": "8f90fee61da070d5e442d1ef0ec88dd866ff70565008f2a9dada4210151500c6", +"TR_es_zcash-test_sign_tx.py::test_spend_multisig": "b62ac68ed34e7cfe23aeba33e58534e0803562874c644fe4da51f7e264fd690e", +"TR_es_zcash-test_sign_tx.py::test_spend_v4_input": "edc7612b11cd4c86a5b5c06db00098d9c7a0cf0235878e8cdafd34dabd8db89e", +"TR_es_zcash-test_sign_tx.py::test_spend_v5_input": "acbf46b74d383189410260e61d448e0d1f007486a3980983434bdb6060e34029", +"TR_es_zcash-test_sign_tx.py::test_unified_address": "088973b6c5ae475f014df5fd7c5e3ec2a42500b75aaf39d6eec9465502c6570c", +"TR_es_zcash-test_sign_tx.py::test_version_group_id_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"TR_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "01b0c69f7a2753609b092d27a9c0e6b3d6ecde5e1f756caa395ae0e52898471a", +"TR_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "0d294e82e46d42eea4b7ff4df65335fa30092c4e841907d64f18519ba8eb9e94", +"TR_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "6649c215fd2ee6c1bb408effb5a0cbddf7599667887ad6363f04c3e2a8727862", +"TR_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "6e2ad33065885af1c67a3c1fdbf4b78d11ec22b06b4b416b8515ac64093185d0", +"TR_fr_binance-test_get_public_key.py::test_binance_get_public_key": "b737fe820ba3555497a368c0613f86b841ca979e86844c8b2a441805baae28c7", +"TR_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2bc3078a73114ea669c6d031092d191e2a033648c812c9e32a73c95f5c097bcc", +"TR_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "6508a2d8aae23651c28aeeae841b3aff9f145dadcc0164052806aa3ade8e1127", +"TR_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "814e895e780939367303053f6d6027b45a360f7bef6780417d30a948cd18c5bc", +"TR_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2bc3078a73114ea669c6d031092d191e2a033648c812c9e32a73c95f5c097bcc", +"TR_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "6508a2d8aae23651c28aeeae841b3aff9f145dadcc0164052806aa3ade8e1127", +"TR_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "814e895e780939367303053f6d6027b45a360f7bef6780417d30a948cd18c5bc", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "7eb540196718127573cda8839dbbcbb8198835b84928fc053bd7df51fa8b155d", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "214a8db1b4df57d5e2f771e696f996ed756ef47d61588138da8a915fb126ecb3", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "4925888fc6d58a969eaae9d5dcb0704178b500af68f516c9e291219b25a44f50", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "488e4ad47e3941214e4969b9c16769df0a547dbb3e12425462fb96c56a029a9f", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "b5aba0f9594cf69312a6f3e61e1c18c1e55b5166bcb7a2f1de440348c268e3ed", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "b5aba0f9594cf69312a6f3e61e1c18c1e55b5166bcb7a2f1de440348c268e3ed", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "b89c9b69c3c3e7e6918fc952aacc32c228b1f58746b12c7b1d7512ac15021953", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "8bd33e2438502f4984c4490deb89e350e3810b7709f9150e461de341e2bd3a94", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7a246a7927460508e1ba3a913b0adfe2a0412b283e5c0c8f6d4c1119cf901649", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "dee4cee67086da643eb25f8aaea4fc1379304bb12481c62deac5375de31ead0f", +"TR_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "dee4cee67086da643eb25f8aaea4fc1379304bb12481c62deac5375de31ead0f", +"TR_fr_bitcoin-test_bcash.py::test_attack_change_input": "5ed48c3ef24a4d5a1a5fe1a28c611bb322778e54bd5c51169edbe446f4817896", +"TR_fr_bitcoin-test_bcash.py::test_send_bch_change": "201c232dd283c22ae483fcd7f2b48ce984c0c8353b845c437c457bd14ed9e409", +"TR_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "c018193e6ae9fbd1bd3e9c506aa44f193ac733340be3361f91291dd3243a302c", +"TR_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "b2b76ef1469f8a9e690ce7cb8b290f045c81d7954be2459f286f34c41bf9f601", +"TR_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "db16299dc298a09823c7ab8057fdd89c18c1d172c71e1533e0d71c4ba01cdb41", +"TR_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "fbd892458c2fc2c5e4cd6dbb66c8b738d4785e4217a4417575634d86c9fe7966", +"TR_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "f8f56a6d4fcaea1722a5597a0b20018960109872d8d2cb5c0d5f704497da2e08", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "3178b53f6d2bdd69c9a0c42a8ee757ef71d713d62869860164fc643daf22048f", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "e96eac8e1f9e035a83f54e1b412190c6c0cf531b7a9bd5610ef30d4796b51191", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "32050ec04cdae4f7f797f51d8496718140ef68bb76c6fa680bdb2f29b2c47742", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "a2d85ded9a823c0982167fe358f857aef97f0aa58fd789079027fbbd0bfc0b69", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "19321ee273698318b8d954e5232faf9eecece568a564350f62e1a2d304d515ab", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "0cbe5ed7a9d07dfa362e3bff1b72abb50a1be12502887697ad86ef1675c87ac7", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "be585ac20e7d22a630decdae14d68f236babcf0da621a3ac26b7c5964c61b71d", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "8a278844734ee74e65f7e638fca3f71b240ea90e014dd9ab0fce30397a67c8a3", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "7b0aa7147c9eee257814e2f66b978523417e19f16be19f28296107428b1bf2d5", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "f4dd075066824052a29eafb1f555efa3752cb7ab33c5d3715228a4e3a5598b16", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d245240147c36ab3eb0dd4c42a33b8a82663b72488a240d514eafff80efbe61d", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "246cbebe4acbf85ab316a8a94b291cbbc9fb574d20330766c60b1f305c3a4113", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "5d23529b1a4638ec9474c19aa77ec240c3f243023e53c3624faef0e2b680b769", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "a955c0860159f9d48b212e8dd652bd47a3f3b798c86d1635d490743920842184", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "b93e702aa6c051a1360a4b91162332a40fc98c9c6542c69d819b642f56e9a3d0", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "8f8de8a7052879bd1f6be5e58e43ee8574ed07ec7064d603ea70054a875ac8b1", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "8d8a9c824219a8c8db350dc11d7f18e1a164e583991560bae759ebcadaef4e80", +"TR_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "e0af0ed00bfaf4e64bbd97131ba8653dcd868a6588cb839f27b7763454a6ec62", +"TR_fr_bitcoin-test_firo.py::test_spend_lelantus": "13ef3ed83079fe262d1f1304fe522975178a548bf1584694cbb40a7f97d359d5", +"TR_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "3fade7cbeaac69234aa63154ac696fa398bf45a4d400d7ec048249690e87c246", +"TR_fr_bitcoin-test_getaddress.py::test_address_mac": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_bch": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_bch_multisig": "c130f6489cb370b152e4c80b18c90b4df778aefd7d7839492ae094c8b8aa09a5", +"TR_fr_bitcoin-test_getaddress.py::test_btc": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_crw": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_elements": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_grs": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_invalid_path": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_ltc": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_multisig": "07428d4ec2215ea8d110e9fcfaa38e66ef7dc6a743c3cf54dd271452a7e72531", +"TR_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "b9e75c9133e006706533c5fa7eae7cf252c77752a0e9d31b40ef21ff8c9c5f3d", +"TR_fr_bitcoin-test_getaddress.py::test_public_ckd": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_tbtc": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_tgrs": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress.py::test_unknown_path": "61c955a933c385cca640baf471a7fcee107ecfdd6db3f062d148638827c71732", +"TR_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "39f5a2125c8caed108a3371e948530d2713058e4b08a3e24295f3e010b30d928", +"TR_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "51b6d30aec7f7361461815b651a8f78a6d729bc759cefe444ad9061c8470e22f", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "7dc6201ca8a7de271a9973ef17f5179f943a7bded3e1407784a6eae65e069e76", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "1ea6773a77769eafe61cc3ba6993c728c855de9968ef0aa1ea84eed1ebfc6dd6", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "123faab32abd5f1de298bffb287a3820deb34e16392ffef0fd5c3dc2f61d53ab", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "213b67d82e1ed169a50002b525bde47d8cd40ebca196e0135ede5bc425224469", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "bfc93be34cf199aed4f68fd9b0c47d5364111e003870495380f6c8118154816c", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "8ffb8b3e1b76efa0e129ee524af5a6f7e86d6b4b76f55d242bb8356464285b05", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "d21d480bd8d32c652ee59724f3315a656e0f6a79ce47dffd3a42d88c6ebadb56", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "fae4ee22e62f28dd05a4c0c9ab8960b72593c408d1e35c65a63a17172841c88e", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "094651f83a6bed3121a188ab06c3bb2c720b268417a71ab58b9e1c99a2e81075", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "b3fe9542aca012adf9eaf08e079026b41692e718e826f43d1d7ad1af46359de8", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "df53145a77c9fa3f1c78f754d12ace4044c863d68a8481191cd562103d677d71", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "25447bab49503849841607ed23433340685e63966a9d14690555a3e15be786a1", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "c8f03d221ea6fb86bbde7ac8c0465fab43ad4b484738f8211451dd4e3de7cf47", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "67739af5d021283e904680ee09bad402a7ad84abedd435676c69632148706bf6", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "fbacb57065d102df266ae9293bf7a5d10f88a583b1e99aff3aa789925f22c364", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "82c5d4b7209de00ef33927e6600da0b9dce53de7819e2c2ebe74965c8140dd47", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "4b85265225928fb4346f6073b745798086c5e9c9e5efdea3d72b07a80ef9c1d8", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "ade43006c188f8a0de25a70597d64806bf26bb2c3b3f4844bae37588bd12d503", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "22924f82dcf92dc6504aea4c20cc0173592eaad5d3c4c68c7702ee94226ecc2f", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "b5b9703454af1edefc9be71dab4cf552a4363971b2c963859f0d0f8a4ce845ea", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "8edf070ef12cc2493a4549e0be1f91cbf02fb7ca331320c542a1b361a20944ec", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "9d1e540b6eea4eea645723e00d103826c50df03f1a06c03029c34b49449831a6", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "9d1e540b6eea4eea645723e00d103826c50df03f1a06c03029c34b49449831a6", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "a2c0c7375461455f079f4a48864fba5f434388fe730b0e0cddfdce0e2a84c11a", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "deecb0a9185fef0e652a8205c3f4599d9618be21215ee9905c135cac9efcb709", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "64bf0a633bd03b0c75f83c5b78930446d472307c7cffcd9b5e5c446a68c7f3ef", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "9a4f50dda13e84fd6e1309ed7b0a39a627c95924dea41869faaa802301fa4817", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "fda3b8252fff827d80c4e0b72cf5a1f2f061828a4a74829aa682251b6468c702", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "8f8343418b9b56d54c5df685a109fa80ef8b9cef03b6bc20192ccc918c2839f9", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "6d0c8295721439a685e5deebc039a5fcaeac7ca8304b9f034ac66246f027fde9", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "60872985ebd11f169fe17910e7073e0dece108f7113b389ac3d550feb5fe9d95", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "50e73d87fce7d04ce108349ae5195c0c52a7c9462b1925ce15986b9ab8b1a3d9", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "aa4d6bc9d9a1845d9876ee87fe35ed08ae6e65062e76351a94d5f127bf2bb713", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "ba0d47141c79e936247f0b8026e0f5828e3d6c60c9db182b21e2f92a7fba9ace", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "bacdd91e38c5884956ef8dffb2922681fc1fa9dff55af88d56be7be8be34ce91", +"TR_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "4abf343d5035c96accb928fe51beb8a384279cd0a6d72bc46685e77b7824f2b8", +"TR_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "9200ba73c6676bbe2715ad3a193572f74c86b4dc68057b5a1cfb0f23be5cca12", +"TR_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "e96eac8e1f9e035a83f54e1b412190c6c0cf531b7a9bd5610ef30d4796b51191", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "abb04bc783aa6d071045ffb7ef3fa3943de2c757479a71ddbe57df217e378092", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "6ea5b36b39d4affd43729eaaa3fe92ac619d01dfa3be7fc762e5ed7de6ffacb0", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "46879cce53cb920e17db57f192877cf92a28c8f62595593e972c6b4a721e994f", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "e9629bad6be38342a8e04439886f1d6fa29addbbef47c7f51fc86770bf2b89a9", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "358ba69cf5ab331668f6f1a4d53d588297f430a6abb7a9b219e79f2e30db42a8", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "68313a123a6d3ece2741baa8e49b00478628470ec1491de7bd13c55d2561b9d4", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "3044ec4fba044b79b183e83083f3cd016b1dc943426fa78069c189f7b2d5ffac", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "07fe7ac6f3e6070b952aafea649016a3dda05e7cc1f62033a8e4fba850189863", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "d245240147c36ab3eb0dd4c42a33b8a82663b72488a240d514eafff80efbe61d", +"TR_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "4957c1189603c2a6bd6d3cea4d9f137d10872fa7c6b4b0f078f1379e4cb64459", +"TR_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey.py::test_slip25_path": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_grs.py::test_legacy": "d6f04cbd3739e420a188a159c90262fcf4b924d650797a1f1ce51fe611505d66", +"TR_fr_bitcoin-test_grs.py::test_legacy_change": "ce3024faa1b310736b04c0b0b445cb86cab19bccaadea95624ffcbb8429e135c", +"TR_fr_bitcoin-test_grs.py::test_send_p2tr": "c9a3d2d6fa24dfacb4828195594150fce91508103c1e85f0003d2245671c8ea2", +"TR_fr_bitcoin-test_grs.py::test_send_segwit_native": "ba15bf65795131d4c44db59ef6b2176638a0c2a65aa1dff71f9c82da6d6835be", +"TR_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "b6fca718b1137e0e716d492de2657b9d2e262efa75b003397bc32806b5b83cc3", +"TR_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "b62e41befa6f4a96e914588f1a5082b95436e52bd21cb70dce3b6d5711127060", +"TR_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "8b1423a1c1476ecb99ef41f1f31023839a9b4d538e6e551603737e10ee1baaaf", +"TR_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "d11248e1060fa4cdf8d9cad4781fdd587981ed9cd9a2017f7427f1fb6f1ce8ef", +"TR_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "500eb6754c27b199aa7591e7e952bb04e20382739ed0db6286f9bdd10700bb7a", +"TR_fr_bitcoin-test_multisig.py::test_15_of_15": "4d58bbc82381eae199deca4b0f09be0a9ae7bc127914fb339f5a8c9b271d5ce7", +"TR_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "5e5addfab95faff3f915d796435258a4babe9eb6bfaa040ba91890fbdfc9558e", +"TR_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "78b4132acfa0f8105db1552d5bf1b87e59d87194d35f1443d7c615579964cfb2", +"TR_fr_bitcoin-test_multisig.py::test_attack_change_input": "2acf7ff72589c1b93c679131f4063ca82672dac90886a9de153ab8002d7da056", +"TR_fr_bitcoin-test_multisig.py::test_missing_pubkey": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_multisig_change.py::test_external_external": "e16e5c7ac345135010c7f750d592ffc2a83d356542aa59307073ae607ac54dbd", +"TR_fr_bitcoin-test_multisig_change.py::test_external_internal": "12318007634f493ce89a360cdabd50935a9a07f6cf5778b31379d679a7c64cb0", +"TR_fr_bitcoin-test_multisig_change.py::test_internal_external": "f96ed4f5b2c05a5337cbd80e2fdc53846bcbde01c0da515449b0899febdada81", +"TR_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "da8a5d01e6ee8d836322c42684fe95ac687ced137a49b2ab93131299db570a1b", +"TR_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "a33e91d913ac3c3e12c5d9e27542c56c8e414815039753587cfdca5601ec16e6", +"TR_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "ae13854a61eb9ab183a46fc001572bc5058b793ffd67beb142c9fc13f9a4063f", +"TR_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "984370cbefe6825a41f49daf6b8a4bc164986344270485a26f79b1ba1ab295cd", +"TR_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "580ddb93e3ce2b59dfdc33b58c3d9ea4282030a2273c5b66e12480b6445c82b5", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "bf23355eca74cdf7e3423849efc5edf36a5e127123ea64640f1548c598274234", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "b6b18940876d03a94c633ee047b5d500495fd6a917027d9637ab2112be49dad2", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "5cdb2b8ed91162bca2d67f01ed59d680b0a6b6c6eab2cec4c71e8693ff1abd81", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "5f37eb890c5ef820589e4a9d4bf644942b07a723c8a90f8e02fb16e3d49b0dfb", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "2e5b1d9c7aba5d59a3f555c264a93d3702a0a8c3b40822de2bdbe2db53c59bab", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "abc4c371583964c6c58e0f98909de94a47477329fb91af769cf7148b48bda7be", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ea974151e3f331ccbde8b4e8e99f33dea911169d019ade2aa41abe59c78b5e8f", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "f91ca449a3a2f193e735600f11eab9a5e1d747546d6c807b506a09a8ff29ce7e", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "2ffadbffec8a57329228bb480d5dfd8d9356a7aaab34ed7f9c5edf128953c1b2", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "992a81b7f09e9033019a39f0706c4f6aada59eb6e127b2b078fa4824d503a7b9", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "52abcfbc569dcf6a03188b44e6bb7ec17a5dde1316dc8c4390de1548cdfa5bbe", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "f49dddac68c5cff7ffa00c9c0d90019a307317ddf2aff542adf8aa5d02e0e6ec", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "861b0464e327daa2a1b6fa67fc21d2246693c58bba39dfb7d86958728dffef38", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "8937f90cdf04516ee326d39f8db4dfb6de048468f80e0d940e80d44433ca9aa4", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "240364d69299b30727793e7a0cf02934ab16a0086f3b6ac8e26ed4c596f7dfd5", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "296617840b77c4392ccdd5a31f83ee6fdf78c78ec8f1d61e6753271df994ef68", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "3ec65b94ecd938dc02ac719978da9698720b1a683681c348bacd5bd8d148ad5e", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "775672a153b2973efe4fe2777174c14de9dc52af7255340b420edde5b59f55ca", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "d39eaf3b2e64fb92b244c298c3a68193251fc35b5c28f9a7f0960023395721e9", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "0e9464523425a2bd096b45c45881b68dac80acb5940b0cfd7ea7cc74e1103de1", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "55d1716e2966aae6e9b716871acff740bab676a19c1cd09a79c450d3fd4f7be4", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "304eb059b878da1100a441fa1f6d0605ccb4d3a361e22793d20a694a848b7ead", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "fc8da7f789803c612042e82eb274d613b869d66f29417e178a1c877a88b4cad3", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "2eb1d42e56577827ad3ba7b7add9c3787e55023db3330b2fee1f072086c726bf", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "a972cf6e3147f16459a3f1ff8573a858938c5abe619a087aab22865ef2454b87", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "5ea9b6f71d6ada56ae2cb66c59a17fd358f4bb5d7f9a926c17934dc1380e7e38", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "42dddb95e4cf3c325d6f4b542835d675174079c89fd348fffaca897c981f0a4b", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "55aba9bdf3510511d3cfd0c5a57fe269b8794569a5c41eabfde2097e65a4cff6", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "de7c6f4204d4a2ac0b5727026373b20f04325059ef1c25000d62ef9e43e3f3a8", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "ba726fee1883f464dde2184858ac67c20f4f1e889c9cc3624dfe0458d99a6775", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "bba915b7b93f10534fcc3e6efac88c683f910ee590b67a1142f8ba04cad1d2cd", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "ee81d3c6ddcbd40c3dc1de62de34077cf9fce651c19e094cdb63d2cb6c0a535a", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "87a2c0c386b6d8c46d3da9bbdfb2e6be64d2af609615cb83b4c2c4ce30484317", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "7242f1abe115c08b25bcb2260d4ff93f55e0e85e57b006f68f1206e3939d1072", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "42a1d24ca316847c60072a457681bcb3e2d004460f3807120c09e8fbf85faec5", +"TR_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "bd7c7de95e5706b2c274159e3f0591f8f1dbc82c72367c3ab453ed6bcc10394c", +"TR_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_op_return.py::test_opreturn": "82b2fb286346dd70cd04626cc1ebcb85fefefa28a41620cb955100de8f4b806b", +"TR_fr_bitcoin-test_op_return.py::test_opreturn_address": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_peercoin.py::test_timestamp_included": "f365aefa6316b1c6942e8f31d5506e62759c05c64824ba1b9f8fed36b06dd235", +"TR_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "98c2080acefea4ff06d19fc6833a887fe8fbaa05f6e6a8b65a2876b111e57796", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "cf46b07c8210600c95943a55c68c35d384001a2f52c525e4f042712e04d1f1db", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "cf46b07c8210600c95943a55c68c35d384001a2f52c525e4f042712e04d1f1db", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "7dd7311f7f887208db1bb6afd946eaf0d61e3f9131c172285c4c3d2f1ad22cb2", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "2e381e67f84f2298c3592ccda54d31a42c04d369b7bd8286a45aa4d9aee3dc52", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "4f0eca71eecb525851d17c80b467e94420b36901c05623ae9fdd08c8bc09617d", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "9360d0226659885b58e6ff046bf7a80eca5e5aa9a16fbb0929cab368744513fc", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "b7f698cd288a4f94784d46288029b2cfa2551dd2677bedfbf980a334334d9285", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "03d82e86716f6e98e3956472cdbdecbccf3e0974267754e7c52c77ffab236f43", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "03d82e86716f6e98e3956472cdbdecbccf3e0974267754e7c52c77ffab236f43", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "710004c28a140dcbc97391438ea761c9c72b52ded987e8e28571eb22c9248f1e", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "5111c0c0098e92cba87bd9a5c41c3bd1bca2a1f915ca7def2215de4b262529f2", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "538c989736e159e8c51805b4d92a45f836f2d1e0bcd113639714224a8b2bdc74", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "538c989736e159e8c51805b4d92a45f836f2d1e0bcd113639714224a8b2bdc74", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "ad696cea672ce5001af68873cddf38460ce719aaa184e2498df0904d9ed75cbe", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "a1b7c8a672e4ee9f5782ef3ac21d6e36eb993c4a5e27f84c37a24c9c95e3c85f", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "a0f6c24b2a48d4fdff9e5b8455f5061a8467fe7dd1bbd98ec5838b469b91815f", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "a0f6c24b2a48d4fdff9e5b8455f5061a8467fe7dd1bbd98ec5838b469b91815f", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "8f7a1386788957376256a57804705c245f02ef5edfc095d3defd484c682e5812", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "52020e8ba87fd90bed1b864c131f40fec7f408f294715cfe238024b8c5c8546d", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "b979caf36f7176a269cd6ba41b10fbb3a44755087f5888392b7ea7a36181ede0", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "4d6238bbc6d8fe8df9fbc241807a6e94c795436aff4797469b5dc92a7c803fd5", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "0ad1f69168fcc9f0dd27df94e5f6639bb1d159ce41c666db18162958fdaa042b", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "3f25203be9734bd8de61f7254418462e640b35826d1ea17353ee6e19689e43c0", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6e09a4aa1538e361f749550fb1ac6caee682ec4ee270d4a37cabcbaace4749ff", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "be8cc07608bacc83fd5566e3753f254812df49628c4356e85375b440558f746a", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "12071a2b2ef7bee118d9575bda5f221a57848b924eadda923935cb1f88e2401b", +"TR_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "8eaeeb069cc9b945c45c7137eaf1a9625ae2b535aa52e9d47d53625045d4692c", +"TR_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "262d1c502cc26d29a3cdd33fefda7af33d94c8e6d978d1cda1efd330ff6be44c", +"TR_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "71e366f2854a3e4e910003b787857a3c4c4e8fbde0b4f1e945520cd3eb1b3223", +"TR_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "7321d7d3b1beba348bb30a0157c952dbb52a9559877aa23a8c391f504610b121", +"TR_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "7321d7d3b1beba348bb30a0157c952dbb52a9559877aa23a8c391f504610b121", +"TR_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "d09724af17b417c9f667720b2560790f7ea8a9de0bdcbd61fb10cbf5d9ed3ad4", +"TR_fr_bitcoin-test_signtx.py::test_fee_high_warning": "9a0e623bef06ea96dfc33c4055543b8e0e6f046270fd016068187b99e3212403", +"TR_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx.py::test_information": "5acc54288970a92744f793fcf7f762941afb4670181cd19a70175aad01938b00", +"TR_fr_bitcoin-test_signtx.py::test_information_cancel": "699e9fb892334261c108b44951b09e5f4e3c5218797129ee9ff51cdcc9270230", +"TR_fr_bitcoin-test_signtx.py::test_information_mixed": "93811a8a0b8d3ca83a4206a260e0da17d1ec536af6ff0e819f538067e650c49f", +"TR_fr_bitcoin-test_signtx.py::test_information_replacement": "78f479d02cd7b167034f7d78d65faff2a3ec7ee199224f35b25ac5f3e24bc807", +"TR_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "32f329651bedefefb181957c43fe2dc22cf21a642833822e3e8ab7e8d1ccd0ef", +"TR_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "5a9a4bba0582ca40d717325ef06d0648c79dbde18cb1e02ee94500ff2ac5be30", +"TR_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "27a7b0e4409b64dd26ce1e516f8b44700302d767d5e6da2d403342fe67ccb653", +"TR_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "c1d44db37b28ac0e6a5207cd50bb1318d98f25a93055bc653a7ecebf4e6ad005", +"TR_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d36a32bff6698ff45e7390784bc721cace7049583fcb86c0bf6c5f941b17d82f", +"TR_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "58966c29cef1d701db14e1948f88aa65655305b9e72328519204ea64489e3d53", +"TR_fr_bitcoin-test_signtx.py::test_lots_of_change": "442b017e2651d0f649a33e2c21ad94dd19ae8e4521499d00edfdd208aec9ac5d", +"TR_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "3076ad7f91cba2ab3451f705ae08779841059777d27abe8c7a7ca028cd16f891", +"TR_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "ec973405a0ffc0bbd564965bdc96f6715336d24ae735561ee01634668e9aa7d5", +"TR_fr_bitcoin-test_signtx.py::test_not_enough_funds": "1feacc1acd23a37e9d7f02456f1b3341f627ff4071d1906ea022f7515eb1f540", +"TR_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "6471635458419752f95e844d3e34b6df2c8018c95e1443a52c63d1c2f318ddfa", +"TR_fr_bitcoin-test_signtx.py::test_one_one_fee": "8ff964b0d42db4d85f2a2bd9d4bc04e5d9a38931e3915ab131cc159c32b686bc", +"TR_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "4a6e7fb663daad8aee9877d7ab9240f4776762014e49b0e5fa8bfb2db0222865", +"TR_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "818584fe8d9af2964de3ad8f481ecc568c173f9862cf772d93125ce6935de474", +"TR_fr_bitcoin-test_signtx.py::test_one_two_fee": "3ee7b52f523ddd27e640d127671587bd46823678efa1109daf0be096650b5c6d", +"TR_fr_bitcoin-test_signtx.py::test_p2sh": "c7c8c9a000fca714a18fa05686122d8de7b4ba23eb5d9779ad3d615349e101cd", +"TR_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a21a07d46fb362495d6cb3a6089b9d3e216bbbae2d84b8b6069286aa10c21ccd", +"TR_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a21a07d46fb362495d6cb3a6089b9d3e216bbbae2d84b8b6069286aa10c21ccd", +"TR_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a21a07d46fb362495d6cb3a6089b9d3e216bbbae2d84b8b6069286aa10c21ccd", +"TR_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a21a07d46fb362495d6cb3a6089b9d3e216bbbae2d84b8b6069286aa10c21ccd", +"TR_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a21a07d46fb362495d6cb3a6089b9d3e216bbbae2d84b8b6069286aa10c21ccd", +"TR_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_signtx.py::test_spend_coinbase": "783e4684b6b0bfe5b849c0f43ebde831ccf35ba1438da4f64fdbcd2c9ee55675", +"TR_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "38e0e09229051f9d44e6b8f35df892e89c650ebe41367b6e78da697928a5ccfe", +"TR_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "1ca572bfc7e5df1406c5645c7e8f00ead53ccf4837162431d4d61d72c89d9cb7", +"TR_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "7321d7d3b1beba348bb30a0157c952dbb52a9559877aa23a8c391f504610b121", +"TR_fr_bitcoin-test_signtx.py::test_two_changes": "9dbcf43942b32b7f09a668257957374fce2c2f5485a49401b1316d64809c2c73", +"TR_fr_bitcoin-test_signtx.py::test_two_two": "1d529978a01cfcb11788f2a337917d7b33bae766610e813a52f2ad317c438ecf", +"TR_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "8ff964b0d42db4d85f2a2bd9d4bc04e5d9a38931e3915ab131cc159c32b686bc", +"TR_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "6391e324588a11f94bea03ebeaeb7627986b7c6d897f0fcaacab9a059b854360", +"TR_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "d880c6a2980ada2d03c2ba792405525b0c3d298596da692716ec6b054f8f3472", +"TR_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1db3cc85c9f9df9a841c240c6d082b3986be160a14d0ad094830b0bdfa77183f", +"TR_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "8ff964b0d42db4d85f2a2bd9d4bc04e5d9a38931e3915ab131cc159c32b686bc", +"TR_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b6afc090604804aa4426c542fcc038bc036e87356774810f9f130f7763c4a72e", +"TR_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "f75ce36894330fe8eb05f5a16e001d311896c95ae416bff7ce57fa55108be8f2", +"TR_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "72690305370d959eb6c9c011ca50965b5b607001561925f90d7226cd37b12360", +"TR_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "fc9adbaba951f1fd3f7b0b71d18d11ac9b22180da4f42ba9007605d064c6f2ff", +"TR_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b6afc090604804aa4426c542fcc038bc036e87356774810f9f130f7763c4a72e", +"TR_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "2ccd3bafd4899d49a78e3e3335e4cffbc2d49f7d9cb46e2f266c823a2a446544", +"TR_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "ea4f9debf7cd451bb69189d6b5f2a204608881943bac368d3c75ce88c20b0edc", +"TR_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "edf6882b1cd2e233746c1ab10feed142dd321d9e463fc0f51777e2de261184cb", +"TR_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "7f49f0d84b7dde4cbe92d4cde9034d5c5d0482d839d72ca1f3a97c322acbc4e0", +"TR_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0b63e656973efa3e08666b35bd142a6289c15f07c00d84f0df7da76f606c6286", +"TR_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "79852cd5fe52ce02f1d196934026eef89d3839f938a667aee509de4f5c962726", +"TR_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "9519446f0274f8fb7d45a943922737625742a3271f30879a289821d79f8fe45a", +"TR_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "20c9296265b645cbea25ca70c7d8cba9fb801aaf4fe32475ada9bfef9a1dfd89", +"TR_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "107dd59581c4443d8d61d2bbb35eb84c877bf52a1857609ced67a13cfdf2b5bc", +"TR_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "68bba03861fb9a7d4ff8bb8fab808dcdd5e4cc8920d7677483544326b0964bbf", +"TR_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "ae2093d80a58e2e515c2796b000d29a13d13342b3f83399c6b5649597dfd39a8", +"TR_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "9a49bac4175049b5372c089d17f9505c7b736e47855b735de078079229840b8d", +"TR_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "44484ca2b4ddde12a6c92279e71c2fead08d877f224f8e8df90e86a626471b2a", +"TR_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "ae4f16548d84d61d42667996fbf03fcba0a4394b780ff5b739f279280daf1adb", +"TR_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "44484ca2b4ddde12a6c92279e71c2fead08d877f224f8e8df90e86a626471b2a", +"TR_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "f988a4aa8764db1927d72963cbe66fb571fb2b1433ece69e7bc60a650b2875fc", +"TR_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c79314e24d6ac9060b325b03390c377cf52c33032446eff6583fe0c68331c63e", +"TR_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "891fd01b5416653daa1c42b0e16d5e074ca2a79aff107bacd599ad74987a9b70", +"TR_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "8bba4551fe8e2cbfd6c1a1e5df0e79ccc05648c266f668edb383be5dde6d94d8", +"TR_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "20932b42f57ceefa6c234a49c374da8549041ab7bca047dd20d6786942eab494", +"TR_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "be3c3575bc98261870627a2be68850599324c276cad67cbd2a3741c3b8efcba6", +"TR_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "4d01e5e4463fbd072b34bdd086640f621ee0cdbd7ac7dd5144f8f07da29854a5", +"TR_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "b176e8f3710c776cc767d162f05993897aceac3363cbc06917a6f6afd71ebe29", +"TR_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "627fe9d1ae338f78333ce01f9f012436f69431dcd184ccb28542f1f6bf3e7f9d", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "627fe9d1ae338f78333ce01f9f012436f69431dcd184ccb28542f1f6bf3e7f9d", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "627fe9d1ae338f78333ce01f9f012436f69431dcd184ccb28542f1f6bf3e7f9d", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "627fe9d1ae338f78333ce01f9f012436f69431dcd184ccb28542f1f6bf3e7f9d", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "2da42759a8eae934f481cf8094c0a4f0938ad4bf3f0bf65c59ec71e71ced792b", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "2da42759a8eae934f481cf8094c0a4f0938ad4bf3f0bf65c59ec71e71ced792b", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "2da42759a8eae934f481cf8094c0a4f0938ad4bf3f0bf65c59ec71e71ced792b", +"TR_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2da42759a8eae934f481cf8094c0a4f0938ad4bf3f0bf65c59ec71e71ced792b", +"TR_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "840b973e434647b69da23f122c625351275a0e1884ba449ab8579864379cf50b", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "490b8005f04f1d162697ee25d6f381d2ddf287090829b131754424e06d41124e", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "7fe4d342e7e18d78e6b3535f3b48757357f0d7825250167f47066cfcf618cb3b", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "7fe4d342e7e18d78e6b3535f3b48757357f0d7825250167f47066cfcf618cb3b", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "25f68ba7e5c5e48c514d15c556418147b71ee577e4a63e0c63d5938785de8606", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "2b2422652de97debb9027acd2c6dda42094dec70efe8685c175254a8e309fc51", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "1ecf3e2bd03d4d20e5627d0a2c7c12bd3688f837c72fca24df92e0c340c29251", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "25f68ba7e5c5e48c514d15c556418147b71ee577e4a63e0c63d5938785de8606", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "b3b9df56a7360f14f4491a34018dff696a9cb16b6d114a35c0bab08dfa74cb86", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "f722760a57a50ed86eb75593cad5a9381a7a22427c10b51368378ca45358227b", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "f722760a57a50ed86eb75593cad5a9381a7a22427c10b51368378ca45358227b", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "f722760a57a50ed86eb75593cad5a9381a7a22427c10b51368378ca45358227b", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "3be55fd15d18d8328b466928a147543dd280c574ce1e111acd7b39dba73a1f4c", +"TR_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "f722760a57a50ed86eb75593cad5a9381a7a22427c10b51368378ca45358227b", +"TR_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "29cb63cd9c98874ccd4924e5a3eeef4f6f06f911190909d3d80a6af671f38b6d", +"TR_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "5e50cc35bac3be1e34913bfd0206ddd159bc8dd00fd599892625e887f80fbf61", +"TR_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "092ee84ca7051a493f9e0d32a2ae6ee1d4a672ae3d317e54db30bc5208eb0b56", +"TR_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "74c3bb87e6d020ac12f16a3e4cf0e09fcb91eb4a553cf94a3ec09b50cdfb6f3b", +"TR_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "beff9aa94464391f925928f6b6e2f77ed972cecf1cf1cf2dc0a0bd0e4c25a277", +"TR_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "151f977ec019281fbb6cda6cd5dbd1139f50759bcdb9701c0b72a245dbcd08c6", +"TR_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "adfb51e0dc31cc01a9617e1e70d0c2010c0fcef31f3019fc0d21d3cf4ae9834b", +"TR_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "d3368d27f9ea4a13df865500a1f83b95cd6f141cda388f8004a0f60ce6488abe", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "e97fe2bbab1d0a2bf7ad47999f729a81d60b3637f6dfaf269ae48dc08bafa283", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "2827bab4f859e42ca2cd1148d9314767ae43c43ac24c81d84962bae13f257c0c", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "da9f064063726be9b5f2316039192449bb1da790f2af9937c360384aee1802b3", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "e7dde99846f5370c598d12ceae007fded8a1287e000d1a70b1773a95baa1dfa4", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "c8c4fec86def2312bb8b2a6ac27a7defd700be9e151c862f00b995af3d60e456", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "6c4b2d36afd4b224fc65e98c78efd574508d375fadfd04ab685807d41af14e1c", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "b6afc090604804aa4426c542fcc038bc036e87356774810f9f130f7763c4a72e", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "8bc0fe530f1086726a5fc2ce0c25b052e1fec41cc2de480cca3c3c39be531437", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "7238162f8568aafcadb981f944bda2971231ae09aa7bf532f5ec83055680e769", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "606497c31ac95a601b1a2d60958eac25d47a84f3b6b864c305f085d4c60946de", +"TR_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "49867c8b0a29666dfe0f73660232db907ca51c3c85d5964da316306ae0db87aa", +"TR_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "42b49d727dac6f9b40230aff3090d482153d24f0e7e4ea0dc7ab79203ece4d7e", +"TR_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "24c7ad2916eb40a961b5ce30ed6157e3b5869559ae43d8fa15f4524465a3742b", +"TR_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "80fac0d43f419e64dbe1d3fe47bc213d689ccf115aa06e45ad196087d14574f5", +"TR_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "d90308301999407f505e529ea3c97a4e8b7b1b5efb8f6d3793c525088e938d44", +"TR_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "777aae18fe03f6517e4cf87c9c5a63ccc9a16845b2ca69e11db364be4395aaab", +"TR_fr_bitcoin-test_verifymessage.py::test_message_grs": "609133958195e1785654c3e5206a67d95fae5bf3e4c55f498515dadca8ea1dd3", +"TR_fr_bitcoin-test_verifymessage.py::test_message_long": "aca8cb32352f27818304a1d881e2ba436b7e4f474712bad5600aa7742d512885", +"TR_fr_bitcoin-test_verifymessage.py::test_message_testnet": "76470032a22a9132df1755eb08e3a9371146aeb7763ed6f318f6651be7114f59", +"TR_fr_bitcoin-test_verifymessage.py::test_message_verify": "e9770898be4c603d2617cc2a22eec8aa511391b00da8138e0ade9fbdb8e9fda2", +"TR_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "9ea30a6946621e42c48f668c9607fac56734699e781f011ad3dbe547abe70016", +"TR_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "35149f2013add491be5e3563d32c2d763a9f2545d6dabc917b29d5c0d886003c", +"TR_fr_bitcoin-test_verifymessage.py::test_verify_utf": "f6ee0fa0107dfce4869b2b20db3fff60e57e95f7825ec0add96d7ea2e0aaa868", +"TR_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "2e56c176152b2498dae462f62100e57eab62587d9f908b1fbe89270d80f6add5", +"TR_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "1b26e339ce60dd2d8c6cc83c0b76a1cef5ce854ac532b5a4a7cca8bd93e99efb", +"TR_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "9ac5dc5781eb97e1c54f79e78bdad7046a48bb37ad6a33e0c5bc90469ea440a3", +"TR_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "eed7d90d8d4f7560a4f685992083acde95b63af7815df8c981db49cc14d0c7aa", +"TR_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "6a2257c99a7522a508a1d3f345d8886e649463b031a6ba840b940e83aa2d19f3", +"TR_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "a0d6884c3837b2f9b90394391142b36716a64c171ee8a3e1e85fd4e951cd1616", +"TR_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "de3e02325157e35c1437924c7f9b090ad8c721f4880aeb6fe6d8b1dbef0be546", +"TR_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "feda970f9145c73e8b95953d35312c11fc355cbec880b3757a7e71590a773b2e", +"TR_fr_bitcoin-test_zcash.py::test_external_presigned": "b0b7b3fcd97f019dad6958219d214c09d85097cf2779633aff3c43bfb62cf578", +"TR_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "696fd5d0e3f38a9985d0fe9d3fac8fd45514bdc39fc50167badecd4d0cb28391", +"TR_fr_bitcoin-test_zcash.py::test_spend_old_versions": "cb1b105a498fba7d2af822f0489373745c52feccb215d7be03461edf651c3224", +"TR_fr_bitcoin-test_zcash.py::test_v3_not_supported": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "024a1a251d088e02a34fe1721d0e5bb89d9eff58bafbfa1300082144ad56567b", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a1a842de2eb9fdcba5c3083f20fc65cc483c77196b131f7fe7458f6302e289b1", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "7122ecd6aa1c28464c26886ed7c72208ad19b6030d6fb23c053387e49f149850", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "0f66da5d8c1fb640fcf75e3c204dac79690d5bc82df511dffb75ba198831f846", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "269f511411981ff31c01071ff5f5c0af8a22ade95948dc5fbd0fcbba47508c79", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "70d06f71dfc45006da5bcd0c084ff7dd2c919f0e447ef3da213d6a1e466d2c82", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "510b6648c0cf5353ebef655e9c3e77304e8d88b4af6b64fa7c88c0a768cd453b", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "883415130d2f94625ec6be6873ec57c40c4405178ab07d4853273e1041926920", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "db4a9fb4f174a21e9409a7b3313363032a0f34ebf694a0f5770b8b5bfaabd579", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "a358bff2119ded5227ae8f4395ef2f9842762ac5e95c149dd58c092b43953dcf", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "85f52ddb3d0e6eaa41c860a1a2e7764aee93c5edbf9a9ff0febe07bcd45feb98", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "54b50b6df891f8504a8f464022cad134a1e04fbe4d16803b8c126f5bbefee4c4", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "a5d634f74d0c18309040f2cc26f3fc6bfa7b58957b7308e4b5be8e63779365ba", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "806424f39dea5e1628e926f14f498e3f1be724345edf84b40b149502b1a1c08c", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "134f86520b98fcb929c231a10531eec04d16c5132f2cb8cb28f3dbada67c97f4", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "2d93ab2d9a9a5339c066d3ab58a4df15b801171ee0e6a2cb2b20f2d6f29c196a", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "80310b19d82f565d5ff8dde799cda220efa028d6f13161d724eabcddd9ced63b", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3edf9f9447be75d606e2fe95a203b75d4da5e65959a310da384813dbbbdb84b5", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "4fb825d7e8b25bb4a6b6419548858c4aa1959313d30dcc1d0d55c18da5bf7182", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "1443af9df327ea9c3c74c532dc3816a14e9511f806033c6a5904b3338407202e", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "b06a448b7a6219bb693cc2b0e6130d37c14b539f68f6acf37bfe832c1f2b9880", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "d93382338eb72ccb2a716b4f247f467206b101f853660a2fc286bed27af7bfda", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "e55baafbba9196de398a397316236fcd6b493ba169e6231839369a6b774b2cb9", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "aabcf51b8ad6af090b68a81cd28ea148f3c9cf1b65107bb94324035350562171", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "a386f6274e5f233d3d9d75208858b342db0d569c5dc9ed1b50ddf90ca25a4a75", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "9bf87c067fcd0680959595c184a0e8527b655b6560aa0de2611db4ad64f3d876", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "ad98257934c7b1ac972f56047baaf9d8debfa0295633db1a06230a8f763862ca", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "54d383566d70e1a2dbfa64afb66c4c067c0093d4918bcf542a936445f7a883bc", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "74149a762fca2985b7ea595269e632f2608afa6efcc8b492da9431454aa9f585", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "1ef6a52ab159058c4eedea3d40e2bcaad9f1907e59b48b3bfedd640b52bf18a4", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "c8abd0fd348b935d4f49f1248b324e9a9621c6f7cd101ed93e85a0c5424a65c9", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "3cdb887b6273ef2535f79a116fae521a4470614828f15addbb499d8c24b76375", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "e1972b901215e7d2dc7f268cebff8958fc65cc399972ac524f22660ce9ce536c", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "3376ef2baf9173619150c6cb69b31d5be26ab658b16bfef762aca3154b64ca94", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "ceb0f29afbc028bae80419ec2d8db0015e68041013c3c68ada122ab0da556fbd", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "04c066f93b3a6e7507881d7fbe2af1f6b767758427721ea24eddbe4dc6c6174a", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "081612b2abce8f82631c05ce143c5c1a68714d10c070f8a9acbcb675bf38b759", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b242c2c704cb5fbc0ae76dd2b5859ed284a2b68e10efc92177d34a7846fb7caf", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "96055b3157861ff718606feeddd32c159b55b88f7339cef261cf4536fafc3060", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "2dfc273256c5b8dde895a40d4e50227db601f59143213ad44c6ac5d9a2571a38", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "7b33d978f58e83e9dc4d16342dbb535d382118bda98d1b36ff62ff123660839f", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "81ae10a4495f450e95b2a62c66908d7e6c375b752fd4c076f470e45747fe7233", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "3b65f321d332e238d1791b1854961addd6dc222207d7834c9fd5a29c97608048", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "db4e25f00fbb00896e9c2a354d0a3073934c4dfb535d119e1c60865b1b9e0d26", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "ad45fca0925fb0389b472d106a962724bde4aaf1e3aa834c50ab50fb4904a524", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "ac75f97c2ce8744b529851995bc41b0daf1c99b7d31e9a7c048a91bb5f9729d4", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "cff81d806825e84fdb0f8cc9fe7de43c032c8fb3dc5437b6fcc2f990f958623c", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "4e3a7bc8d56ba701ea8957fe72de95d4b10b1722846dd634315ba15a8213d11e", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "b60379b0a533b78b5638609d63d8efb68da144ff077b7b2965455bbdfc3864aa", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "7d8bb8b9c49c3cae15d1466b8fdafd1d404c10ee8b6c9ed5e3d443ce8bf4f51f", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "31d0dddbbe34904ba8d86cd67263a404e7c83ed8670bfb40dc4267d9359c3c69", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b3aeb12d5f637b449ce45b51494a86ba6ccee748d06e38bd1ef48b09a4272e10", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "842ea874186d15a4d55b1269aaa88a50966202f2044dd046af78a4c95fc39b6d", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "9bcffefdbf21a5652273b6f6ed88a3515a76d838ddd85b5eef2fa8db50f7c406", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "ccd3524642587759661f69b13f147defb10e084bb5d5958c780367dd980a89da", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "71baee0dfd6f5f2b7a28cabf9cd642f01e20b551ce4bf53a4c41f721bfed4566", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "fdad04e0c6a048c71d841c92f9e510bf42ab16150923c623cfee3a37310df9f2", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "8bce38d3622ee5c5f42047b90b8efeb87263815847bc3680eae2155ea739f603", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "2c448dbbe5cd6313692c43a94e6cee83bb4c44fd13e2af7cc1e97504b27aa107", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "37b2c0613ca8a058c31c9fc455a4fbe70c8affc3edce34187af632416b756f2f", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "a105c20663d6ba49bb31a094a9f920e18bd511e6754b360f051702cfc0e732c8", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "57b1da161cbf13a9b09d85390375ce92313f640bf3ae0dcc85f4e562e883f0b8", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "00bb981a9ac33b43978fb08967d701d46ddca4a77bcfc0c96c1c07f849b92c5b", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "2ba5044a837bb132e1ca8b920afb112bd5a699c228007ec43d5039356059719f", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "7e38d0c24c53de080a078a5a63033226603917cd10e71d7016369096940aa482", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "d2c677930e1db8d37edcc0621df672232b1c5ba1271d4c2279fb3dcde9160314", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "427a3a6aa523016d808fb804c37115a4834c1b9f1f008d75042eb8fcd5c34355", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "707ff8e79f85af182290cca4331e8fd36a64d8c64609062339bfb31088fd73fa", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "a6d12c83462ef5e8226192a8f1c4e7ee229b7843237b9829b013e19429923800", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "8a82cc3c63366f69ac07bde84207441eb19f53d905efbd8abbb8ec965185931d", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "e9461e851403d14420622755f45d323d87f131f753e967912fb08602094054be", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "2fd5bbdbfcc038a31621cdfd0a51d950f117429a5fd905ccae20c77616118765", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "8d3159b3a8d873b251c1f3975293f0064faa0ccbf7f50ec2e2082c862f9e2313", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "f096f5814edd8cdbfa422642ca41e0498864cd2e2ab2e8559ea7f21c83c66ea7", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "62a150474c777dd825c1c57966ec5aaa0f4a3a1488db0ff431d49e0cc2ba93d7", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "84c7d518135c0cd9d5dc76183ab5d4848a4a564bf3e15606a8bc77dc002a5992", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "fa901d93e492749c0a53ed8e05a45dbabce84ff10ff62b63ff7249f37673a6e2", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "65fd87f5283cd3de664457a015d01a026dfba0729785ec9c1cf6cfbdcf37991e", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "87a70e48d302bb69944eb47c380878b6ccb4da8dc8f0b5aca7055077bc6fb237", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "25939b5306fd93d71fadd219a1b99096126ace854860223c728f9a407c295af4", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "67241972bf9362e39a28edd3847ff37ad3f0e1faaf93542b68ce90528c44f324", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "69611caecf0f05890691c43dffce509f15ecfb960bc92ecd5d6f28f8d97ec915", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "66bd88b8842568f43c389f61dda7fb4c621e97e5ddcfb4ad62551669ae66da71", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "36df5d26a873509bd28994ea085fc481d1585598a6755c14d690e5c9a42e7307", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "722d68cbfc12ecf044b72230e011578e91b7ec7aeab3a3464b69e1405cc7b430", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ec6b51fd8430028dcd0f1d53fc6d3b623378522b8468ab28db5183088d619845", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1408a451708e3f700f40a20044c13e1f68e7b056c5f4573e0b07ae819fef66ad", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "01f5bde8dda85d6c1e2c3ab26ba7ff7c27d21a950a67fca1defad7309da35bba", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "302d59a384a0943346bd4c7c38be1e86fd5a15285a881f5f8d2efa62e707b18f", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "2bcd6f7ed169242b8078e98f2db35ae39f12c9a96eb929bf243f770368a48dc5", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "b699077a4b1760bcf4ae0328fc67f13d2ec8f8293212c13ca25ce20e525b67e5", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "93048afc5a90959ebd1c59fb73d9db4c50e900b4f75fd0be133314a2958df6f2", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "eee688fd6944f05a6f57e8c65178d02faa5649af2f4c7d0fed51f98968eaefbb", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "afc74968fbc398468b0c201c8f2cf35d087eda742857817951e9428f855424ca", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8215889177f6b277635643ad8347b347c677cdc8a45067aca950309ad7c69267", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "b72f83c65e5a2b0a75fc726f637301362a0a5f9cb4af8aa24b8aef73d90ef4d1", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d7c43b48cfb201415c031d04e4aad134731c6e6e829adc3ad78cfa19b361d010", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "619563387746284c06247dcc946cd097e7f2a8cb72d64e42ee44ac549bdb6fae", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "5619531849e6e4ee367cccd1e759ead76ded8c6e8963642d004d009c0697fcda", +"TR_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "6f1babcf0e3d3ba9c01b17908eba05e94490d2b3640195171e54a9307d3655a9", +"TR_fr_cardano-test_derivations.py::test_bad_session": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_cardano-test_derivations.py::test_ledger_available_always": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "b7fe3e3403a59c925813c385e55f2fc035b774d32898f72346ff2de92c217f26", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "e068ee5a73a81f5afc05a0db5e5d540e7e64d3b2b16a386ed9312fce254af771", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "e7bcc033889d54f0f7c8bf988f1992ee9f1c6fe64003ef5396126d99808cbba7", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "c95d061315b003f7163a30953b14788e4a32a6bb231605f85d67e770d898efef", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "b0b2503292cf68f91e549d90d5741c9991542cb3cd1befcc1117111b9352f409", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "5df2f9f61e808eaaca9e7f2918528fc3a41ea447d8a39ee9a5ae6619ee417b9b", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "ddbe80ad6fa4e51113aa6c85a0bc3ded6b6234b5c17865422565b17830eebf0e", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "226504c7ace6ad9d510c440c20be3c8cc943912aacf282281e8282faf1c698be", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "7507368a66f6fb47e8cf31c9039adf84f2e3c0e7e31ac24571185f70ff363997", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "8156ce47b90c0068b5b0b4d9607721e3f6ea6521ddf63ba252be4fcd00c26c57", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "e83fc22f3b219d45d5bb20793205402440105f988cf2fa3734da92e65bcbbae7", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "c9b81f2542b9145e820f4cbfe6994a5999c7b0f2e2851d9bd468c3ee2f045364", +"TR_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "70958edf7883faef692571dd6d3f5ade967ed4653eaa9a1a82a22c2af37ac1b5", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "8d96e131e46f08c624f95b9b9e90fecd2bcb1ee63039adc64547f3aee9dcd844", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "c8cc58c15e1f26ed39d4a9252b37a2b17bcb0213a63b317bdda88833bd409e24", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "d24b65f00d1997d86db1ff3a5fe93015aed995548ed63cdc53bb98846b7106c7", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "a3520c08649041405f4b38200a8d675248f865ebb4c1da903748996f4d036794", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "a3520c08649041405f4b38200a8d675248f865ebb4c1da903748996f4d036794", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "8299c15542aa18c1fcfee3959f4ddc697838c80cffd04e73d6b830c676c07545", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "00d4e66f7dd9051f0d54d5a4670da2671ef053b8600e981ada0249a3e2ecdd4a", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "8614a3afaa1a689e0edf9493eb53b5ca097868c1decd3c222bc7946c5a6f6050", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "2c6d5609ed81cefa3610db1906701f2ea352fa70ee4c443ad4eb52cb5d49522b", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "b014d471f95ae2d79e7cf5e84e11ca6a4bbfd16ceef3bf85d57b6bdea792a2df", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "46f7e37b8df516eda43f0372a4e946d23750d36d63a385c34bcc6990036dc69c", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "e8f878123b252372964290cfc9e5cb4de7639249e2e461ca3107d8010a44dfcd", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "8a6c7e94740d327f4f87bdd2a8bfb051ca1fe6f7fd04114e6bade8cbe3e2ab4f", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "14cc7c8de7a09801dfd5c6cb1d821562f9c149e2939255184ff47c437651a785", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "14cc7c8de7a09801dfd5c6cb1d821562f9c149e2939255184ff47c437651a785", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "80c760abe6861fb71abebeb448dcfc717d39afe69f1404bafed0a3cf72d4a245", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "1b24e09e455fc86fae63e155c7b62dd026cd3953f4aed15c49f23f86bf097b53", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "0cace9627b4c06e63d35fc059c56c4f694cdcfc816d0199bbcb1575a0c91c19c", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "b56c628543d2ecd081c4b6e725fe7ac4995e82b31bd982543ad567962b64e8c2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "139468b13238fd609ded6418cbeb5da32688e12ea29654c2f18c5c1f791019d6", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "f37e20da437d664566f03bc90bd4c0b8449f296405845e8d6464001f3c736d33", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "628c4f374fdd16db2a4113a9424afe46e9c0c45a55899673c651b19af60a8ac2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "519d1db1070ffaf3b126e3e4f40e7d9b00167b589e63f976a08c2fb5d8e8b44e", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "a3520c08649041405f4b38200a8d675248f865ebb4c1da903748996f4d036794", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "989b58924b5d9fa71748a7a05b5f7894d7b7e0c56ab56fb9353ac583e55c8ca2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "b56c628543d2ecd081c4b6e725fe7ac4995e82b31bd982543ad567962b64e8c2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "748674c81c6a2ca352b1b20d24ad27075147fd358bf4b15bd79d0ce8c9d695a2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "f37e20da437d664566f03bc90bd4c0b8449f296405845e8d6464001f3c736d33", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "628c4f374fdd16db2a4113a9424afe46e9c0c45a55899673c651b19af60a8ac2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "45f77237b326076088511ce7c1f0a2774669b8b9f116d655fc798fbdb866356c", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "b56c628543d2ecd081c4b6e725fe7ac4995e82b31bd982543ad567962b64e8c2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "22596653378ec5cb7f1b75ba6ed95c09091404172f02881d657f2e05e950af8b", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "a281bf8b7d62bd15ec186baaa093f11ed0e7333ad7352ad2d54a230d0161b340", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "ab7c4a2db631f5eae90bcf4e40e87190d8b656551add68a9e786cf394e7770be", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "e83d3afaf9c6b489158ab7148104caeda358267c76e6d1a2e15803b11b233b85", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "cfde4d45ca8921c41543332dcd48f7ffffc5c8d8f0d245bf9ff5bc8f138bce05", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9dfcd1e77ab65771a42c03c8c59e4503a8c6933abacc824d15203ea9d6379833", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "d452a284bd598eee0ed1fa15a241e1ed06e0d0343b9e0a4b6c578e258de760fc", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "25e4a3a603b841cb8e19a1463fddcabaaeb26ad6e4f652b6faed7e41447190e4", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "134bab4a8f5577e982815f7b8d91b06290db268809d6be5d74124a11f5c16ee0", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "fe0f88d3717c8b2341511aa58d0ea6feeafda0fbe93caadf9f72451d8e833359", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "bb2ef695de4a29c89862ec1ae61c69970dfa41e54b2d70e4c3791ea1dba9aa33", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "ddcba234f6bd794b6a3ae4240e150ed678050c2ad7b1cfc1efbd4bc7784a7376", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "af83e9753230c1e9baefdb40933a6bfdb9ab4305d7694b739431ef873a2fbad5", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "27b9909db24d7ecf671c112abbbeafc0d822616ff5fd2df94ea9e6cf9ef67610", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "4639a9a748702cfa675dcae9534991e3da0a8cbec06206ec947afbcab8760498", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "7af39943a066ba377b0cbb6eb18bb8f38ae722542f622a4c84ecb2f4817cd412", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "523a792014c684a092002f47bb6229b4d00bcf47c92f1ba2da5ebf44e370dd23", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "5d2bf61be3263144bb1c9d14c7aeded4e1e67d395d63f5a770cad603a3c76f5f", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "3aa19e668d5db55c1454058bbf07a83205d77443913a71c262089aff7b9cfb15", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "83a4cc736a2fa99f267cb2f6af45d5e2a79eeb78ae691b13cc2e2db705f582cc", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "a87038b308450bd0c49c3c43e3bd9be88cea5f735685ea4fd3e58b4ec9735b8a", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a316e9a7166e299c79c7475b9c53a0b6321c963635322db4a137fced1684c945", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a316e9a7166e299c79c7475b9c53a0b6321c963635322db4a137fced1684c945", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "f72d5c948909a4c737cc4e8c784a3af163107240a2bb1d5b8ac2f31efc1202e7", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "102aa9db9ad7b2a01a9e9545217e28218b4113359010eb4778a435b077f29e46", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "ff84132eaa62b853360b47a9d7d745f6285b3c2d2b9df8570d73021463efd608", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "aefc39ebbdf37ce86f88f9d4919f672e5be5b915f12f8126158cb31932046458", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "ef999a8b4661c5c0a02673afbe8c77755382117744d50c76117b6868a3a26972", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "41c7ebe1f9b0e70fba4bbb8cd99f84f245de0386fe79549a4a62f26db9424a87", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "bbbb20e0553a5858b03bbc7138b132aa1e1e237bfdf6d8828312957f7988c5e3", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "119fac91c67d64fce7687503af80e06d64ba6cd84b1e56ed63a9e9f88bda0352", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "b56c628543d2ecd081c4b6e725fe7ac4995e82b31bd982543ad567962b64e8c2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "41d64465f1c09c9464847c8d111881aa3bbdd8507098130acf900b6aa06c77e4", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "170461614cb0ae1faccc0a6ea5dbbb2ccec63455cff0d045c8cd84a31a754b7b", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "ea8819ad479c1e0e98e5b9aa8da7de17f664b8cc09f633c322886757f3060dc6", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "3481789c3dff6a9ac26371a42f3f43af4335bbd1cbe97d1aae3dba4fb453fa4f", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fe60c668682cc152624662ce9ef7be699b64a29e653c95fd451d73b004761abf", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "3f09ec1181cb688d15c7efe75a1472fd88492e678d53bc55edbe59ef3508310d", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6da145fe9821f6dc3e42c3eadf79b9980eebcc8ed5aa0a8c8a9f431055895e45", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "b56c628543d2ecd081c4b6e725fe7ac4995e82b31bd982543ad567962b64e8c2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "55888f0abae9677166030cb6c540e255b5b6b4690aff1a284e1adc0713c2663a", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "d600bc5082b2867c16dc51088833f8cd92b6637a807f48443fc63f99d8b4fd22", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "09dfca08a2dff2833af9ac680dc90dd56fbb11dc0344930c866168ab35b90421", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "7625a9ce91422bc36229fb94ee6bb12ae6d9a8955d5546aeae382dfd2150ce96", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "aa7cdeef7fcdba95bbf72a6c27bfec4bcd74f979032e5880dca754e85f534a2d", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "7e0432718c4f391f84113f9665b1ea57227f4019ba152f22aa4844c583adb5ba", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "ae1713ae32310ff2e4bccec65bbe5fc4933447efdae313826183382447afca40", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "af88a772735cfafd5ced8532e443318dcd312a6ec100fdf84d21356925b7e273", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "6cbf33dee721867455f0e0dff23f1417940bc6594090e46cac6b52214e803806", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "625a64178dd4dd382fbe9260f85bcb19ce1679fd868bbff1472aa735f80420b3", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "625a64178dd4dd382fbe9260f85bcb19ce1679fd868bbff1472aa735f80420b3", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "f4d2d782749d7e84b4d6d61c1d107f7a819d6564cd416a3e38103e8a40ca37e2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "b164c98980a94a74712ba97ddaa596d208dfdf4c4670ecf09f7ccf1bdbe963e9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "d2c9103c5c8ec07cadc4630f72e764c100fca520e99a76301a4c46e5067dec8e", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "47927729861ed8add0f69f1d7eead995019980b8da4a3f17d6535b83e4f24c30", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "4738917f32a6bd3d13d78e204f39b8330b8abe0aa9faf25e690a4c7f2c1044ec", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3ba82b88deb7e85ed936bc3a83de726d4ac2689d792e8f3060ae9c08f6157e68", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "a3520c08649041405f4b38200a8d675248f865ebb4c1da903748996f4d036794", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "a3520c08649041405f4b38200a8d675248f865ebb4c1da903748996f4d036794", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "d34568ae7a25940e72659b96d30d001f8c36f2932d637b443f4a70e91ecd091c", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "809f25e1ba519d286baa59c54694d4161d5b46a6cceef09249fadd7f2ffc0be9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "19f51b729d0c72dde9edfea5e104c97252a23e2170f15a1a4ef35f25142c64fb", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "8d96e131e46f08c624f95b9b9e90fecd2bcb1ee63039adc64547f3aee9dcd844", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "2c6d5609ed81cefa3610db1906701f2ea352fa70ee4c443ad4eb52cb5d49522b", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "b0b56e8c43f2c1d344417daae9bf18b6286b6e4da364b3056d1540aa31f6deea", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d682685a37b64ac3080552bc76b46707f10eb26a62314dc0ff02cb592b2d77f7", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d682685a37b64ac3080552bc76b46707f10eb26a62314dc0ff02cb592b2d77f7", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "9deb467fdaaaa2b691a6ba95d66777883f6a4d13406133ee792028cf117e0410", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "5f93e6892ab22c3fba4a6d86fe24f45adfe3afacc9ee05df84d9f3e412023980", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "cc4bd807954159208414d6f1e52283fae27906bdb6cbc28331e17ff32deb3c1f", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "b56c628543d2ecd081c4b6e725fe7ac4995e82b31bd982543ad567962b64e8c2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "9deb467fdaaaa2b691a6ba95d66777883f6a4d13406133ee792028cf117e0410", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "9deb467fdaaaa2b691a6ba95d66777883f6a4d13406133ee792028cf117e0410", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "a2234695ee5a0b7a7bfe1de2898cf061a19e078eba17f22f9fb3d7d3e18fa3a0", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "9a9c866f20bd8f5636364cf7655ac24a3141c866771c77e1afe7a21ece7f69e8", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "579e95d1d7d86daf43ac33c4e1001565a8e4a6aac2fbbe68689e3483bd8376ad", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "de1cdc9b04b09b5592a9eaf3b2abacfd72dda47a4801a88e32a9986610ab3a04", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "44b533a60baa3b536f2287975a43b98bfd5f537f9976bedba6344f18006805c6", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "b82e949ef16f80255b12c687d5e12d2fdee61155824230f4807e95fd7a7d6e25", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "b82e949ef16f80255b12c687d5e12d2fdee61155824230f4807e95fd7a7d6e25", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "b82e949ef16f80255b12c687d5e12d2fdee61155824230f4807e95fd7a7d6e25", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "b82e949ef16f80255b12c687d5e12d2fdee61155824230f4807e95fd7a7d6e25", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "b82e949ef16f80255b12c687d5e12d2fdee61155824230f4807e95fd7a7d6e25", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "b82e949ef16f80255b12c687d5e12d2fdee61155824230f4807e95fd7a7d6e25", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "44b533a60baa3b536f2287975a43b98bfd5f537f9976bedba6344f18006805c6", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "44b533a60baa3b536f2287975a43b98bfd5f537f9976bedba6344f18006805c6", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "44b533a60baa3b536f2287975a43b98bfd5f537f9976bedba6344f18006805c6", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "9a9c866f20bd8f5636364cf7655ac24a3141c866771c77e1afe7a21ece7f69e8", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "338f29a07b337859603a793eb50afd4597802ba16d9ee8014aad348e6fe39f84", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "48f69ccc2e6a3b0fe4386875a6d6b78c2fe6c9ec10fefe923aaa04b12db0a22f", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "81c9fb3d1e6b71b4f82985e1824ad20effefe43574fd591827deffbeb0b93f84", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "1dd412dff848f924e21bc34ef829dccda60690817f1dac25f223560311f17c28", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "908b6d1598674c205b0117ff80f51ae4ea940d1dedcfe99122be2bc8a0c05b34", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b64cdbe88daf68464e729b5a1fabf8078bef9de84fa44650f4323564ace8e794", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "2e3107408e0918e45722a600d41cb4226798d6b08536abc2b8b2c1b1e881bee8", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "9deb467fdaaaa2b691a6ba95d66777883f6a4d13406133ee792028cf117e0410", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "9deb467fdaaaa2b691a6ba95d66777883f6a4d13406133ee792028cf117e0410", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "8c51ed6be33d03151d60565f1da884ea5c70b4e30c225bd2e0ceed4a2d32beed", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "6eb3c11e35302cc37595fe99edad2c7fc58c08ded470a64cf1715050d5ca255e", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "fac73a5b38231e6bae25dff18ed3f65a5dfc2304d7ff656c929f38c2984f41d1", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "ff36ad7a430d689380c2007f6f0f2cbf719caa648435503f4b5c894b930917b3", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d682685a37b64ac3080552bc76b46707f10eb26a62314dc0ff02cb592b2d77f7", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a316e9a7166e299c79c7475b9c53a0b6321c963635322db4a137fced1684c945", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a316e9a7166e299c79c7475b9c53a0b6321c963635322db4a137fced1684c945", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "ab549ec095acd2054659e0fb7ba82bb4d3b9597e27b2a588fcbd9109330ed3ae", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a316e9a7166e299c79c7475b9c53a0b6321c963635322db4a137fced1684c945", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "9deb467fdaaaa2b691a6ba95d66777883f6a4d13406133ee792028cf117e0410", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "9deb467fdaaaa2b691a6ba95d66777883f6a4d13406133ee792028cf117e0410", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "81d1fe342c570b68df49984c34cbbbe9aea72f43c56eab7296853e5f565cdbf0", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "39f41b502f3496aaf5f68c01014d6b294aeac9f36e34c299ea8a5e868c846996", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "2857adfaeef92fe193ccace2da7cd4ab98b01a294c8ec8e4b829066dc80167ee", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "f5bfc4f9c766a71b1d9b308fdbe720bbdc87cb24d6d81be3d44137934b58cb16", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "34fb402ceee01c3271bffa92a5f44f097bb7abe278b9042ef88d1d2c6d211274", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "b82e949ef16f80255b12c687d5e12d2fdee61155824230f4807e95fd7a7d6e25", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "7208d3f1fd3e6856047155b95b1f84d7d4d8134cf33bd51e5307664000864ea9", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "e49cf8a8070b8f9f1f111edf7a54b31869d4e9508bf66cdd0fffad49b2117794", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "63a73e3cb40ccc98946b4d0f3b140757cf33764aba8b429b411b86afbd573dfe", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "dbb7d13427b7100cf07b42fe2886c0f5e1fa43c406de0dd2947391cc93db95a0", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "cf65238e013b6dcde4b6124934cadf31c50e96cc71eac5db45cc32a157b170fd", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "88d51ed8a4325b5548ecc4b2c3c340c1d46e6a83b75257a5682a33430515d9e7", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "628c4f374fdd16db2a4113a9424afe46e9c0c45a55899673c651b19af60a8ac2", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "e64d1968d3ce6b4f4fd02e1a2f252c065d343debd86add2c7cd777ea816f6142", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "ae3b026d2b53703feb3e6549693172ebe3b08712806cfae1d7dbeeb5b510135c", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "af9a8d726f0ec71d3b923835839abaa591e0928180b480388095f55532ab25ac", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "6ace079ab8fbdf323ba1a919b89238cd5fdccc7c1d6fc4b7b1eeb4b787f90b0a", +"TR_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "e0023064f2a2891c0481f9de573372e748e8fd7d552ab8ceb7c24ddcc2b4dab1", +"TR_fr_ethereum-test_definitions.py::test_builtin": "6e7cdef8d56f0ff5c6c16c9ceb3b4826ec49d0d9377971619253765263ebb2bb", +"TR_fr_ethereum-test_definitions.py::test_builtin_token": "64ea8ea928697805cfe8c698e532522de009357c49944f46f6fba638086a3363", +"TR_fr_ethereum-test_definitions.py::test_chain_id_allowed": "b680939d052964b1bdf383bd9355c9c1749fc31ed1df1b965faceef000bf28d7", +"TR_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "41cd7accc9fe0be129c789e64592002b47da9bb60c812f417cf6822a12ffc4cf", +"TR_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "682ff8da2d19c29693e36ff8e964c1a34d4802e3537e0fb164fe81a5e716d02a", +"TR_fr_ethereum-test_definitions.py::test_external_chain_without_token": "dab008c672dfae6e2e0c6f638f83847bafbda6be5a6e0ed6297fe2b2318836d0", +"TR_fr_ethereum-test_definitions.py::test_external_token": "cdad5875a7a8f10a49bd25d011f82a85473c1119d1a99496368461580aef1a44", +"TR_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "7109e18fece1f9df9df1120583cdca68d38ad92496a175249c97b88d25169666", +"TR_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "cb0abef5293f9c33a98be8cbf9a7a570249e5a4eb612e31f3c7c663fc969fa90", +"TR_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "74aa2ea7df50951006bc38266d13fd4d45e05f5a2ea12e3e91165a97899d54c0", +"TR_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "1d1e0462de59aaf698a49abfd0a2bd5706f2db4eb050426fd03cb5943f5810cd", +"TR_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_slip44_disallowed": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions.py::test_slip44_external": "1a77fc8fd0cccd22cc3c12664fc1ef8462cef90a3f7abe1190715d934f32745e", +"TR_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_bad_proof": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_bad_type": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_missing_signature": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_outdated": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_short_message": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "56588927f779b12e67b3ccce8f21e084c0797ab78f80f362ca4b9d58653dfd10", +"TR_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "e1f0c92f966bace612e4ea4898f23e2bbf416b9d09a2f343f3671ae10aad5f8d", +"TR_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "b3964b75f7d11100e4723811e9c9a48e512dd740eb25ad38d0d1681d78ebb4a2", +"TR_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "83d535a5bfca17db1ec6bed3adb189a18403c816631b531e03351a663bcee165", +"TR_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "a05d1178e5cd45bbc0415e16926868f6ff484f279eb7272aa4134681f3ccb000", +"TR_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "287bfa89c920216f99c4a83d52598f8bf73a00a2fd5c7074ee2a75b2bed91e6e", +"TR_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "48b1afc06a36bd110a9fe17cfeff34f62b3f69bf382f7c63d6c27193b3388ea3", +"TR_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "a07460e4d86f9f5d4826952b8707f88fff160641a7b318b2651decc200a2a28f", +"TR_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "6a47e35ca9359f3dad17859567fa06afc8e20e5a77563321eef855857609ea0b", +"TR_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a9e312956d4c871128255ae995d5c63874f7a8c31c4c44019cea7eb62ab0dca7", +"TR_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "6e0d661ca77de5aa9ca1a8198a98d780649a5daf09732f99101b73a5259321da", +"TR_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "061e39b3fbebc9b151aea095211643710c24c036831bc56ee2747868d1f48490", +"TR_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "ed766a728f40a6302d63f86ababea9952f803dafb14901b4cf0217bf5ce42846", +"TR_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "ed766a728f40a6302d63f86ababea9952f803dafb14901b4cf0217bf5ce42846", +"TR_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "ed766a728f40a6302d63f86ababea9952f803dafb14901b4cf0217bf5ce42846", +"TR_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "ed766a728f40a6302d63f86ababea9952f803dafb14901b4cf0217bf5ce42846", +"TR_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "406365375b9225eb10ff5b58d21acf3984b181e88e2bc2365314e752cf47e88d", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "36d760319331d52fb082e3899015935cd0401420211dd0e5c85824475dacab33", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "586272b8e1e612e1412917dd9a1aabb0fefaa5742f89d4258f4d79ab81dbff2d", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "e3378edd9b64e52f266933b9462920d911cda131fe478ab650b700b12c5236f8", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "bdc48657568daf8d2f9f49ed975ca9ebbc397a9cbb8eb9e0874ea30b98edb99e", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "895128072f4fcb82848dfc0d477546ee05daaca354a683beac255d9afe6b5a02", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "586272b8e1e612e1412917dd9a1aabb0fefaa5742f89d4258f4d79ab81dbff2d", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "586272b8e1e612e1412917dd9a1aabb0fefaa5742f89d4258f4d79ab81dbff2d", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "586272b8e1e612e1412917dd9a1aabb0fefaa5742f89d4258f4d79ab81dbff2d", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "d2733916070fa19f8dcbbac0db10602ad38ebde771548fa350553d0aafd5b90f", +"TR_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "01b7473e6136faefb011a623a8054133157543d77cf7ee5154ffa108b3ec5ec2", +"TR_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "d191b81149079718d72659c3e9adea750757bf0f5ea473e4c7a983154ec6d822", +"TR_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "0bd668bf91cdb2920641bc4f3b11876b3d34066db55a5fc539a4c2fc3e67ec62", +"TR_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "445ebc26bcc38ff46abdd1b1a11de95f36cd3f393eb575ac49e75e263e0c9784", +"TR_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "49b208a90a7b53454edeb50994bd60d8fe6c49eff53ca0b560a6a14dc37dff57", +"TR_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "3306d14dd0879c3978715353f9519470a4ee6b98faa8806630023cdd144f103b", +"TR_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "657217f5de368d2c77206312d016449e6eeecb871b561d9cd371acf11ff18f2c", +"TR_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "fe972310ccd0e54dd448586fea8d4453ad52849d9425fcf339921baef314edff", +"TR_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "28e1155d05b7344e71bab8ef31b9b1153a71be9ab743571c5ff65159b5a660cc", +"TR_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "a46689217dc20907b15f14f35348fcc4d180cb46e6a5d3ae45ee11d6bc0724dc", +"TR_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "4ca98cf88a82028cd9984f734b0dcf22b6133f0415829317a58c538e00246245", +"TR_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "125c7cd8c2b126b04234aba7c93536e2dc815cf07e98826ffb4732a9d6d51c1b", +"TR_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "79e53359a5a48964b560d4b313f619f86ade5b4792593e6520b29a23ac8cb36e", +"TR_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "4da28f26aa402e1228f5cc61c892366fe4001aab48f44363388c2db1e0e61a61", +"TR_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "3d9f6f7d1bad5c4a80247ec98cc33533d52a3d19e11459d3303204acef4c965c", +"TR_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "6ce6bed66155b501455c34c7c2703967e1b32bc80d4bf6bd793be2a88f09a78c", +"TR_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "ed3657c57fbe3c241430f52ff2548bf9a9c7e5a6e0a80edb11f03581b3fee251", +"TR_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "6fad230804d766f54d8ade46974ba197ab6448983b11bf91f677cc4f4d7be296", +"TR_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "4ca98cf88a82028cd9984f734b0dcf22b6133f0415829317a58c538e00246245", +"TR_fr_ethereum-test_signtx.py::test_data_streaming": "ce2d67deb67bedbf48ecdd681babeba14b0dbcb033ff0aea28fadeb28a43e99b", +"TR_fr_ethereum-test_signtx.py::test_sanity_checks": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "5f140fa9c37edb1d605a82655ed789638833c82b21a21e187e3a6a1634a2b955", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "aa5e3dd94b89e013ada9b88d1c946069c1446f623dabc61b8fbfe779af0983f7", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "00bd1027e609029985194f5165c83129db8247d0249a38c159d12f5390febaee", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "8ad6a2c8303119b72b19e12c460234499c9054d199427d847ee39b7a133e51b5", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "00bd1027e609029985194f5165c83129db8247d0249a38c159d12f5390febaee", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "5f140fa9c37edb1d605a82655ed789638833c82b21a21e187e3a6a1634a2b955", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "5f140fa9c37edb1d605a82655ed789638833c82b21a21e187e3a6a1634a2b955", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "017afffd7d17a2901690106afce741e9ce4828e2c80a85c4f0a29a3f3794042d", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "017afffd7d17a2901690106afce741e9ce4828e2c80a85c4f0a29a3f3794042d", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "5f140fa9c37edb1d605a82655ed789638833c82b21a21e187e3a6a1634a2b955", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "5f140fa9c37edb1d605a82655ed789638833c82b21a21e187e3a6a1634a2b955", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "fe2774d9fd820f8ea2bf7050f62a382b25fd9cf0828d712b36bb83fc404bca12", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "ebe4f5fd2667a6b1076078b3f4dd7754afb28690013fc6df2181b1c995600be7", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "434dfc646276b2452ad0c1efa100ad95db5b17607331983e1d4a1cbdffdaacec", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "5f140fa9c37edb1d605a82655ed789638833c82b21a21e187e3a6a1634a2b955", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "5f140fa9c37edb1d605a82655ed789638833c82b21a21e187e3a6a1634a2b955", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "5f140fa9c37edb1d605a82655ed789638833c82b21a21e187e3a6a1634a2b955", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "9992dffcd5875de94a725d640cf31f99da9a2786f507362691b9e75ac053a9c1", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "870749180078df44eecd1f7ee87f012290b3c5233dd560b0b802ea8707facbf4", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "de8a2021d682b8b5f921cc33971c63f6fdb91c4a8d944a74c20a298d5b894f3a", +"TR_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "a4bc040ecad6959e3fbf365224c4e8d3f2a9eb983999ef7e796897b8e9237fb9", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "7368293677f467e6a280c7576a42d90337b2d7b67657d3271267b5ff77fa22b3", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "8521a8e560677582736bed14c620e8dc7fa7031d7ea89a81bd3c1e55e3134886", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "1d2f93d1d5ee619d25a9ce189bcc0012c79f97ebde7c4d7cc00f6400f56488f0", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "985d7e2c25914c344509b5c2001d90ead55240ee8f23764ec9c0de82790bc2bf", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "1d2f93d1d5ee619d25a9ce189bcc0012c79f97ebde7c4d7cc00f6400f56488f0", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "7368293677f467e6a280c7576a42d90337b2d7b67657d3271267b5ff77fa22b3", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "7368293677f467e6a280c7576a42d90337b2d7b67657d3271267b5ff77fa22b3", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "b25f9ea76a3e1a161d51d32ad3b95e51a1d2d33a02059e8342aa8ed85c6c292b", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "b25f9ea76a3e1a161d51d32ad3b95e51a1d2d33a02059e8342aa8ed85c6c292b", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "7368293677f467e6a280c7576a42d90337b2d7b67657d3271267b5ff77fa22b3", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "7368293677f467e6a280c7576a42d90337b2d7b67657d3271267b5ff77fa22b3", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "65c2335578e1cc9723a0da32196eae066e7d77ee5d33515f646ed3f3c95ecc10", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "bfc225f3d99331e90215d3032f13b8861f76e81db8f089c609410f508ab42157", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "b920b6508f5b487f041a249aa003dfe0817b9fd39d298390ff42e1bd66e6ef67", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "7368293677f467e6a280c7576a42d90337b2d7b67657d3271267b5ff77fa22b3", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "7368293677f467e6a280c7576a42d90337b2d7b67657d3271267b5ff77fa22b3", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "7368293677f467e6a280c7576a42d90337b2d7b67657d3271267b5ff77fa22b3", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "9992dffcd5875de94a725d640cf31f99da9a2786f507362691b9e75ac053a9c1", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "6fdad8deda7ec97628d0bc56b0b3c2f9c05ecd4335ceb1e552b4ef6d60680c06", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "4039a717edd1997a1219148336a82da3c0cd5fca215c5de06bab6e1619a35d1a", +"TR_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b9f6139da0b6f0873a5fa5f08cb813aeabcfe47e9100620abbdec05c504574ce", +"TR_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "9ed93dee83be3b6e6b0b0b098c0392b28d7c1fc6548ca42f7850afef32f0ab4d", +"TR_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "f1b96b814f339c51227aa2119e584deed8c96b9bad659a21327fe093032e8472", +"TR_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "d154ee92b42bb03475996d2295fac48708ec4d3967b3474031978e6b0670a4f7", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "57540e2227d5a7d903123ce45270cab728ce866652c6029bb36668d07bbd639c", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "85d495d3e2a85355577749f58c78576c44792409267ccf332549ad594ac04782", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "bb2b550721a4f645f473876375e1f4365a6de731adebffdab189189626c2a0d8", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "38b1a1f3bf809a680d52ff4b74080cc7128eb2dacf4b795fa6aa5cd020d9a280", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "e9811be1dfb85e1079867a3e7e948169b7ddb1cb1595f3a48d3ef436d02d7402", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "a6ef34e6fed12790fa93ca60e4a6a3a8a2a60aa7911768a32904f7de908e5192", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "57540e2227d5a7d903123ce45270cab728ce866652c6029bb36668d07bbd639c", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9d85d324341a5bc7ba9002f792966967278f08e1b4856452b1eb67c6ec292f1e", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "670021ec836d1ec624c6ff27dfce21cbe2ebfb763b179910fc8346e07758c977", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "ef060e96ef6e674a2220a27c78b3e71039620e1162a5a147ff6b5b7840f6504f", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "d41e845207fabd6f5a43e1068fcb0d7e4508a1e41e8043d9baa01ec029422540", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "25845eb2262e6456856a3030c71bb6d97b4bf4023295f35aafd3126216b9d838", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "4330235c342adcba66460a221b1f2a1cb35cdc78b630c7561cd0768adc264e6b", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9d85d324341a5bc7ba9002f792966967278f08e1b4856452b1eb67c6ec292f1e", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "9d7ea086af5869ee5bc35ce230f2ded3301dc417ea396c6804363f8b2036b5a2", +"TR_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "9d7ea086af5869ee5bc35ce230f2ded3301dc417ea396c6804363f8b2036b5a2", +"TR_fr_ethereum-test_signtx.py::test_signtx_fee_info": "58151ad3cb55ce0d033039b7f4da1ed33f79df15d97227847ee3fcfb3e5ee085", +"TR_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "b53c1ce64f1c2e34617eadc5d12d021d90c76e015ca13c9e952075829250cc1f", +"TR_fr_misc-test_cosi.py::test_cosi_different_key": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_misc-test_cosi.py::test_cosi_nonce": "d5b9b38110d801d3076285d71cd0feb33f6f4cbbf8a0d185cecd63c206b254af", +"TR_fr_misc-test_cosi.py::test_cosi_pubkey": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_misc-test_cosi.py::test_cosi_sign1": "d5b9b38110d801d3076285d71cd0feb33f6f4cbbf8a0d185cecd63c206b254af", +"TR_fr_misc-test_cosi.py::test_cosi_sign2": "18c4dd3faa4140d0e88c3619018ddc6fac18e9d9cef8b2336bc138f54f37f21a", +"TR_fr_misc-test_cosi.py::test_cosi_sign3": "903a498418a5167b502e83feced01e249616a9c19086fd6a8aad3162343fcbe7", +"TR_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_misc-test_cosi.py::test_invalid_path[m-1]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "5923a479a285dedaf22cc4400b3d2a528acd64a82e5fd6ad27769391069d0dc8", +"TR_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "c239b679df5351e5797c8de2b405682b6be4712f0ff3a26616b9e8f5ba7394d2", +"TR_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "b0ac793d19563854c0a4d0358a21e44c96e29edb8bd63df7758faba53ef055ee", +"TR_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "1e1d5880b9a1bc66d9f7f6647e5857ef3e1a360ce88f41293b9cddba1e23c0f9", +"TR_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "bbce591e7b7a5dd53ebea28ee3ce03ea098b1bc222ddda9fc3665676ac3baac7", +"TR_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "547a074469f8d505f7abd3835a738f72c205dbc5c174bddee7d463fd3cf8d1fd", +"TR_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "0b1b124b548691bb21bf3db06818b21e733aa26c01614e19df17db8eb9a53c91", +"TR_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "e40686896d84f73f4436066dc04fa5ad9c23997306992eb65f85e6475e2faf5c", +"TR_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "5475954c5b6e31cd4926ffbfc6aa5932f178e6aff84e4de0415b9e79296cb5ea", +"TR_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "a4d134cc4b6b99fec2d82ffd056525fc232f180ab62305ded03a2237109300e1", +"TR_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "922adab3a0d3ecaea78c0b2fca3ca6fb64b3a92cbf9ca1b5adb2bb3ef3de53fe", +"TR_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "5526355ec51fada60204cfb689340a0b252273170be67a6fc86bb858f3a58cdc", +"TR_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "0911c9cf6c425c9a5e2563e885507c6ada0e426369072545883b7fcf08272fe6", +"TR_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "d8a31c569631dc04cfd865e429256629e9e52409d3ffcb27cc8a2358134f8367", +"TR_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "3d17ad74efc971eeb94630eff54c537465c25c73cba0fe4f1afe82c83ea48dad", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[128]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[129]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[16]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[17]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[1]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[20]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[21]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[256]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[257]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[32]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[33]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[3]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[4]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[512]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[513]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[5]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[64]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[65]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[8]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_getentropy.py::test_entropy[9]": "5bc2e8b0a292f1b4c5e1c1a5f46cf5a6be35c5007413f32df7b293e7201921a7", +"TR_fr_misc-test_msg_signidentity.py::test_sign": "a0c60fc994ac49d446fd88bd57898788ee145551d20a649197274f355d8a851b", +"TR_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "3f03dc1867c7379553bd1c85e25e25bcbcab7735352918ae66776613c8228677", +"TR_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "bca40cbe59ac50a87e154e4e04a8211c8c80386b26fabf8ce1e094c3e2663895", +"TR_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "769b7436883b58880e75aad110f7ad47770cc92b0a85b1a766f249d8d03b9a73", +"TR_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "0a7d49aef309a5c4a5108b76066ae4407ca5b9607d760814154d7cc116c46d90", +"TR_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "7c8b328d96143818fa048f31b30cf488df4fd354b1bb1e60dcb5f2aeeb377475", +"TR_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "4d475257007d946d34974b5e1fe029263bacf424e23d8690ce52e763e2d79f99", +"TR_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "d55f0711670b7ba82c40bf16fea7e2d249210ff26bd1ac57c96ef44889c68975", +"TR_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "efcec5d7eb00fb40619fd44f32b4a502f8164438dbfbadb25ebbca3a4f693662", +"TR_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f75000f3538bd87c657eeaf6a19ae64582953dbb6bc69392e966b9c844a12b8d", +"TR_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "d726533de8633d94a65289c12cbe661e1fb0e6c1ba0447ceb19207aef67ab831", +"TR_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"TR_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c27d94bfd24841b948b4bf9f8d6cff0f942cdea4c1c634548ae4bc52ee0391bb", +"TR_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "c4e4461bfa5fa16def2ec7e8409283897a4aa8e4bec9c2819b20f0f0b03476a9", +"TR_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0248254070c3bbace4ff80f2a9f09fa13ec5d0a33b6dc68da6c915963238573b", +"TR_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "e5a14eba9679477ce154dde5226c9b85cd808b1529442d29f2f3b39e9aa0738e", +"TR_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d77b2f1ff34e04cf9846f2dc38382631367bf1673b486ea68f58533cd37c456c", +"TR_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f63958a92caa3c053ce6586175e2da6ece496c56810d874a652b35c11980467b", +"TR_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "ea11953a957731b08e4274543326a93fbfe71fe4cf025586abb2d18f6a506a38", +"TR_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "aeb7aeaf883efe1d48875ddef8adb1061239cfc052ed0cc1dc3ee6cac14cb32f", +"TR_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e6d6fabd4e7f951435b250458f886ed4ee8509763b35c092d758148922303214", +"TR_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "aeb7aeaf883efe1d48875ddef8adb1061239cfc052ed0cc1dc3ee6cac14cb32f", +"TR_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e6d6fabd4e7f951435b250458f886ed4ee8509763b35c092d758148922303214", +"TR_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "e61e20c1d1899b8f242e48870c161307a14c9c913d823994860afbbd67567324", +"TR_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7b139dab1a80596f34a5b0b4032f45a45bcfdf9e867f5a7c8d864a833ed53204", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "1aa6135d8eb2e01fd2dde8d01e82173a3babf9523cc28e1daecb2b198c9f6f95", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0248254070c3bbace4ff80f2a9f09fa13ec5d0a33b6dc68da6c915963238573b", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "74cb57b61ddee3b60406b05d6ceb004fb801f8ceb4667eb6e79d6b9e6bd48cac", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "0e860447ca5c50cd6060aa287de08fd86801bb122115f98aa033a6829a131fa6", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "6d6355a3236dbb578ceec0210a589a4e43beac2785c29998081d186ade7346cb", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b6d7059f499e521ad8577fd79cf38ea080a0a9ea9fad80a3a89975d37db35824", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "338aaf63a0cb8d738d808ce03af985083b6d37a953f9171abad7f5ee93d23798", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "a1cd505d34650e8ec7a8246be038775a612ec6f70887076c668ac512523eb3a4", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "334cd75e376fa8ec201cf0c5ac8281e368cf58a8a96b2862df91f4f678a39332", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "10054d0fee41c5c967eacb9aaf67773a4a6e5fc37cc09fb4c07d3c1c61bbaa29", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "93753e5265057278bf1bba9b7d173b3fefe202aab3e88e9a501435c228ff7f99", +"TR_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "5bc87bbe16e5d5d6194a02034e7c5a9fee80318b0fec0b2c0608ebba019d35bb", +"TR_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c93dacb377d26f17816d65e917f803c7d7197a03856b3f765dc8789981a61aab", +"TR_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7ee475fe10b159e45625bdef557c23d9381c4b383c8220d89beb8681aad539bf", +"TR_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "a1be2897f409d0073331786025227ee0fcf9a084f71033144a143c2cc98e62b6", +"TR_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "f4f153c25198ad4104954fbd20431c432350c44fbe12e895d856620b886b2c1b", +"TR_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "09752bbba430c570b26a29b21d8a95451329df3c88e16fcba1a9ae0b340f56e8", +"TR_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "86d5a27fb79ff7b10dc41b46d3128e30f08bd56ea14a2d3b82ae07f991e01b45", +"TR_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "3ed89c0af847e60fa7255c524ba04b0b0f174c8596973388eab09c5ac975b114", +"TR_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "444d50f6000f3e517f6f638f111cd7d9aee4a88be3a23358878eac6e9be97223", +"TR_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f0fd88563808acd4bbd0feedbae3372a12d5fb97f7172b6e92b5374e335da0c1", +"TR_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5360db67cbd7b2675bb472e16c58b6c9cb9213be0f1cfaf7f5506ee4fd8da3d0", +"TR_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "56703c8fbdf049a9960e31c3dc9a3a8e18b982c4ec6ca66821b3c0e94ab9230e", +"TR_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "81d9743080d91eabc0f7359fb12128831ab25fac7ddcfbe914a395fdcaa00e0d", +"TR_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "370c1441f549b4179615b989c934c6b39d116f34abfabbede8c6a62af61c9bfc", +"TR_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2b5db9c241683159d145cdaa15966510b6d6c5e0649e6b18aa1b1b202f4ac5cd", +"TR_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "99130ce2e3af662a7e13ac06578a08d2f7c9356b2ddd29d41eddc1f4f435d257", +"TR_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b8e3e69db34a428b1f6d9b866a1d3030df5b8997575ea9ab121922a0167fc34d", +"TR_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4b38c12e83c8cf8507becfd3a82a23131bc1f816a65d6fb94f62cbf0cbc469e7", +"TR_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "7dd58d1c0968368e61319c90465fb61d15b803622c5e115460fc39226c22ff25", +"TR_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "aa344f8587252a0c52bc3d5364e1b5676557e77ba80dd435fa819572b89ad89b", +"TR_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "869d65d4e20d69ab0fc20cac4c7c9abed6dc9a08221d6908504ea80d0fa1a180", +"TR_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "56b2b68072aab9867b1b78818873cbc7fdd8ac00a4344ad20d1f6231dc3deae1", +"TR_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5650010f4d15c3f7aaaa849197ca476a5a12c1ceadfe7e94781ea35d897881f3", +"TR_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "c9f3bc01b46ca7286cc323f6b3e0d61f2b0336421b17a0b9e7f93ac9c0ab6ec3", +"TR_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "425de9949fdb40f4056179e70dd1782a080726f7a48b847c85701ab90843ce19", +"TR_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "fa344d1e3b8a7282c5c14488d34366d62b2d0efac0a3b1ac748700ec71a2c205", +"TR_fr_ripple-test_get_address.py::test_ripple_get_address_other": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b759709c182aa3c59309d2f6a4d8c40d7d51e859d69800c199b3cea2f06780f1", +"TR_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "c11ecc9415174e4474803459d33ba21120d31a08cb0b598416ee4d0a5e743f51", +"TR_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "a890cd0b3a1d7c2a412abc7f632fe3ea6fd2fc594f00687a4670c4f7465bffe6", +"TR_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "b5112df3781bf94b8a6b277d9ab815f807462d664ffcaa7bc9a80ac62628b66c", +"TR_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "8cd3e6092ac452454f20a316840adffb2c8e0e46f9804bb6a33493a454540613", +"TR_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "146179e9bf4e81b21eb9e62612533d009b5e372dfde27f9412c03e73d9b7d248", +"TR_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "795ae481817af2d69dfa68581ec02c9f29a7c309c8baf8d0fb3f7fdee341c113", +"TR_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "a2ac58486a81407427d0ec6d859618ca3606325785aa5eb96be7ddca48d865df", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "431acaee211c1b13fd55acd4e281a043490622985426caefb8fc22d21e1bf10b", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "98def1f13f4ea5f190abbf5cc92b690f97b25c4572455d84043bb1490f2b923e", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "42e77d08906115f327484baef70a94c084a13fe81f3699add139ee2e4d3336fb", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "60eb1df43a3b442e91f6bf3f8d1f7abf15e6baa8bcec56d4a6a0eb921405616d", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "030f3f08f18e498a2bc2276114a33f2b1f92d4a18a98a74b8e57fe22f25c38fb", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "85fce8ddf9e6e478a739206ec7bfb35cfc70c6fb4be8d685ac49d8db0fa04275", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "fbf9ee9e2d89a25b107479e69da3011be0cbdbd8fafabc4cb3befeea55b59ed0", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "aa0ea2c201b5bdfc66459e7a804d0b3632de0243c10edb37b0a21d5063e20f10", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "1e75581c3ca1a13cd6068e217ccc7fbfb3220b70a6b58da53ffe58ec491d4d58", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "cde254884de6ced7e5cc4722f1dbbe4c48940c56be525c9f941dde4559ad80a0", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "597f6833dafecc5940f73626c3fec8159b01bba68c48155ca8d5c120ecaa89ba", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "265406fe78e15105dcd29a720702d248ee6d683c2fb5bcc695da517cd2f95d50", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "bb6b435050dcfa5cc7945ceba54f4b061ac6c7a0c81622c82eec037a420b6624", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "b28a5f82d16e3a3ac62a26cef64d530acd99167587d6dddf5dc0b55b8b3f6282", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "c1489c6a2b3be6d6023a0334d1cde750b4d64c668b7b22406001a685395375e4", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "bbd9919e3bb4df7469bdadd7e5fb01697f027a81545568917370dcbbaa60860d", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "e30e00887a55a9bf7574e13d4f15a615f36e0de3b19e64c3a58115fbb082c9a3", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "a0f113c9e159ff15b133eeb2bb37aab059c41da01bd1ee5abe5838cb38dde092", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "3d3aeeba2c3c495c4ea66044cd81713c09ea24a0bdd51c35b3e7f0425e441305", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "c795490b2463cedb17ac7f59b90cfe550940fb3e56bfa08013d11f0aa2692631", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f7affaa1fe2bba3360e1066caf77ca7ce60827c5df190afa76a879b252203277", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f7affaa1fe2bba3360e1066caf77ca7ce60827c5df190afa76a879b252203277", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "2b70c0dbfe4db0ca98265518a96fe8e0487a41e36a2dde44d66f270bc8c77dbc", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "134a337bc86e8d7e10acb84f5a1e73a71b2f55ff7cf4b0851415f8a612230083", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "e854eeea06111c50aad0841e8cff4049f84eeb061191e877a9ef3b1aa0c31605", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "8ba12be4ff755dd9ed98476bb4ec01a7cb61a3f2325e6b20ad546ac4d1b393f3", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "0dca2c3b5bdbc682886ef603535972cb57caa954d5b97c4d8490df1d6049082d", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "992302618434646d15445362af52c0d21c064fc0f5295d36ada834d49fcc0ae0", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "b406d238830226e0606f5a7e9d0f24d2c7eaedc3a34267f52c0b4c951c54ab18", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "9e0f7598cdc7c33aa215758a6c50783e14d1922f7fada69432b0fcf095a17d96", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "ee181e27ea6063e5aee3f37f2f9c33796a96090c0ffcf7278fd89e34c555b595", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "dc189a7c3e141cb914f2a65718820bab2e8f2f31da9d253210f7b5bf0aad4eba", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "a1c4e0eac3c17e1e02dba676e36fcb6d3f13eada587de2d356d6f4caf2cfc1f3", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "abaa642130dcbfcaaff7cc2fbb0040fc072b9d279fdfb2c45fd0d1dca1e826d4", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "d529cc58cfe2b576c1b1a6b5df461c75f7b712121026947ed7e3ce46a13e2a51", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "d529cc58cfe2b576c1b1a6b5df461c75f7b712121026947ed7e3ce46a13e2a51", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "86220107171788222d5fd6d0a9c4e35af362f3376a4cef3b061ee6b341868328", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "3b74bb21d8a91c2beabc74d88d169b528bca10e75f5336d516c5f5aea744ebef", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "8b381f1210b3a30961825c8b8efcae1e34914b69c2975a3c7f0eefa259b268c6", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "a16f70334180da5e0e5c2704d4721b96c909a1ac6bc56bdaafdcb7a6ddeb2749", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "4b5d6ffb3b70a56c379705ee4bd169a1ea37661794f2060233246fb7c3a6318b", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "83bac2eb7c4654e5dabccc94a03caf67f2601e0c7ab1176405032dc6a1a0a6c1", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "610f3da0e0555522dd68fa727ffa7d997bb7e403b3e426d4ae2e52fdcf58cb39", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "0e941f41c7a85d24a8e28f3c73d1eaf753b72973915986f84eab5c5e99115297", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "a269142e362c2f49d084f1c59abb20ea1b46fa21ba6ba01782cb73b38b369c5a", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "d011bc5fe6aab3f1222d37696bd6b4534e03fc5b9c1ae56a6bf89fccfccdd03a", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "5115b0af50c0dceff389ec5daa871ee7a0cf91390457899bb5569183ff91993e", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "e3114c4ee6620a5bcd85a4988865965846361752f4003d76ecd989b080d783d5", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "2aac7734f5156dd2b18837df09907047c98b9436a7a585577f36ba9b60c912e0", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "9d0a26b66504ecad72dc30ab1c69f9917f9fe039240bed0d9ea796850fc2a887", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "acf54275d8955731065a9128a0489aa213cbd3c3de1e8b0f52cadb2f921c1183", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "23f287c5b771f4a3e03a68e03d7d3dd3021bd08d8407d6ae84de4aabcd86abcd", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "24b9578fe029dbb76d6140fe07bdcfdd7631a1163bfe3ca1a2b853c091889b17", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "2737021161fca270930a5cdb8739b8b8f807e1aa98db13b3c38b5f5de0880dc6", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "b2351cdfe37e44d7dce70f8d423136410d94ee1d089d20bb5cdccce0f5883ce6", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "6d48d179e9bd4e6325a6e013014d31428de3f3f499c3ce2c98068b7123f530fd", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "61c2ee263667ea5e2006d72404d7590c37d1e52f97e4b492a18d7ad7b01a6590", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "df208c4a59e758b0151f2ca3d055dc951cc5c80e064120b924156d2b8f768e90", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "d58356854754c6c689c26f54be19856b7e9569868770cd3438f3a757bfa5b7fe", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a102b996226e1f70e873220e64cf9b592f8da0e553c0a667605071b2c05918bc", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "cf18a7add98886652966362b1f20514afc3b033eb39a64090f82b5f4049b959e", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "e27ab5cb6ce7cab489246891ccd254cb3ce07074330bfe8a406f337eac8710b0", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "48132431af8f988a699e896bf4f8255bc06ced1ba5b7fd5de6f5936607053eb7", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "63333bca7b765db9be3443533f5acfa9b3c7c2dc597bbb13732808cd3f46e575", +"TR_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "6ebf111f17f10e5ece98f2b2acadc0fe157d5c176db066d92fd0d361ec60a08f", +"TR_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "00ce2bc5acf30c3fe41a88c9f1c4bc31e083a59a430a429b52cf1b59b8f1cd0e", +"TR_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "6925052ef898b4961bee4025e943372c005d7ee96b515a9ba808700ead0539e1", +"TR_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "dac25dfee7614c15d442eee21ae682d799b39036368b51b47b9e205e5b10427b", +"TR_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "761e915463898a6c855184e30f773c6f75dc8360a8de2a7762bb18a848031be6", +"TR_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "8a765dcd8079dec81b1f029e35bfaa0d0bf91bf71ffa2a408cdf66d8513a5a5c", +"TR_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "ec646b5ddbb71606b03b2b83ed5c588f640fe1503362ca882a0dadf8cb241304", +"TR_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "6d01945d35dd1ffe83603b8176f19289e36656e6b78e6aae60db6c102d1a5358", +"TR_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "d7530f09402d364a89771f6c339bfeab5c19c6f2fa9d2e5bc0dd209f209db6ba", +"TR_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "49575a34fe4cf664ac50f8b0b140c23c921e250053fc6ef69d80c87642e9e018", +"TR_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d95cdcd1056307a39ec312d8a86eab1642478e048252dd66f7cc75a7d775a2c4", +"TR_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "91bea881a02a9619f005ab670e4b68068b5d6d4bacac698c5dc40e81551a56be", +"TR_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "dca7a628adb33090727556ba83dc4a1f484b7544ccf37ce72275f3458cbf6a86", +"TR_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "5fdb7dc0fb79262b9b119922cb0b26f868ba56abdece62d7e9c42d6058e81d86", +"TR_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "abab4a33f10012c8488af407902cea2fd80d11096f03f2219c73bdc009b80776", +"TR_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "1062b5c2725ca2378fe2f93ba07e128ca9130c35d7f31a9ea5152c458ba3ff60", +"TR_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "e610d94221094763c7d664bd86c73088961b42b758a876e2aa1b10bffa3b7b17", +"TR_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "7fee419ae764a728b8b64b72bf8a8f436f1cd8cdd0b0e1d305397f06b308f152", +"TR_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "0aec27edc872bec10b52dd1adff7fd119303e9ee87a653ee5d0b4fd3254fe2da", +"TR_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "e7db3ca540847c6bba511ef8bb221bbb99b480a6d21a42d41527a5cd43d88188", +"TR_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "e536dc570266a8927df46e221f3ef17b289e6d13f0b3a26741bccd038094a81a", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "186efe0c6c61f7481dfb4da8b92030702b202dc9d2ef177a77c4eb7d1e3c265b", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "06d64697038cc176868f6f3e9f9a0f7d055eedcb5018da48e846e322d817ed19", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e020f181281a29a952f2409b326eb39e339af04029acf58ebe790ab0c5e2647f", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "899e1b3c253b02b710d74f994757b49c5359e1b6feee40b0b831fae2eab9cde1", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "ebc7b21c6a497cd89e65911ce0bfcd1a0ac204c41cc96c6e8a03718d0b206800", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "ce572aae42e04cefbf8f87ce84c2b036e2397855b22782143221ab68390f60d4", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "1a7a25e398bac43b6b9e5c04a184ba5c8e46a99e723025ea3d8cb641e49782bd", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "4f7c9749089b6cb277c1982cdec9b3520bcb7094187647873f43b634dbe90b84", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6596ca77bc7f6d5abf7be14682d8fd1c55cef936c84e29a48b254094b456b0f2", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6d61b4a54c54ff27ed329b0522c529696ea846d82d0c2713b7fdffe0d2cb6648", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "0e26866c93f6c749ded7b530467ce7579c262fc734c3eef75a0fa332a7f72497", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "c422d1bc7416252126c29b11f21f9812ec9f206af62ea2eefbc6344f82171224", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "2e8491925b3e3faeaed3f1a9482aacf44681728e501e8211dae945511b672433", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "e47ffdcee428f0c225fbcdf4efef6fb2fdcae57aa3533cf7f0cbe7484be8c047", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "78afccb93ae01bd513e27e2c102119315c54dd51a8a29876f9ab4c7a82823286", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "31b52d55ee299093217ae227157f2f5d829fbcedd87d8ddc8ddbc9248fe139f3", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "c77b587ba9cbaec289af5d22598e080d546be562ab14af8d48945facd06f8cfd", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "7e9600e108690449901896333a87cd24d7131cbb9ac9401d1ee28665bcd165fe", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0d0a258a8a7f41855d56728ce85a66a42233187d8ae052c81ea287c4dd8a69c3", +"TR_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "e8e8f97563ab147b39f9aae0a7ad6737a688246a8ea1736c6d5cde73851e804f", +"TR_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "7f3e6cf274afba29e338d5fe564cfbc83dbb78efbeabac1d18d031c987770782", +"TR_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "814b049a56b3ad3b2fa4b83863f2c3da83212c68b52177cafea165aef43950e2", +"TR_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "1282854e46bce34c3a7e828cdbbbaa791664cf6ca24f06995e70166435bd39ad", +"TR_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "61e634d0ab4f72581698d164114321c8b66502e7e5c92dd55347ff811b12f216", +"TR_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "5fb2e6f8234ce0bd594e94d7938d07bff95f497b65449ceac8f45d914d66bc16", +"TR_fr_stellar-test_stellar.py::test_sign_tx[source_account]": "c030da892132613f8ba63f975e59a5306ab0af469c710b1d107edd3cdca0c44c", +"TR_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "c987d88168d1c925bbb985485be6b0779de8d0b50b138ff079248e68679f3d09", +"TR_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "a885ff8f6879939352f4fd788af17c078b4c32ec2a2736a40c1999c1906bec02", +"TR_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "1b13b34021b7e1ea98f01b2e50550b3b13b3b51aeb86c0fcb08ad612962df9a8", +"TR_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "c77b587ba9cbaec289af5d22598e080d546be562ab14af8d48945facd06f8cfd", +"TR_fr_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "cd96073ebc95aeae786c5fd6d109a4db291b7483dc4b54b29db8ca3d1fa3665e", +"TR_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "cd96073ebc95aeae786c5fd6d109a4db291b7483dc4b54b29db8ca3d1fa3665e", +"TR_fr_test_authenticate_device.py::test_authenticate_device[]": "cd96073ebc95aeae786c5fd6d109a4db291b7483dc4b54b29db8ca3d1fa3665e", +"TR_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "cd96073ebc95aeae786c5fd6d109a4db291b7483dc4b54b29db8ca3d1fa3665e", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay": "88d94414a0d32dfdeebb2484739659b869190e8ec432f7aa9e777cf3bca3953b", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "bc1cafc81536399276e222f642326eba33321a51fe68a46c17e46d4e96f0b88f", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "bc1cafc81536399276e222f642326eba33321a51fe68a46c17e46d4e96f0b88f", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "bc1cafc81536399276e222f642326eba33321a51fe68a46c17e46d4e96f0b88f", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "bc1cafc81536399276e222f642326eba33321a51fe68a46c17e46d4e96f0b88f", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "bc1cafc81536399276e222f642326eba33321a51fe68a46c17e46d4e96f0b88f", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "895591efdd619098aeac73d876bc650e0798a77f4cfa18994e4fe624ac2e453a", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "0d659b37fc377d2149272d95453445de8e8b3e4a5d548187febc53f042aff728", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "579a5eb944ebaf470635c44925a7995872579515942e01584cc106f4d30d2efc", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b369771b7eb5652f86c1cf6a8a187248b1c1ae8fbe3840339596fdc55966ee35", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "35acbe41860003b1d62e3e7af94cf21683ce2b9ebf775be94d952c4dbe13edb8", +"TR_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "4267c76f4629fb8d8d2c11ad04c91a6aed4fa9869b948f0e77c843f9da628a50", +"TR_fr_test_autolock.py::test_autolock_cancels_ui": "e2f8225641e5bf68836e5d9d60fa80b2dbd8203d215cb76df1e3b769621912f1", +"TR_fr_test_autolock.py::test_autolock_default_value": "c4377d54ad59695de44b8e96394e0c2085ad82a55c78667f419ddc0f2d74c185", +"TR_fr_test_autolock.py::test_autolock_ignores_getaddress": "733ee82a3db89e1d6dea9664755f77281c68e3b0969217482bad3adfb7b6ba20", +"TR_fr_test_autolock.py::test_autolock_ignores_initialize": "733ee82a3db89e1d6dea9664755f77281c68e3b0969217482bad3adfb7b6ba20", +"TR_fr_test_basic.py::test_device_id_different": "d1951d30b30cb52c9250d8f5b471616ae297a5f81a1419a508682f4f5bb397dd", +"TR_fr_test_basic.py::test_device_id_same": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_basic.py::test_features": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_basic.py::test_ping": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_busy_state.py::test_busy_expiry": "79870af29eee7dd61e9e5a2b3b033a2a6b4d5c88b27b35cefd0e2c913936af29", +"TR_fr_test_busy_state.py::test_busy_state": "7f55f9ae2f8b0be891597bf1e3eda832343fa1390a8dfa5ed7d5105be9c01db7", +"TR_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "f7e2d0b6ee13729087563a9961be9117a4550b535e69db9fb482e0a9e4958403", +"TR_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "f7e2d0b6ee13729087563a9961be9117a4550b535e69db9fb482e0a9e4958403", +"TR_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "f7e2d0b6ee13729087563a9961be9117a4550b535e69db9fb482e0a9e4958403", +"TR_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "f7e2d0b6ee13729087563a9961be9117a4550b535e69db9fb482e0a9e4958403", +"TR_fr_test_cancel.py::test_cancel_on_paginated": "5caee03ef8a193504e6ed6d18a5f4add537d35a0ec531188ab604e98a1b01ee0", +"TR_fr_test_debuglink.py::test_softlock_instability": "bbb2baa74d35620512120379784560e43f3a879fc977eaf8611c11aeddbae140", +"TR_fr_test_firmware_hash.py::test_firmware_hash_emu": "9004bf1ed7ab0f905f2c47563bd72ba617c9b089a2a7165b843896aaadcf1796", +"TR_fr_test_firmware_hash.py::test_firmware_hash_hw": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_language.py::test_change_language_errors": "607f155b5628b7ba4a79e5511720a4d12a111ab1c3cd804e8870039f383b29ef", +"TR_fr_test_language.py::test_full_language_change[cs]": "c9471e765a84510b830039c8adc8ba89d39badd202125a0a5824b79ae5e4b8fe", +"TR_fr_test_language.py::test_full_language_change[de]": "d1aeb3ac24ab543d8e7461553681fe9cd28c400023daa80bb3703720e01c1560", +"TR_fr_test_language.py::test_full_language_change[en]": "53ff09996d072426eb0839ee18ec7329b9bddd0ce84648899f99c1e8f991a5a6", +"TR_fr_test_language.py::test_full_language_change[es]": "d174c5d5bab9c73f11520ad89eee87a43112c212d79a4da3d66f673703358b9d", +"TR_fr_test_language.py::test_full_language_change[fr]": "a6e36b5b07439a51b9fb4250d860d645c3f916e3310e37f11382107131b4e714", +"TR_fr_test_language.py::test_language_is_removed_after_wipe": "33888634033b1cf68d1647722b687b80017e79d79aafe5c7cebbbc5e68af7315", +"TR_fr_test_language.py::test_translations_renders_on_screen": "75ee06a8a1461755d3dcbf1443add360cb77150b13aa62a7a95efcae27713564", +"TR_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "f7b3b0253584a5639d77f8c21d51a743cb9345e63186cee99d56f7bbc47b2a2f", +"TR_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "e4a967999ba15e61a3de68865f40b364bd362dec93f18988502f248725dd2f21", +"TR_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "b99434dab484c710513889ff2457f24fc4e929492c94dc1ea696d96a46bc9c89", +"TR_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "bc1cafc81536399276e222f642326eba33321a51fe68a46c17e46d4e96f0b88f", +"TR_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "bc1cafc81536399276e222f642326eba33321a51fe68a46c17e46d4e96f0b88f", +"TR_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "bc1cafc81536399276e222f642326eba33321a51fe68a46c17e46d4e96f0b88f", +"TR_fr_test_msg_applysettings.py::test_apply_settings": "30d9bd20ecb370b811135e6d6e935cf7cf00a5083671afabcef342e78d3eb28d", +"TR_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "acbbedf9fd25319c207679bd38f2fd3d5812bac6f24fcbf35a17e99f9e9642c3", +"TR_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "fbcd81d2a25d2b5d7670181ac2820b2afd45cd1a29446d2d69ae018fde1df398", +"TR_fr_test_msg_applysettings.py::test_apply_settings_rotation": "bd3a01c319abc51cd82beb73e9397c21d0434e6607196b73ddc3374090700693", +"TR_fr_test_msg_applysettings.py::test_experimental_features": "f989de567e0f9b00079d23c6ef912aaad44acd202372eff77cb830fd2910a49d", +"TR_fr_test_msg_applysettings.py::test_label_too_long": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_msg_applysettings.py::test_safety_checks": "0dcdc4b83afaf9aaa736b086036e73a639baa4ae62118f65859c5bd029b052d7", +"TR_fr_test_msg_backup_device.py::test_backup_bip39": "7847d58b27407161576335ad5d3f66b6b88077d504c130288a18e1f82984a2b7", +"TR_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", +"TR_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "92475bf02f6b0e7d3593179e654759becc84cfd1e1ab55298adc8bc43708d057", +"TR_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", +"TR_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "6742aad0220642d87a18eb5edb48b01aa719c0e50be62046f3d2d42a13437177", +"TR_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "05271bea33cb7e7760fe2ef99cc855a3b24412442e31e43f78f3c365e929dac5", +"TR_fr_test_msg_backup_device.py::test_no_backup_fails": "0d04829c9f4cd50c12c590fb59edb2d35e64f332359b5fe127b2fff9bc86b90a", +"TR_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"TR_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "272ca5d7e9ffe9bb71c55a1df6e83ddcb6a37534ffe3abe98d33fe470de58d32", +"TR_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "4d62c2c0f46a11108a2d747129d6a2d6332fc505549ec9cdd57f69bc495bf58e", +"TR_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "6341f0da9ace577edbe8c0549c4c12072c3b2a49dbdb6980d342b68cbbf6cd05", +"TR_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "2a5ac33e42c84697263d3fa4389567643425c4fffdb4d6111effe771ee337f74", +"TR_fr_test_msg_changepin_t2.py::test_change_failed": "97e72ffe9a5c1e136e99d045f532e58be0d99e7d4a5035859edd1ac400bfb47e", +"TR_fr_test_msg_changepin_t2.py::test_change_invalid_current": "e958b7282444759d5335180e2f6da67b6356cc10135b3f2b9e3ab7a27715246e", +"TR_fr_test_msg_changepin_t2.py::test_change_pin": "9f5d989743120fbf6e9c7170f32171a4cb24ce15b1b99e62ca724e214c75d607", +"TR_fr_test_msg_changepin_t2.py::test_remove_pin": "6c184fb2ec2ff7da5a08f45f99f7168c9f12fbf8483dad712099e8b85358e204", +"TR_fr_test_msg_changepin_t2.py::test_set_failed": "a087e2109936976ef348fb339ceb0c204bde2c9c663ced0a9f5f46d3fb337d29", +"TR_fr_test_msg_changepin_t2.py::test_set_pin": "7fb2fe3f625b130c97ca45069c12e376bb1dd94ec3b9b8f2e31d9ed5782ee92f", +"TR_fr_test_msg_loaddevice.py::test_load_device_1": "7a9014fafcb830540de99682c2d6dabc1558051c278a042e4e523a3e8fe18523", +"TR_fr_test_msg_loaddevice.py::test_load_device_2": "2b3f924606b7dfa13cafd65d008d20870549e56e950fa697a5a1a18120448966", +"TR_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7a9014fafcb830540de99682c2d6dabc1558051c278a042e4e523a3e8fe18523", +"TR_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "7a9014fafcb830540de99682c2d6dabc1558051c278a042e4e523a3e8fe18523", +"TR_fr_test_msg_loaddevice.py::test_load_device_utf": "88741614671d7737f0524ea8c26cda12c0b9cdc3731143a3bb8f1f9febc3d0b6", +"TR_fr_test_msg_ping.py::test_ping": "4338408bb6cf02c8574ffc1b69fe98d28d757176625b12da6f2988934303803d", +"TR_fr_test_msg_wipedevice.py::test_autolock_not_retained": "def83a411930a2cc7f6563f175ccb4295d892171c9a5d04df5c32ab30d3fbd16", +"TR_fr_test_msg_wipedevice.py::test_wipe_device": "d1951d30b30cb52c9250d8f5b471616ae297a5f81a1419a508682f4f5bb397dd", +"TR_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2f5835ba184850dace679d71338ea080c51a914441b462895d75ec8e5d127541", +"TR_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2f5835ba184850dace679d71338ea080c51a914441b462895d75ec8e5d127541", +"TR_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "984ea4ae13c4d159b24eb36ad852729253936d98a4b28d6b51a71cb020b16094", +"TR_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "984ea4ae13c4d159b24eb36ad852729253936d98a4b28d6b51a71cb020b16094", +"TR_fr_test_pin.py::test_correct_pin": "bc1cafc81536399276e222f642326eba33321a51fe68a46c17e46d4e96f0b88f", +"TR_fr_test_pin.py::test_exponential_backoff_t2": "55f8a2fb1dfffddbcead80520af22fbda7658c09518883169a90de9d5e710731", +"TR_fr_test_pin.py::test_incorrect_pin_t2": "3b2d14d2ee19924d6c4da5829f12c6e7c921eb799b6fdbe0902a3cd6a5625d79", +"TR_fr_test_pin.py::test_no_protection": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_protection_levels.py::test_apply_settings": "f1bd3a9364a197964905d77cc6f6e6eb6932fa867efd47b7641996df45352002", +"TR_fr_test_protection_levels.py::test_change_pin_t2": "6a53727687e8f0cdc73c57adf5a4addb55675fee93efc8900003cc5aa45ade9e", +"TR_fr_test_protection_levels.py::test_get_address": "e26af592e0871f3c5752a130f318c8a3e698d115868ef72451cfdcb645898dde", +"TR_fr_test_protection_levels.py::test_get_entropy": "44cce95826ae61e361f1617965a0f969850d10d304e343bcf4cdfa67c4baf4b6", +"TR_fr_test_protection_levels.py::test_get_public_key": "e26af592e0871f3c5752a130f318c8a3e698d115868ef72451cfdcb645898dde", +"TR_fr_test_protection_levels.py::test_initialize": "82699169a44eadee08819c06fc9c2c17f46193565de22115d7d27b333084d924", +"TR_fr_test_protection_levels.py::test_passphrase_cached": "78c5a96446483b824fe5175a9fc067192e4c4cd208cf8bcb837c1b06d4237276", +"TR_fr_test_protection_levels.py::test_passphrase_reporting[False]": "246d4d8d800461113a4006bcd5cc06701243a810efc052b98263911540388360", +"TR_fr_test_protection_levels.py::test_passphrase_reporting[True]": "c4269331ee79a43e53d5be27bddd07b54a55e0640edf696fd86ff701d9642b05", +"TR_fr_test_protection_levels.py::test_ping": "4338408bb6cf02c8574ffc1b69fe98d28d757176625b12da6f2988934303803d", +"TR_fr_test_protection_levels.py::test_sign_message": "62f2e46fbc8efa75fbe0fe247242750dd5f2f5300afecdf8d36b061e6f464d76", +"TR_fr_test_protection_levels.py::test_signtx": "e9d9e0141c5f04b9be39b639b73e5cbff68e5bd208edd63eb6e2bdbfde3823f5", +"TR_fr_test_protection_levels.py::test_unlocked": "c4002b393650324eba8d81812c24b116227637e3c3a0a78affb9dc041378bef8", +"TR_fr_test_protection_levels.py::test_verify_message_t2": "4827660c38c18bc897fbb1a8947afc0f455dfea7f77e2b47d13abc1c7fb61c2c", +"TR_fr_test_protection_levels.py::test_wipe_device": "15363caae684346e5f11bda2814bd484b3b8f522c871fac20b20e265ca956b04", +"TR_fr_test_session.py::test_cannot_resume_ended_session": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_session.py::test_clear_session": "0803f28cdc7c5dcc1b84a27a59e61981fddbbc0440425a537914bc5db3c2690a", +"TR_fr_test_session.py::test_derive_cardano_empty_session": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_session.py::test_derive_cardano_running_session": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_session.py::test_end_session": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_session.py::test_end_session_only_current": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_session.py::test_session_recycling": "984ea4ae13c4d159b24eb36ad852729253936d98a4b28d6b51a71cb020b16094", +"TR_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "d8e227be156d29f415bdfe786b9bbb80a0c1c1668d88d5d64b6e4acc0a2ae430", +"TR_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "dbbed82fdab7ae0dde7d1f0ef2fcadf7f004ed82e33310efd33ae812f0be950a", +"TR_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "132378545e146cbb66bf061d433bb38625aca0368e83192980ed3aea853e6464", +"TR_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "71520aeb275bf2c30dec8e0ba41bec5cd930c27596c5a31a786f07f6a91cdf2a", +"TR_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "ed766a728f40a6302d63f86ababea9952f803dafb14901b4cf0217bf5ce42846", +"TR_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "c17c382363906ea624b41fdf230c8898c67d8ec34cac23a9ef21de2a37c85037", +"TR_fr_test_session_id_and_passphrase.py::test_passphrase_length": "e431c0c3628ce1597c2d1dbad4020a46f470c9f5b75eb6d160d5d057a7e738fb", +"TR_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "78c5a96446483b824fe5175a9fc067192e4c4cd208cf8bcb837c1b06d4237276", +"TR_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "4529442e5dfcc939a95f7ae7e768cb0fe80e30a478e82b3cdde04babfb743c5b", +"TR_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "78bd50e9f97f5e4af36f184d5081ebacc132d29fcbc3dbe2b32b4f531eaf7d3a", +"TR_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "a1fa3a9a55b6ecab3845fa5a376ba966e4fffd9a0cc68dc17034486f6e50c125", +"TR_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "f7fa417666b0d1c74551c56509118fe760188eb005d281b72085b78971c0cb3e", +"TR_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "6d7e405c19dbb0f644a9c331f1a4bee67b847b52c460e629af1ed938735ec658", +"TR_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "d0e843cdc565a11ba007af398a00d9f5e98ca19a0117dcaaef9fc67f33889335", +"TR_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "40f06d35e118400e9568f8c2ac1f96b8a75c3a803b229aab9996dbc1e0eb63c9", +"TR_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded", +"TR_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "99919b07ed77aa6ee6a858e75df853441034549df6bce4941db78e2525b7cdfb", +"TR_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "3d26f1b12d67080e37c5c225e00741ef113c5bded02271925ef4ea64f846a537", +"TR_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "784dec2b0837b2ba3f4ceaba9ed56a93ba4d63ef4552f330d225dd95f47972af", +"TR_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "9f7ec7dacb551c630b748897512991435d54af884546fbcfafdce427f3b48dd4", +"TR_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "d5d56a61bd3b0d835efbe4743352b56ea19ba41d8754d00a5d0b9887066710e5", +"TR_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "e96999ad725322b6aff58b889a59efbdf08a00735f1b8da8237b0c74dbb88e35", +"TR_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "c9c270223c19fd08a4b1f9f15dd5221d764e06f456283c2f5b1e92198e7deb09", +"TR_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "85b32359a7298019c941e74ec6e68ca7dcac912df2c3e70715332fcbf60b7317", +"TR_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e57337ce778ce3b9d499316b9c2ffe213636a8c28fd89592481f6b0c59954ec9", +"TR_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "97b51dc4aea9b691c9f09bbf56d5c025bee2e5c66d020044baa19a34ac20facd", +"TR_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "f5db081d2ff4b2a6a5acd0a0b179cb9567200f1821bd7b0ca938f33c7cae35d5", +"TR_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "503a6909d17998be1f0de1627e9ae919f7c01e15c5650928d57da88184eb8d19", +"TR_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "0770e794ff0aafb4af6bf3796f1fc117140f0e4b7ea40512883586172b0cf029", +"TR_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ad8e42b40a8cdc5c83b474b25c6799b2a980349d955e40ecf22be0652b698d8f", +"TR_fr_webauthn-test_msg_webauthn.py::test_add_remove": "8856087638f5eee2f7f651c163b3de37b2c8ea0f4baabbc73e89784faf440777", +"TR_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "2e1ea641f6a36521b4ad8f3db4440b74bc57ac87aa89096707f0b519437d56a4", +"TR_fr_zcash-test_sign_tx.py::test_external_presigned": "b0b7b3fcd97f019dad6958219d214c09d85097cf2779633aff3c43bfb62cf578", +"TR_fr_zcash-test_sign_tx.py::test_one_two": "e5690cb13a33a4db114a353bef85a5f03daf66e4b14233da50d6162746ad8260", +"TR_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "ca35358aec301602b277c26eb8fb56a9f2c306d665826b02dc8a24c4017369ec", +"TR_fr_zcash-test_sign_tx.py::test_send_to_multisig": "31d4d30c9563487715a2e706b75532fc1b906cff4d014e43b81f3dc8bd63f51b", +"TR_fr_zcash-test_sign_tx.py::test_spend_multisig": "10785edac0006daa387c119febd2942336bb22f3443dba290e88af49ccf6011b", +"TR_fr_zcash-test_sign_tx.py::test_spend_v4_input": "4a21ac0f243f12670c87da28277fda0f60dbec48cb66f5ec941d57d54c878c73", +"TR_fr_zcash-test_sign_tx.py::test_spend_v5_input": "103bd72ae261b90d588a67a43e631382c0d0b2212a3f852408d10906d107aef3", +"TR_fr_zcash-test_sign_tx.py::test_unified_address": "0ef49aebb05dccb270458071d4c7438e96a3abf3ba4e71e3ea8737b95b828423", +"TR_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "7ffcf646e25de52f338122d412c6ae23ecd88f8466eb1f205da09e5f781d7ded" } }, "TT": { "click_tests": { -"TT_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "521b6ce07207c262b832fb4e78477f89211dc02a4b6e02a6fe8d389a2be909cf", -"TT_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8ff223f44e97a98fbef62c2ed314bdc2d3a2f160d0396d09733847ce103494d", -"TT_test_autolock.py::test_autolock_interrupts_passphrase": "15ce8ca8c46be745296ad39b2df4e4503f1b3208c3f5b3e3f48d7bd172779605", -"TT_test_autolock.py::test_autolock_interrupts_signing": "a9b983a624b6ca20fd976fc59b570e0bfebc847a448a1db63717932d96cde15c", -"TT_test_autolock.py::test_autolock_passphrase_keyboard": "e25d15e04e3096931dd299944b81aca8606c53cbfe7601116453e5cc0dbcde4a", -"TT_test_autolock.py::test_dryrun_enter_word_slowly": "140ff1c01d0d27ade29e88af481a9a24385fbe01058bdbf35f2fa20c19e0c386", -"TT_test_autolock.py::test_dryrun_locks_at_number_of_words": "f9a5c8f92ca3b0b9545a9a5b3cf8df4de9943fbe45de113aa6f970d60b3b9b49", -"TT_test_autolock.py::test_dryrun_locks_at_word_entry": "2ea54adc6df443f758a6395b6b443fbfe5931cbd62a321504de9ae453aff8ca8", -"TT_test_lock.py::test_hold_to_lock": "a5739f92ae28fc57769e444408ce5b58223d0d33b368022ef78ea68e0f8c9b80", -"TT_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", -"TT_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", -"TT_test_passphrase_tt.py::test_passphrase_delete": "6f9fd790c360ea8caa60a183f39d6515ce66493786f71611988f20b6fc5af86d", -"TT_test_passphrase_tt.py::test_passphrase_delete_all": "386969917a7112629f7a9e3a96f703953d8673a0c9bf5428b7612811566c29e7", -"TT_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "9ec26b92ff4ab6add7216f99329a9b34b59c69dba9ab916a4e9516f0d833b466", -"TT_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "294e640dd8be88a92546107038ff6190e792896ae754d2d3c73e8d8c6bdac8be", -"TT_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "bd916caf1254ee0fc93febad5f03c603592b4adfbc76c3cfe747ffe54ab6ae54", -"TT_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "afa0d2c6bdfa50a22983ecbda113074703d21a008dbdd45e11e3d27a3fb704d8", -"TT_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "75beea9b4c13023ac3ea12fc7167e10f8d2eea2aa2f82426a0e7129b9bc21880", -"TT_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "c1a1cf0707dec05b41f36aba36d579ec3c93d5c404c565388bfea1787d094e67", -"TT_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "75beea9b4c13023ac3ea12fc7167e10f8d2eea2aa2f82426a0e7129b9bc21880", -"TT_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "dbf02c793dbb0c7e68e6fcfe1b7baeae0abd048c49dfbaf0994146ce46dcdbae", -"TT_test_passphrase_tt.py::test_passphrase_loop_all_characters": "82ff267d6ec0d48d8a1e25d1e77e598f563449dbff75fca7f2820dc1409fa453", -"TT_test_passphrase_tt.py::test_passphrase_prompt_disappears": "12a0d2dfe50c122326bd7ab6af7dd32008943091757ef6f5e9122dd721414987", -"TT_test_pin.py::test_pin_cancel": "05f5f819be61fec8c7c4341fd23c1bccf78cff93f05d573dd4f528bb0f1edbf5", -"TT_test_pin.py::test_pin_change": "3f2aaff0a0ddfa44e623ba68cb64c7941354707972532ff8db110df539afed71", -"TT_test_pin.py::test_pin_delete_hold": "110a0144f65b65956e5a06f71888d4696fb35fcd4ea5f9f8b9e2bfdecac06116", -"TT_test_pin.py::test_pin_empty_cannot_send": "197c595eab9757f72ed59642b7bea57728397ffe072a762a126d20833d0b9278", -"TT_test_pin.py::test_pin_incorrect": "739e082079cd057f4a72e3d4f6a15bf447d099273e3a5c284f85fb688e596096", -"TT_test_pin.py::test_pin_long": "795a3ea7d9661924c334ae32c3da99d4cc27909b905808a422a240d221af0775", -"TT_test_pin.py::test_pin_long_delete": "8fc0b6b0b80505d2e701c52c23498cf23584b7f9557dde7e7b3eab2eb4b7c447", -"TT_test_pin.py::test_pin_longer_than_max": "34af02823f498627dfe0e96e97a912862c5c49eb90202cf8b1fb300b673a73ca", -"TT_test_pin.py::test_pin_same_as_wipe_code": "b0abce32d6ee3f8a84fd44f90185b7ea3c4e18d642e1c66359de5e2dcea2dcf3", -"TT_test_pin.py::test_pin_setup": "d19f026060f415a7ec104a8d1de771acfee16e8fc143c526a8f1d073ca59da9f", -"TT_test_pin.py::test_pin_setup_mismatch": "663430644b26f4493fc3ecc03a2bbce5cecda7b6ccb5be5a8a4c0ace239f6dd5", -"TT_test_pin.py::test_pin_short": "197c595eab9757f72ed59642b7bea57728397ffe072a762a126d20833d0b9278", -"TT_test_pin.py::test_wipe_code_same_as_pin": "0ec9b624645bfad45c577c687fc1a630f063ce8eabd13533a9a7f8bbaf4e183a", -"TT_test_pin.py::test_wipe_code_setup": "145ac58cfb3da76dd2528ce8aec7c5481b2272975778cd70bf38f1a9b8db7f9a", -"TT_test_recovery.py::test_recovery_bip39": "65a138f634806c6483c55c6ce5365b8a7a4073a3c0c340b1826042262faa8545", -"TT_test_recovery.py::test_recovery_slip39_basic": "9b0f5a7b8d2ab0fed1e5389076bc035e24dce377d275824220f1aa61e9bb4810", -"TT_test_reset_bip39.py::test_reset_bip39": "4331646c82813f3bba6869d375dd1db9155c37a13f6468e950d4504398604811", -"TT_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ba8c021eb2930abd18b4079fbe29724b220f3fd1ecedab9a86f5dd939563ceec", -"TT_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d15db902e2838520f65002442ea2501fc67220f8a3f2da18aac55fc960c7ba3a", -"TT_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7202b1bcc7e8ca9e92ad83592469f74d306b8b2090d644aa810bf184edefcd71", -"TT_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "3052aff98947aa1b15dc1abbc5091d25342902c708e7356077dcdad5e6df10b6" +"TT_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "29afd91ec3e2f2ef73a6324b63a1d6f6299b38ac0152ef5cc7c7b7dfb560cbb2", +"TT_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "0bec276bbdebca8d19c9f6e15635ad27c09493e7a0ce59f69cdf069b4b8e0247", +"TT_cs_test_autolock.py::test_autolock_interrupts_passphrase": "a1e2c641354fb33469680eb229b6a655dad72d1034f1b902e30d025ad004dcd5", +"TT_cs_test_autolock.py::test_autolock_interrupts_signing": "d6aaddd1cf0e15bf59ab7621c0bc645028d02cd73486248bbefa2f9ca9aa4af7", +"TT_cs_test_autolock.py::test_autolock_passphrase_keyboard": "292eb093f8076af27d07c47bd3fa31cdad9284b65b169d46b266d8420be24cb8", +"TT_cs_test_autolock.py::test_dryrun_enter_word_slowly": "3e341dde8ca2e0031dbc90874faa4f713db390c8d8870fc6196572b7d8618f5b", +"TT_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "312b454f7e2a4b58d8fbecf499a959178e1813bba8c3f18046ec473fa0ff1c7b", +"TT_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "24e00028952353af9896c49a220984315d7199647bcfdc15e6ce3c75fe7a07cc", +"TT_cs_test_lock.py::test_hold_to_lock": "132bfa52307bcd1e42a406c09b373987cbb26d13f798f4486e31a72ee505caff", +"TT_cs_test_passphrase_tt.py::test_cycle_through_last_character": "22b3048333e5934bd0a67b134348ebaca340b70c5e31bad189baf6432fc72185", +"TT_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "7324808147e00227cf04d9dc12ed0e3c564884e662730e6e2a47fcbbe5230e6f", +"TT_cs_test_passphrase_tt.py::test_passphrase_delete": "b4b1dd4acdadc86838a9ced80b9229b09c4e6797be7462ec3364f45e93d72c3b", +"TT_cs_test_passphrase_tt.py::test_passphrase_delete_all": "8da6e4ce7f6c7385882618386b6fb1d12185e6c7e492f7f00cbd5fee832c4534", +"TT_cs_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "3130fe042eacc23cef4b3e89d14dca82ff9c9d5a7daf9bcc85f81d3ef607cec8", +"TT_cs_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "4fe1e9b4349befe4aae68732ddde8f40656b83dc6ea29365dbad44cf3e2de145", +"TT_cs_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "33f008ad1464283de59d5dc83dd7f907ed6d7883a0d8545e1582802ab6b195c1", +"TT_cs_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5d53ef10a348d911dfcc6947220c7bb24d43a97964a2ba234e1dff59a99f21fe", +"TT_cs_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "4f490bda3e8bda4966f28568c1ff5f117f2f2bfd70828b58270af70fdc7a309d", +"TT_cs_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "a8294cc58443e53c7d6d6ca233172fc094cbf78609b9fbeea871c0ed70749151", +"TT_cs_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "4f490bda3e8bda4966f28568c1ff5f117f2f2bfd70828b58270af70fdc7a309d", +"TT_cs_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "e0171af5679da647289b18249c298c6100a52a941a5ac709101fec816ea97794", +"TT_cs_test_passphrase_tt.py::test_passphrase_loop_all_characters": "9f886f564e271b378749be90ae24350d8c69662bad13cf212b6a932d4b6a0701", +"TT_cs_test_passphrase_tt.py::test_passphrase_prompt_disappears": "22e077eaf2049c5e7d222e76dab81a5162ab7dcdbea24087a98a8b4d37d4521b", +"TT_cs_test_pin.py::test_pin_cancel": "c916aba175ee1cb01325941ddd7f627eac337b8acb17f9a89f420d9906bb1f09", +"TT_cs_test_pin.py::test_pin_change": "c8b70954f7dc9c8379d46d43133832c50ee3a9fbd5a2c079701e65e14bbd0895", +"TT_cs_test_pin.py::test_pin_delete_hold": "24cd8f1e6243e9399d9effe739f1be1b28e8a5c7677b6c19698d922e12581f51", +"TT_cs_test_pin.py::test_pin_empty_cannot_send": "e985831868d20ccbbb75fa360fd666a4e956ef1fc6de4c710ec765407b04294b", +"TT_cs_test_pin.py::test_pin_incorrect": "ea5d9795e91b6417fc13b947931fc745eb3bb40074e6ac35a2027240c7c4d96e", +"TT_cs_test_pin.py::test_pin_long": "f32d017efdd1019ef0acf91f0fa9f0fa85ada2c27340252779a5e8c634037d2a", +"TT_cs_test_pin.py::test_pin_long_delete": "a572695f19c8cccde956b4e236a5f01e008934503c202f299bc4f808ab4d5dd9", +"TT_cs_test_pin.py::test_pin_longer_than_max": "7cd5d2e5df545a29f72c65cf94b01f823d3ffc74ff791461145992506cedc797", +"TT_cs_test_pin.py::test_pin_same_as_wipe_code": "7065fb2be1948e4081f66609e31c165face36f150e8ab565a815e6c23fa72a87", +"TT_cs_test_pin.py::test_pin_setup": "58edf1a026aace62cafce1cf70b6b936635874ae8e285890c480bc131c73d294", +"TT_cs_test_pin.py::test_pin_setup_mismatch": "69511d1a1f5b21871ab62ed08f7ea9e99977ae2aa75dbedd2e7d2bc3351fc40d", +"TT_cs_test_pin.py::test_pin_short": "e985831868d20ccbbb75fa360fd666a4e956ef1fc6de4c710ec765407b04294b", +"TT_cs_test_pin.py::test_wipe_code_same_as_pin": "1bbf26eff58927d03d4ca6f2685da3a9fa50a9801de3752211682d267f2d5f52", +"TT_cs_test_pin.py::test_wipe_code_setup": "35257bf290bf4b9f73e52d428581808db0701566918b983581f632e5f9ea9086", +"TT_cs_test_recovery.py::test_recovery_bip39": "c98565c401efbffa8984cf9a3d4eaacc6cb7ead55cc1a3d032549cc5acce82da", +"TT_cs_test_recovery.py::test_recovery_slip39_basic": "0cc0e11c3dab58144f8965346bb977f81fd768b8d2f05e48c21e98bc928d74c4", +"TT_cs_test_reset_bip39.py::test_reset_bip39": "ad6acfa12d6cccc6fb9d70a3623e33a524a3744d2aef710048decdf4ddeccffd", +"TT_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c558140c3f5dd871904d303e8340876a75a521e9d5833b07dfc7cb0facdeaeaa", +"TT_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "33b1fc3279f220d28059cae0af50ccf1a00452e0c0af06300cf451270c3ab893", +"TT_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b1ebfbc28bcd9efb70a4463900f85dbf9723342d8d9510f57f4dd2d101bf9f69", +"TT_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4e00953ac93bda449a63aa3bec939bac7fbf9ce139f5e617eee4f54523894f76", +"TT_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e4e214636729b66041dca82de24674ecb385b3ded104cbf07f912fa6a7e4bbff", +"TT_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "0b084d0b957c0ede80d03b376a50036041de8f82f54429112b86513d95ec3b69", +"TT_de_test_autolock.py::test_autolock_interrupts_passphrase": "687d9425c52689a83ea51d4e03943759caa2d291a2bf5f941bafae6e32d1bb77", +"TT_de_test_autolock.py::test_autolock_interrupts_signing": "90d2c6774ef11c3b8d26960b5282c62b75d1a9c4ea6b5f8321b9cf42220a543b", +"TT_de_test_autolock.py::test_autolock_passphrase_keyboard": "7fdb57156d7883f5b91620eb736aea70ee37bc84c6a579e9b00c023fe7efa0cb", +"TT_de_test_autolock.py::test_dryrun_enter_word_slowly": "552f45217457227b0901b12ed5575bfca088af49e7ef386f371296c894c628f2", +"TT_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "98a604be4456f9f6efafeb327b8ea2939dbc27f53ace0a2cbecddb8fc71f69d2", +"TT_de_test_autolock.py::test_dryrun_locks_at_word_entry": "196c23e3cffce77454ff7848a78c190de8ec68cb5d7fa12236e214dbc1941d47", +"TT_de_test_lock.py::test_hold_to_lock": "1a755236b02780f4593340c30ae7c405b5ebf58379389a5b418bd7e7fd94d2bd", +"TT_de_test_passphrase_tt.py::test_cycle_through_last_character": "3f9e622017b6eb51da42fe1773ef309748bbd554a1f0b185f523bd77bf2fbe56", +"TT_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "bd67375d0953381aa698dcbe25add63b972571b514491d0d5771790a682dec1b", +"TT_de_test_passphrase_tt.py::test_passphrase_delete": "f474655a21373cb1c4b1519bc7189433cba0fcc8ccdc25e8986c6e2b7f1347af", +"TT_de_test_passphrase_tt.py::test_passphrase_delete_all": "d1d3a9652959a7840e404f65da989487aa2130482118b86ae15074e466472b86", +"TT_de_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "88fba1f746f03d3e35916b0fee97e285487dec48cbbc975a9ed08ec6c8b50c06", +"TT_de_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "c510a9cb9c4476c54ba552cba0addf6779c8d134f23e1695d37029585bc0c9da", +"TT_de_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "6d286aca7f04a7f6d4397bfa93e95b2dec6cf54f5e486048b30a630f4ed88718", +"TT_de_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5a7194642a539d208cdbbc843f060e315cd3bed83f5e90d483382201ac789185", +"TT_de_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "b641104b98662797a3b5862db9b12b1808f8df55f3650be5c2f3b8f3c34efed2", +"TT_de_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "d636ed0e896bb9ae4061b3ff33b1298870ddb1ed9e230d8b3f3d5d3c855d1011", +"TT_de_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "b641104b98662797a3b5862db9b12b1808f8df55f3650be5c2f3b8f3c34efed2", +"TT_de_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "e589cb38d447c5602d1693fed8ca71f4b1ed1d381a6a0c452ae3a817c8d27bbd", +"TT_de_test_passphrase_tt.py::test_passphrase_loop_all_characters": "52f77bb2e37dec2cc7fc322f0a60f78db47f60d9a576864ba9ec57a96591b1c5", +"TT_de_test_passphrase_tt.py::test_passphrase_prompt_disappears": "69f13b903401427de179bf4c90dc5112e6b9f74c3e708ce8dd1e668bffc11a07", +"TT_de_test_pin.py::test_pin_cancel": "d83b1832854cf6cf663864158de5906a97a6bff93f2ea87ea881459ac67f954d", +"TT_de_test_pin.py::test_pin_change": "3973c2469679ec6741ee03ae0c423fbed4a05e51be186330c879b57edfd3a7f6", +"TT_de_test_pin.py::test_pin_delete_hold": "cdc17a38975db7138bad85007a5eb22e9b42822bece37fc58d650ca617323f36", +"TT_de_test_pin.py::test_pin_empty_cannot_send": "88d0d479d21d01e71eee22901535fdf8818f590a900c715cdbbbce4012ad3b80", +"TT_de_test_pin.py::test_pin_incorrect": "9ab6e8ad12025f936f98c680ebfe4766956f313feef688271df523a704980d07", +"TT_de_test_pin.py::test_pin_long": "7c492a21c689aa447759905314e2f47e653f31a07875eeec64754fc6572e8ff5", +"TT_de_test_pin.py::test_pin_long_delete": "271b05a1c743becd2ae77e41e7203cf1d60c928d568f0d0a07d3d1b9ec0768a2", +"TT_de_test_pin.py::test_pin_longer_than_max": "2b694246d821118d60586260ce624a9754da206169dd0e5a9f0ac65123de128f", +"TT_de_test_pin.py::test_pin_same_as_wipe_code": "4bb4bc1c74b8d4607a1be41895ea6f760d53a7bb4289c183579d623535922168", +"TT_de_test_pin.py::test_pin_setup": "1e1291430b820778d8f71979dfbf7f4dd1f9b31b982735e5082a2192f7686453", +"TT_de_test_pin.py::test_pin_setup_mismatch": "9646285ee44285ebc00f9bd0ab080d7ce7121c53a62c35fb715ab5e66b8b63cf", +"TT_de_test_pin.py::test_pin_short": "88d0d479d21d01e71eee22901535fdf8818f590a900c715cdbbbce4012ad3b80", +"TT_de_test_pin.py::test_wipe_code_same_as_pin": "f638c4cc224cad6b000bca6d249445d217c0778334f6d666f5266ac097c1e629", +"TT_de_test_pin.py::test_wipe_code_setup": "5d3e65b57781e64c47258f82e532176d4e5b3cdd5eeeca79ed49e52e39610b17", +"TT_de_test_recovery.py::test_recovery_bip39": "cde819e42c2cc48f44b10e4620fe037dce897a46f6b9fc9c5ce654e57a94b9a6", +"TT_de_test_recovery.py::test_recovery_slip39_basic": "8e60e85f5102a39b68635c291656e667e77cbf1269281ec1f7166b9e425963c5", +"TT_de_test_reset_bip39.py::test_reset_bip39": "f0b6fc90257c01486df15a56debee98491536c9ef0b01cd305152669731bda7b", +"TT_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b89b2cf9386bc381669623dc64a6ba8adab7400ab74e201f887a7bfdf6ef1544", +"TT_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "77352fbbee846b6dfe6e43526f15cda704e4e95913200c5e77097037d1c1b08d", +"TT_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "a8a19587f667641a6db84ce56838d7070063b989807d5dab45416bc1a639834c", +"TT_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "053a0f902041f8163e4eb0849cd8abab6bc64a46d00ae1366ab614c6f4441873", +"TT_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "521b6ce07207c262b832fb4e78477f89211dc02a4b6e02a6fe8d389a2be909cf", +"TT_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8ff223f44e97a98fbef62c2ed314bdc2d3a2f160d0396d09733847ce103494d", +"TT_en_test_autolock.py::test_autolock_interrupts_passphrase": "15ce8ca8c46be745296ad39b2df4e4503f1b3208c3f5b3e3f48d7bd172779605", +"TT_en_test_autolock.py::test_autolock_interrupts_signing": "a9b983a624b6ca20fd976fc59b570e0bfebc847a448a1db63717932d96cde15c", +"TT_en_test_autolock.py::test_autolock_passphrase_keyboard": "e25d15e04e3096931dd299944b81aca8606c53cbfe7601116453e5cc0dbcde4a", +"TT_en_test_autolock.py::test_dryrun_enter_word_slowly": "140ff1c01d0d27ade29e88af481a9a24385fbe01058bdbf35f2fa20c19e0c386", +"TT_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "f9a5c8f92ca3b0b9545a9a5b3cf8df4de9943fbe45de113aa6f970d60b3b9b49", +"TT_en_test_autolock.py::test_dryrun_locks_at_word_entry": "2ea54adc6df443f758a6395b6b443fbfe5931cbd62a321504de9ae453aff8ca8", +"TT_en_test_lock.py::test_hold_to_lock": "a5739f92ae28fc57769e444408ce5b58223d0d33b368022ef78ea68e0f8c9b80", +"TT_en_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", +"TT_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", +"TT_en_test_passphrase_tt.py::test_passphrase_delete": "6f9fd790c360ea8caa60a183f39d6515ce66493786f71611988f20b6fc5af86d", +"TT_en_test_passphrase_tt.py::test_passphrase_delete_all": "386969917a7112629f7a9e3a96f703953d8673a0c9bf5428b7612811566c29e7", +"TT_en_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "9ec26b92ff4ab6add7216f99329a9b34b59c69dba9ab916a4e9516f0d833b466", +"TT_en_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "294e640dd8be88a92546107038ff6190e792896ae754d2d3c73e8d8c6bdac8be", +"TT_en_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "bd916caf1254ee0fc93febad5f03c603592b4adfbc76c3cfe747ffe54ab6ae54", +"TT_en_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "afa0d2c6bdfa50a22983ecbda113074703d21a008dbdd45e11e3d27a3fb704d8", +"TT_en_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "75beea9b4c13023ac3ea12fc7167e10f8d2eea2aa2f82426a0e7129b9bc21880", +"TT_en_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "c1a1cf0707dec05b41f36aba36d579ec3c93d5c404c565388bfea1787d094e67", +"TT_en_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "75beea9b4c13023ac3ea12fc7167e10f8d2eea2aa2f82426a0e7129b9bc21880", +"TT_en_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "dbf02c793dbb0c7e68e6fcfe1b7baeae0abd048c49dfbaf0994146ce46dcdbae", +"TT_en_test_passphrase_tt.py::test_passphrase_loop_all_characters": "82ff267d6ec0d48d8a1e25d1e77e598f563449dbff75fca7f2820dc1409fa453", +"TT_en_test_passphrase_tt.py::test_passphrase_prompt_disappears": "12a0d2dfe50c122326bd7ab6af7dd32008943091757ef6f5e9122dd721414987", +"TT_en_test_pin.py::test_pin_cancel": "05f5f819be61fec8c7c4341fd23c1bccf78cff93f05d573dd4f528bb0f1edbf5", +"TT_en_test_pin.py::test_pin_change": "3f2aaff0a0ddfa44e623ba68cb64c7941354707972532ff8db110df539afed71", +"TT_en_test_pin.py::test_pin_delete_hold": "110a0144f65b65956e5a06f71888d4696fb35fcd4ea5f9f8b9e2bfdecac06116", +"TT_en_test_pin.py::test_pin_empty_cannot_send": "197c595eab9757f72ed59642b7bea57728397ffe072a762a126d20833d0b9278", +"TT_en_test_pin.py::test_pin_incorrect": "739e082079cd057f4a72e3d4f6a15bf447d099273e3a5c284f85fb688e596096", +"TT_en_test_pin.py::test_pin_long": "795a3ea7d9661924c334ae32c3da99d4cc27909b905808a422a240d221af0775", +"TT_en_test_pin.py::test_pin_long_delete": "8fc0b6b0b80505d2e701c52c23498cf23584b7f9557dde7e7b3eab2eb4b7c447", +"TT_en_test_pin.py::test_pin_longer_than_max": "34af02823f498627dfe0e96e97a912862c5c49eb90202cf8b1fb300b673a73ca", +"TT_en_test_pin.py::test_pin_same_as_wipe_code": "fb196ac02453b894d7773276b67174c129f270642d7f83051464591f307e11c9", +"TT_en_test_pin.py::test_pin_setup": "2c10614e7ad703ae74bd95de372a732ed6dac524d83430fbb43cd36d867dd8e7", +"TT_en_test_pin.py::test_pin_setup_mismatch": "2ccaaf68e752185f567a710b9a1c24b7e0157314c7e9b8583658b320c8e6cc79", +"TT_en_test_pin.py::test_pin_short": "197c595eab9757f72ed59642b7bea57728397ffe072a762a126d20833d0b9278", +"TT_en_test_pin.py::test_wipe_code_same_as_pin": "f13b6559d4d73c2853218fee85dc951c41c5b4e3867ee0e989443940233f2f96", +"TT_en_test_pin.py::test_wipe_code_setup": "3d6a04cc7c8d3a061758a9559277a548bf4492ef59afd1d040693372d197383c", +"TT_en_test_recovery.py::test_recovery_bip39": "65a138f634806c6483c55c6ce5365b8a7a4073a3c0c340b1826042262faa8545", +"TT_en_test_recovery.py::test_recovery_slip39_basic": "9b0f5a7b8d2ab0fed1e5389076bc035e24dce377d275824220f1aa61e9bb4810", +"TT_en_test_reset_bip39.py::test_reset_bip39": "19fd9f6233d72224696c547528a0079934a86cb41539b6f7149aab57b0aaec42", +"TT_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1d604f1766ce861e616745dcb5c89122165eb26ecc7f40039e50b8fe8c61a861", +"TT_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "58fe6639315e549576be1bf8141ca01cea306c94b21e9e03067ba4ade6065d27", +"TT_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ffe9e0d38c068f2af90dfe9f63d912492b8eeeba8e4d5105d9df86e31e0dbbd6", +"TT_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1db5982fc3b0795517144fcb3a30da7e2a6226c223912f6d88647f6715fd872b", +"TT_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7578755cab825934b6ed91aef7c3f84a3788a836367baed7ee0acaf2757d7188", +"TT_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "7d571a4f8468027e5c2993f808306910464f875ea833a6afb7e4da3acf805220", +"TT_es_test_autolock.py::test_autolock_interrupts_passphrase": "25c9f52b145dd15a99cf23ba3c73f80ee6b4532214114aaeef79df3bc9118fe2", +"TT_es_test_autolock.py::test_autolock_interrupts_signing": "2f93fc5abc06c9ede3bb0376d7227a6435c760074a147b403962b0118c286e2d", +"TT_es_test_autolock.py::test_autolock_passphrase_keyboard": "c24bf5ae0dd5ad0270e86c1d7bea18a9f9308d5d242dfa7ea8ab6b8c02329d85", +"TT_es_test_autolock.py::test_dryrun_enter_word_slowly": "9de9d3695c13408bc7f419d5412ecbbe53f73605c863d92565de4d48fac66e01", +"TT_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "6dad9f22d42e97244b838507c9b0370ac15d173e81aac2145d1312b5fd1bb13a", +"TT_es_test_autolock.py::test_dryrun_locks_at_word_entry": "67734e8a7d649d210c319119027c8ee4304e80b791f02928fac38c1a2317084e", +"TT_es_test_lock.py::test_hold_to_lock": "a5dcf46bb65b2c30daec212973ef2b947e7e4bc9a9db1577ba45a61d02904af1", +"TT_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", +"TT_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", +"TT_es_test_passphrase_tt.py::test_passphrase_delete": "f7049961cde87ed77ed2536e73faae8e77b8d30d9d75dce9465bd2c2bc5ae809", +"TT_es_test_passphrase_tt.py::test_passphrase_delete_all": "bf89b2bcf5d644eb10f6988743f2dbd3b9f8fa3cf2ee5a8dd56077311cf6868a", +"TT_es_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "287eb89fe15b58be4f6ab9ac6338ed9cd8fc5463c15eed663ff6be7b185bf377", +"TT_es_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "8d3a77d9b996aa27071b00d5227fbb1c67f9d93d3789a3612974511fc00f15e6", +"TT_es_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "79fffc686f8e154e4fe2380f37f5fad1a6853f83720326b9339084e0c715d737", +"TT_es_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "3d28976a89877c4763d5ae55bf29d0ab4ef1d17c37535e7c485d931593b5fda6", +"TT_es_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "de23481b08acd3ae320e55b30dcb33ffc62c011a4fb4f2bb619728a8e7b2878d", +"TT_es_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "4e5206468e6ab2729471bfeff0bf1f897007c4435476618474c35729c2f5f5f4", +"TT_es_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "de23481b08acd3ae320e55b30dcb33ffc62c011a4fb4f2bb619728a8e7b2878d", +"TT_es_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "978f69c3e8a9286d26fecfd92dcb8aefab18d703efb7f09040156c0bfe13c3fc", +"TT_es_test_passphrase_tt.py::test_passphrase_loop_all_characters": "974cb2879ac66ee32b9342242fa12c8cd8f72102fbf6323e47245738742fdb01", +"TT_es_test_passphrase_tt.py::test_passphrase_prompt_disappears": "874ccf635951029c0322e6d8b69ec3b9ef59a18cbd6d39baf9589fbd8612331b", +"TT_es_test_pin.py::test_pin_cancel": "4027bd05d18fa002f3a4cce995b59069efd641ccf53a3128cad12de17aadf7ce", +"TT_es_test_pin.py::test_pin_change": "4a36d17b68160efd4a0a9e4589f93dc83572ddbcdf915a02a3f04d172f3d0ef4", +"TT_es_test_pin.py::test_pin_delete_hold": "0415a8acdabd37811a4635d0c16d69421d20eab2e49d6a7cdcc7db01df332e07", +"TT_es_test_pin.py::test_pin_empty_cannot_send": "3dc0620b68162b6f42a92c769bc9ba70ecec455e9fabd7d107089935e60f3bfa", +"TT_es_test_pin.py::test_pin_incorrect": "309fa09015f46fada709d7ac59961ddeb0bc036e68244c25f5c25a041819812c", +"TT_es_test_pin.py::test_pin_long": "43dcf6b13314cc4d5c385d1a23237096bf60b7b352854f23e935fc5aeb915614", +"TT_es_test_pin.py::test_pin_long_delete": "d6550a0fa9c6ff20ce5a781c02a45956d38964b221388088758321c7d0b3ec8a", +"TT_es_test_pin.py::test_pin_longer_than_max": "697754139944cf1f392440ed35f357adc2958c4f189ef0a3a7d7a85144b61163", +"TT_es_test_pin.py::test_pin_same_as_wipe_code": "78bbc22226de816a7a725e1923bd383e4c736879c15012114dda22e3596021b8", +"TT_es_test_pin.py::test_pin_setup": "f166d93612e273e7d2587341a6ce7222db31bc6c4bce3f93814790be895ba711", +"TT_es_test_pin.py::test_pin_setup_mismatch": "86c3a0746ba99da9b7f064bcffc3a1961089f1f25c8d2a34df509bb888f15ace", +"TT_es_test_pin.py::test_pin_short": "3dc0620b68162b6f42a92c769bc9ba70ecec455e9fabd7d107089935e60f3bfa", +"TT_es_test_pin.py::test_wipe_code_same_as_pin": "819155e856979ad12543c13e0952335c150260c2419deae792fe84742e007ac9", +"TT_es_test_pin.py::test_wipe_code_setup": "8c0c426b97a45c02804ec798cc0d389282a6449326ffca11ca942d3a32ee3de1", +"TT_es_test_recovery.py::test_recovery_bip39": "656bfd185933cfd96e0d2f75696fd83b8c3da02f82e96b0844d58a32fb88cea4", +"TT_es_test_recovery.py::test_recovery_slip39_basic": "ead25799ef1847ecb88dc4e8b05b311d93190e5cbdd3f47ea27950f2ee0c387c", +"TT_es_test_reset_bip39.py::test_reset_bip39": "eda4cffc18cb9799ddfc4625dd4d1009dc4671ec29e0c2614e3946e233127f64", +"TT_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b602dfecc022217680555595e9543e8801e4f2bf080d7c040bc8720d353ddad0", +"TT_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d053016b5cf6b6e66fb441176ed5878d4078867bcf525c9bd6b710b3fc7198e7", +"TT_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e16d3e5a0f1e6102528edf2e49f9ee8ac7fae9b166f4ae252e72c4660ea7fab5", +"TT_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "490e657ba8bf152a069c89ba8ecd183ecbd0618db47dc0fb3f6cc5d791cc56c5", +"TT_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "c1137402bd8814e585d7c25801b6bfbad8c8aa1635683697aa881fa4ddfeb27c", +"TT_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "7f85d4cc7b82b476459559302fc7526b60c680255fcabc6007b72f325a507e72", +"TT_fr_test_autolock.py::test_autolock_interrupts_passphrase": "9081cc32dd8292531770bb1a2a6f6c3f17c37b5f29139fba6b6502e719eebf3b", +"TT_fr_test_autolock.py::test_autolock_interrupts_signing": "f0ce01c3921812706a235a0aabcf7db214f0da32b761debf09dbd3c41bc36381", +"TT_fr_test_autolock.py::test_autolock_passphrase_keyboard": "85c9442eabee0762151bf122ad5404fac4882d5ec8065dbebac6f53a41b8baaa", +"TT_fr_test_autolock.py::test_dryrun_enter_word_slowly": "f30f7352c2de7c296bf60628ba748684a783462f90bd40be5257d770489a8c30", +"TT_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "f74bebecf3025c7693650b9ea929ffdf23291ce3f5f1a725561c19ad2827816e", +"TT_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "1ff09921c78c61c2be50e230bfc711f11efc23d12287c511cff0f3889a043335", +"TT_fr_test_lock.py::test_hold_to_lock": "5193c1452d6857b5701b5b1734ae864724666746a4f3fc7b4f6843eb502c14fd", +"TT_fr_test_passphrase_tt.py::test_cycle_through_last_character": "26d41bab1d9152e77084688630309372f5c80292b24c0af1181fdb7429192086", +"TT_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "f4f9fefdc12e88ff67892897b3211adbc67112fa312ac8fd4c9466c74618decb", +"TT_fr_test_passphrase_tt.py::test_passphrase_delete": "64c282bf5a3d2ec0ba4c7606be642a4f035912015f8191840bff5f7a3c5fc532", +"TT_fr_test_passphrase_tt.py::test_passphrase_delete_all": "d0bd10251fd7722422867a8d4e4e52c42f9d3f1380ce7344b1434d61fccd2b95", +"TT_fr_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "0997281e709b30febaacf205b2c34d7ecd8fa3353edee06cd9ae0d15f3f1c4df", +"TT_fr_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "3e10d5e4392b2a732b96d42e72654a45f99e0c771aabe3485b4d40ba373715d0", +"TT_fr_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "ae42f57752fb6d53de42bdd8c23efc792feeedf4b3e867def89d651cbe053422", +"TT_fr_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "a8ed0e994208a4e723ef8acd90963970a1f2d4837aa07352900960cc840346d0", +"TT_fr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "4573dc2ccf90d2ce4bfda718f73effe2358c604f435b233a2397d653488b3f7f", +"TT_fr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "8977551981c8b4986339c325139816c53e31d2fbe11066254a9641206f1b96fb", +"TT_fr_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "4573dc2ccf90d2ce4bfda718f73effe2358c604f435b233a2397d653488b3f7f", +"TT_fr_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "edb7f35ad910f110584b4cb319832938bb16c59cfde050bc1d2a78bfa44a3c55", +"TT_fr_test_passphrase_tt.py::test_passphrase_loop_all_characters": "d4e3667e46fb60c812fdf293e3df657b4c8bd66418a9096eb38919b3f0944ed9", +"TT_fr_test_passphrase_tt.py::test_passphrase_prompt_disappears": "6fcd65c99486a05b6dc6e1bf25ad14ffee25a8e8589409773164cb8406737ffe", +"TT_fr_test_pin.py::test_pin_cancel": "56d2b719596da3b80f767c6ac9d45704981e511cb2eab1ccad07519e4c6fc3e3", +"TT_fr_test_pin.py::test_pin_change": "368fb260daf10e700657c97466f456910c5c1cf4d1ad3760ad4248ad13da353d", +"TT_fr_test_pin.py::test_pin_delete_hold": "d648c2c7802d4a16e73c955531120bd65b96013d4381aeb3c385c02d9c6efaa4", +"TT_fr_test_pin.py::test_pin_empty_cannot_send": "e7ead0dbf8f33f25ad33692275e957ff8707953a2715801fde5f71f9269f7e9e", +"TT_fr_test_pin.py::test_pin_incorrect": "bde7785c30ac7aa07ec7a506d7d76807f9f8eb87389d092933919633304e7148", +"TT_fr_test_pin.py::test_pin_long": "cf9f965fcf200208a5285e19312d3f8a529943bbf03817aa0337ebab8b67fe3e", +"TT_fr_test_pin.py::test_pin_long_delete": "33364861873445bfce33659729879e6def8975f76dd8e111c711ee2cca52c900", +"TT_fr_test_pin.py::test_pin_longer_than_max": "2ffa7298b2d4c95a1d555b01c8258130d036f88154fde96b4ddf3cfbce396f24", +"TT_fr_test_pin.py::test_pin_same_as_wipe_code": "30f5fbac7f96b8cb19bfff66ef5fcaca3adc2b6c6403ae9aec8eea9e44496b48", +"TT_fr_test_pin.py::test_pin_setup": "5b43e8138e7f0e0f96e6ab1af57682914e99060679d7495c9adcc1dcf6576692", +"TT_fr_test_pin.py::test_pin_setup_mismatch": "5c1ab312099499ee08db5e1fe19e5f59198ab99f05f91a6c4ee957121c7f76f0", +"TT_fr_test_pin.py::test_pin_short": "e7ead0dbf8f33f25ad33692275e957ff8707953a2715801fde5f71f9269f7e9e", +"TT_fr_test_pin.py::test_wipe_code_same_as_pin": "750230317eec848f8c0e943ea75db2ef063c80f7d7c1b35ea43f021ff589f3e3", +"TT_fr_test_pin.py::test_wipe_code_setup": "abbba9ec07c3b4c34fea5d15078d99111f845aa8a1819287742bef7c0c65aad2", +"TT_fr_test_recovery.py::test_recovery_bip39": "78e980ac66eba08129c9f1a86a66de916fc1954a9d5026838ca14a8a0eb24f5c", +"TT_fr_test_recovery.py::test_recovery_slip39_basic": "34370d461f19e6b9a2d8d039132be58cbd22a642de9b8cc8dd275b0d35230aa7", +"TT_fr_test_reset_bip39.py::test_reset_bip39": "859c779e0be9a3e92e08b9d56f832e8c5f1fb35d7a1a8a329b8f362af8d4ca0b", +"TT_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "78d1168bfa90fd4ea631a1a8f4c088c35973f509a8e1059eb78b408803f1dd95", +"TT_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d9290ca5f47d9abc288e2de8739432c088ddccba1d2fa056e9f89b3381b09f90", +"TT_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "9cc3d746e40a49aa661376dfe26ac293785e5a9a6d14a359f6523c6a7cfd30d7", +"TT_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d5cc4fdbf982043f1f2dc7a6b0cd04c241107664d7c553776faac51f26017b82" }, "device_tests": { -"TT_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "fa3d667e1439c9c2a475fff22d94e330c14697ff8dda4bcdded775492cb40a90", -"TT_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "ceac9a64c9aff8a4226e40f068ce412556eb582d909a9f8d401e83ca10433d77", -"TT_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "9836e9ae0814d1d42cf3957fc6ac6b17dc2503e5c0bb3a27fd1209ebf57c03d1", -"TT_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7c2943551ba1616bf057ecdeced1f603a90d60768dbd072573a60dbfdf4933b9", -"TT_binance-test_get_public_key.py::test_binance_get_public_key": "3d0517133c0cef58b6d8627527f3960f10706094d0d7113bc622453dd5cc9d8c", -"TT_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "28fde0e964521cf59b97a78c62d0c9655cfc8b0c8b1bdda7f75efb6a6c705a01", -"TT_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "5c0a4acdd90581b30266f1d97b811a3ad40cc39d2059d14f0a938c9a71016729", -"TT_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fc22ef1bf651f8c8475674f3699a47c2ea951f9cc93ca60a4c9b2e8ab3c124cf", -"TT_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "28fde0e964521cf59b97a78c62d0c9655cfc8b0c8b1bdda7f75efb6a6c705a01", -"TT_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "5c0a4acdd90581b30266f1d97b811a3ad40cc39d2059d14f0a938c9a71016729", -"TT_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fc22ef1bf651f8c8475674f3699a47c2ea951f9cc93ca60a4c9b2e8ab3c124cf", -"TT_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "1779de46a1d6549caf369e488c4045f92484327696e212ff679d6ae8b51a01b2", -"TT_bitcoin-test_authorize_coinjoin.py::test_get_address": "f4de0499dac628067619c6081d4ebdba0ad196af7bf9662c5387386eba9e9729", -"TT_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "38a7eac0cf0be45770fb28da9c2f74bac6404e85f2a3801acdd4b0107d99f2ff", -"TT_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "d39b3290ddfecd5a3ceaf249543eaccb2b71c21eb2dbeabef94fe866ad7ce6a8", -"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "00f8d6cc8ad60877dc4629295e438f29912456f0767997ce3ba9277d1e1bbf22", -"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "00f8d6cc8ad60877dc4629295e438f29912456f0767997ce3ba9277d1e1bbf22", -"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "312fca890a6e93da6c3705e3b3c97ba38dd336374634dbed9134362420273380", -"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a0757616e39b5883ccfba01af3b386d1fc2d4a00517b2c3d79519ce0f60bc5cd", -"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "b8ca0b72adfb0cfa1ff653c83a0995517b71f8bfc217753e16aab49dd82a3a65", -"TT_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4ec28178d68afd83019583d2f70dfc1a66a42f946a801d6a9d210ecb7d700951", -"TT_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4ec28178d68afd83019583d2f70dfc1a66a42f946a801d6a9d210ecb7d700951", -"TT_bitcoin-test_bcash.py::test_attack_change_input": "5a2732a973bf39bb25bd06180cfdfbc7fe494015c07df9461d15e189851b811d", -"TT_bitcoin-test_bcash.py::test_send_bch_change": "5a2732a973bf39bb25bd06180cfdfbc7fe494015c07df9461d15e189851b811d", -"TT_bitcoin-test_bcash.py::test_send_bch_external_presigned": "0ebad19508c4746198a6728449e4ac0d1cfdf169db907e4ff1acf1ef7f37a400", -"TT_bitcoin-test_bcash.py::test_send_bch_multisig_change": "4e9225e760a416bdef0b2eb1ac07489a7fc216b6a682f4edfd0a99dc7a0364c3", -"TT_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "3350934f73adc12375536ecc125f42631d0f17f37d5a72c3a6a1a062e9e9e565", -"TT_bitcoin-test_bcash.py::test_send_bch_nochange": "1b7584ac7451c9449962322655770d6d46eb8bd073e13b3aa605b4da5bae2327", -"TT_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c7102bac98a0a09a46bbbeac4c980b4219bb63ac8ad6b1d80797bf9cd991cfd", -"TT_bitcoin-test_bgold.py::test_attack_change_input": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0", -"TT_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0", -"TT_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "8cbb24c33d0801c03ae2b009cca0b6ade37c5ff437eaa64d8ba640a3da8a3002", -"TT_bitcoin-test_bgold.py::test_send_btg_external_presigned": "22a3e3baf7afcecc5b457ec9f9063e4d729879f79151bc43e1f0738595207b35", -"TT_bitcoin-test_bgold.py::test_send_btg_multisig_change": "f3e442202d95479ca14b053ab801b8002f752be016aba1a6057201d74503b9a3", -"TT_bitcoin-test_bgold.py::test_send_mixed_inputs": "8e93f1dc099203ca34177de6bf7370faa7e846ecedc630b8a16194fe7819d4c8", -"TT_bitcoin-test_bgold.py::test_send_multisig_1": "8066b6a823c1d5e646934754e74ac85652285ad9fdb23a74bd34c9597f6e5618", -"TT_bitcoin-test_bgold.py::test_send_p2sh": "f4b11a171cf48210e50e7e45acf9020a92cec3ac854921de0c133f60e3d0a5a0", -"TT_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "9360c9e41a40282f5ecf6d2ee91fad8e2c10ee3be6634a7eead946eed23f94c7", -"TT_bitcoin-test_dash.py::test_send_dash": "557a45f80747ccb6622001a7540273589a9cfcbbea18ba4a23fb92e94346ccf3", -"TT_bitcoin-test_dash.py::test_send_dash_dip2_input": "a0b3ed97530eb7d1a0af8fb7069deeaf73bc5624dee58be0c1ddddbac85e04d8", -"TT_bitcoin-test_decred.py::test_decred_multisig_change": "f4d8513acbbf3531fafb8092b5a62ca03f789f31e695500a71364b2fd7976159", -"TT_bitcoin-test_decred.py::test_purchase_ticket_decred": "a33a6aa291e4af679e38d21b2222ff16844e6bfebf51f98c766556f520911ed9", -"TT_bitcoin-test_decred.py::test_send_decred": "7e8b1532772cf7695fbcf3460d179d08f22c410687c057ff128882e32d923c92", -"TT_bitcoin-test_decred.py::test_send_decred_change": "d28de2959972fb3ef29bb267fa8bf6b96ac9c7d9ef4550538db5235a5b45307d", -"TT_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "d4657fa66b4d9e90d99de7bf5ad3123d74fec9c528a819f691bc565b521257f3", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "75cf40b6d916ab5107d5241143ba1edd408d359076edcfdfd6ebef4f6202598f", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e8628d184603bceaad9c5ae5b9f51460054e7b5622ea9c1a3dc84f84034808bc", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "d9e035a4407e3fbbeaad3726c1c19c32d45a788a943187e909b0f2787aad7486", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "a8f46662c3d14e2defdd5aa2ff4486aeac3f566facf086916da7ddc7e0185130", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "013171ff086e4565db1bc4f8a0d466a0fa7c6449ee58a3d27b27f073bfb74d63", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "3941cd14f74e1d7ea919cb32cbd7c5954c412d845305e4f0e495378c7701a53b", -"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "2b38959aba5f6a57365ebee67831eaeb9fd3276f9ca0d6c6d99e6b46e97998bc", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "9db02ff67c8b507a62ab3bca79b4a6d5cd3f3da7136f7bc0b237fde382b50739", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "6ac0059ce935707618eefe9c23d403ff30807df3c3ec23b8615a50b648bbba75", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b8e44bea2eb0d3ac672a41ebf83683adbb0e02a622cbafe2fb02283117bd4c4a", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "eae032ac90ebf7d44b84eb6f06c43f67140de7adef88906d98c1759ffd4995cd", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "4795ab245421deef1f7ebdb6568165a64c7066054747a84c4e30a78085c71e22", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "284b98fb9d745aae6f552999e1652300d84d4863c3b29452615ae5b691d7b266", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "660130572e80e9161d733f3ebc465a5f2a9859a79eecd7201c7ebf955173df23", -"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "35e60de9968a7c5bb296dc554970a16878165e062bb8480a5c8428f73a3cf921", -"TT_bitcoin-test_firo.py::test_spend_lelantus": "213ced04e2b337576abe1861c11ef69352eb5542f2bef720e50d54cea031f9db", -"TT_bitcoin-test_fujicoin.py::test_send_p2tr": "6104cd021625791fc9141ca802c3c18fb50815459acae06b2eeb05da432352f7", -"TT_bitcoin-test_getaddress.py::test_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_altcoin_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_bch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_bch_multisig": "ef8a33a6700d369cbb842ef4bc0a853c10a06ddcff7abde6a1d84e7d55a0361f", -"TT_bitcoin-test_getaddress.py::test_btc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_crw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_elements": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_grs": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_invalid_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_ltc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_multisig": "f2ba49011a093ad530f0f3c3f60e1386add863c76ff5e3587ac90262a9f4676f", -"TT_bitcoin-test_getaddress.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_multisig_missing[True]": "0fe493c41775e7992c88e1bace001577f6d8737500005399cfd73522c7459b0d", -"TT_bitcoin-test_getaddress.py::test_public_ckd": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_tbtc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_tgrs": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress.py::test_unknown_path": "1dae1e1f3127cb2112f58e75e5b6eab871da0abadcac14235b3dadbfe0d1da81", -"TT_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit.py::test_show_segwit": "cbf5dd38da807d68f93cd9e276f8f0b7a92826e3e3bdc40bdbb30f4a63bcd4fd", -"TT_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "a704cd1bed4d13c243f86af77390bf15d8287ab33ad0457eca6697ce68f5121e", -"TT_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "40f2d6e630bc753de21cf7739dc290dcf809337d5e692378699c98572474afba", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "9cf15bac5348807d5c50a8c622e92df0dbb630ba9db0b8423cd7225d2f4b620c", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "64d62a9f4b02896b84d56c3453877f439fc56594b2832d14031d45732817f7ab", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "077a15a5492dea40d65896e4a1d1a17a175e4d85d41c66f44293872594663ff5", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "d5e4cbb3c97f8d8312002a2dd7ed070a1c293dfca4ac195854fb296c1c1112fe", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "277f41432b63286e5b3898080a5245b4c57045b51dde6be49467a1863207448a", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "466e961281fc0e074f0edd4c6d7c04af6032d92aeb33511a8a39af20fdd18541", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "d4a50e221264e268a437ff4b6e5477de74729b1171cb7f1854bece821a46c62c", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "f5420ee7d27a19162d284b685a34fdc3ac296fdcfcd9855d7c9c00476611893a", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "af0a9051d5b974cda12d13f1175f6a870de418708c3aa05266ae2f516ef0fea6", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "30f3f630eb68aeb9c9c8d67811e5101ca3e301cc8ce0ff7069b3e687532fca8b", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ace7260e65a375a577b0cf58c7c19e73c861a5e705336d772e4d8328796b46ec", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "a74c4afb2a87e09dd2562bc7650caeaf059552db544872b7704af9e51f26103d", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "6eb641ea4acd345143540a9985e16cf8569e957f830ac4ada79a949629aaf310", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f9c524eae89e19091508c9fc40e18a2c2f167a15f28bfd59ff4aad7bd80fa016", -"TT_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "e9e1685bed4796972fdf044a84d24c95981bea00df672614cad8c2ab1b2c8e74", -"TT_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "3a15c7626541011177bc88967c72c278fc229ad8ac131cf606c8dc1f48b5df2c", -"TT_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "cbbf158f803cec0218cef4482be16b1fbce5a33c27d22089bd562cb8991f697f", -"TT_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "0478aa33fb21365c1d114cad7bfb3c0270b20ffc3573d1eb70821101004e30dc", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_15": "af9af600df851cfbd070139fdd4db6588e6ce4a116b45ca19a0068ce9d678f51", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_3": "94d22e1a493fa8f3c3e15a65333ef0691fcab1594ee0e767773a3a90db6814b6", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "faa98c7c2c581c303a2b72f0a2f93bfb6c1ed504cecda4b483af17315b569e78", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "faa98c7c2c581c303a2b72f0a2f93bfb6c1ed504cecda4b483af17315b569e78", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "96ea93c13ca429954e84685b85df2eafa7e9f25afbc8ca77a88eb909bd3f7c8d", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a93a88119c9ee255e09a87ff1e9c078a61e1e7ec61a26a4ecbccf294a70269cf", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "46b56e80439b320688feac9bd0ceb440ff83cf5d1da51a6425aeb97aaf097393", -"TT_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "17a274a917e5ff853a429561ef4dbceb12c41520c18714f3c3f037d008e5527e", -"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "2640940dac7119c208074f263482b66323ee2ab0769c2cda32b75e91bfe9f2a3", -"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "cbe6b393e10f5e4fc0b780255b19d46f53cf60706a2f2361a658a82b0b659825", -"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ba1c1f8dab1121f7fdba73f9a481145ff65e383763a24a1e66d25b2b4681c58f", -"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "62c493f4310b90d0082281c38acc314cfd059bbbbfe18a150a5d7236cf9e56f1", -"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "8ccb2c2222cbc695f5d49543e637f03eb69d60ea654636e0e8b97a0c04a21e52", -"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "cd5a286c516dd0bd7eb107081356863504947e9498a9d6b490760265c055c870", -"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a5f25a795619e2adcc3bedc07c6b12dfa605a9369705a013f276428a5a4f78d0", -"TT_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "508a69027cc9b71d218f65a015d963f13fffe4bc9ad435f8fb12894ee3ae298e", -"TT_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5f4e0c17cb3258af3901c7508968af36632f3e9826f6f63068b8521a4fbb36c2", -"TT_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "9a31966c5665d23cb1ec01529d09cc3034116a28330a52608d9c12a96bdabe90", -"TT_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "76dff54ff9086f92cd401fc9f7fdc7bb784e6c097d2d7afc0c423c8589488a70", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "bae7f0b63e3fee8ece96e59e5fe45fb50b9110e6af0cb431bc42a3f965ff3752", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "9b215d4fccdecb67001721ff27073e2cf7f57674713b086163a400315a0a3715", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "7e60836a928c98fe074421708bd25561ef46d644f4cdd6867b9bc5d79c020f3a", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "ba55e3d330f207e211264d150ab42394ca033cf8505e1e02f5243c3d4cae3ca2", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "f2c6c4c91fe5fb8309cb980779a6f7254124c296bd232ec33bfc35d448df2789", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "27a5b6815c3b8d444c4fd323a69782f40759e99f582c8f0131835d00fa251eea", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "77c39f9196a1ad8cd7972169854f7cb5f15d93d96c3eb43645c980d3dcd0e771", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", -"TT_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "28df2e38996c9cdbf83b98a886c5fa3fb7a685d9e269d55b07035115ff8cd903", -"TT_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey.py::test_slip25_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_grs.py::test_legacy": "a806ef300fa0e8ff74828a364b2fee979a4c616b3b21111b150cd4dc92770674", -"TT_bitcoin-test_grs.py::test_legacy_change": "39af05ab65895d138ed4a080393f3de3c15072980637d72a58c0659fb4b31032", -"TT_bitcoin-test_grs.py::test_send_p2tr": "8d7cbc9e1e1c2c7e06561563b5ad775bf281eb516c50b61e9fe44293694110be", -"TT_bitcoin-test_grs.py::test_send_segwit_native": "fe926c9eea3e2184a8d54beee1b148faa2c778aa418e26e29089dd4284f87e87", -"TT_bitcoin-test_grs.py::test_send_segwit_native_change": "d8ef8d8a6b9c94c3b25a45015a996a7ba31687024e68f91609ff0cd587b0ff1b", -"TT_bitcoin-test_grs.py::test_send_segwit_p2sh": "c52b96573ff1d0f1a49369298a69c1828e96149f91ff406cdcb43e61245f4449", -"TT_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "f60bafecfdc71ade91c375e95d0789878f7dc72e29319e257525719e55299cfc", -"TT_bitcoin-test_komodo.py::test_one_one_fee_sapling": "7656cdff1d59f868ac6918f84908be975adc26d2a98ee9c9706d845dc8a2ef84", -"TT_bitcoin-test_komodo.py::test_one_one_rewards_claim": "c2fd77b0242d173cd9b95e75c3ca94de10d8d8d2908420241bca24acaba5a010", -"TT_bitcoin-test_multisig.py::test_15_of_15": "d5938400d691e30dc969e06c21939cafe10dc82bb529f8c11019a2af738aac29", -"TT_bitcoin-test_multisig.py::test_2_of_3[False]": "99c3eb14a9297b4d9caf1142f562bdab6d68a779ea4a17a1349d0ac40314bcbe", -"TT_bitcoin-test_multisig.py::test_2_of_3[True]": "6b7c2edc4fb52dfd5d132286dd8f9b3ca84136a522c653116be6f194646bbede", -"TT_bitcoin-test_multisig.py::test_attack_change_input": "0f230d5c6845daf73081e406e4dd5a0252ffb97a65c6196d3c856ece18372b85", -"TT_bitcoin-test_multisig.py::test_missing_pubkey": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_multisig_change.py::test_external_external": "c4d64521e603d5b9e3f86881f464be11334877e16923cc7868b4584996144de9", -"TT_bitcoin-test_multisig_change.py::test_external_internal": "0470c5fa7c26b622c9407e4f957658baa0b8e462aa255b30514495ac4e4a29a6", -"TT_bitcoin-test_multisig_change.py::test_internal_external": "34916d218a88982a0e031d3da676ba794357a43c13448cdf6ee064669fdfc9da", -"TT_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "4f4a1630b3435b1755d1d724012be607006fe2c7f04e2a5edfe0fa4aa846165c", -"TT_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "44d8941b9161ad7f12cb2e8f231509faf2e65dda2fba38504acb39b96311935b", -"TT_bitcoin-test_multisig_change.py::test_multisig_external_external": "fec43fa5690a40668ed2bba6d713cfec07ebc8c38bc686f82d9954f7e417c8d3", -"TT_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "fccfaa06091bd0f574e4c78d6b6f89ab1842a33cc873ed60cf484bf33db3b451", -"TT_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "f3202ea515b4c5935c8ac5eb377cdc68106fe5f05968b99234954ad4aec25e6f", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "31755b656cad58d7d32dcebbf939797e416b37156a07e887b55c83f815e8968c", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "70933a9dad255906242bebbeaa13246fe08feee20f6a4a2149541a967a0ff550", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "686e0a918898f62a77ae2fcc2ca3b9438b441416169d327a3518c5e917036fcd", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "aab1f46581f519c7d3d81aeab5d6ed8e35a8d492e95dddc918ca0431b6e8fd54", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "0d2fd0b06a57c3c275bdef3eb31327935fd4990443e40f40ab5684dbda4a768f", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "92d41acbaa6d69fa4512de55c3004b77701d699bdde982861740a25fe785d910", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ec02c7840205c63d6bfb9a7a5ddd103c45009ee61c6ee0cfccaf343e920227c1", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "d212479a0542d5f2fcad9876987db10f6e1c52b9ee13411b72fa8062ea5f73c6", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "f3f8cf5e56808b1ab3697a84911976d49d37fbe0c6652dc20c2ab11ef4177b61", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "af8a4f016ec79439685f33edeb4ec8e228bd72ff6eed4c07d7885eb44fdeab09", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "1f12bb3af8bcf6a6b9afafbdf6ceba9674c0d2ef159fd75be949a60748316caa", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "0c47cd2c13f94d818545f493b5c85788024a0667ea8682add50e474347df3d48", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "5b5e013a4b98ba8ec3dd2b44c9653c2eaaa7b5b1a949f9058d3f8da6500b16fe", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "90c5c863c822b85e807f1f971c707bef2c32afeb763d6898f0c9b9c33f26b5ab", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "8b4e69d84b57dc00839900e7cae25b1b9f4baee8cf2649833e467145b254ecc1", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ff12de01723a4a3cf4bb8c011bd81d45b9f43254ec7cb0ea43556975f5fd1fb7", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "4c53a681a7e094c59a52c8bd2536aae2fc192a3ca93546ce348b601383447135", -"TT_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "112c66c98a7c85210d619c610e0943fc83677878116565b2e2a875f130f09e0b", -"TT_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "c8dcc2856fc3e7a31e8033caa42a134de2aa05d3144a8eceb0edd3af041f03d9", -"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f68f1130cf830aa8e6632901d834e23693ec5ed111619c83eae12ef72f2a3609", -"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ac684c8ef0dd6f8456ccd70c955290720abe863fecb994a50c6f548111178f06", -"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "2f95be5d0472b94ffe051d5753b9ca68f95b245633d8f76289f2768470f47319", -"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "73857c4de7ca4572bc7f9f428eb23be495569d938fabd35baf4e5bd04dcc31e3", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "0ffdf6683c3dace1725827bee5e0da3c489276bcc0f3cff411a4a848bb7a2ec8", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c608ac3b16eb3b1a9e294a809b692c5633ba2c83681bf55c85b4c137bbde5810", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "fa9fb399b0fd4f08e344e7581419e1b56d34995650a818f4e637afe8e3f9b3e8", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7d925ab9aec530d3c863f97174a5c837e32f6044c023f1365cbae7bc75cfb7c9", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "56108f83b7413d2a4b22048caccecf55911c13b5f1d946c40b97ee60c8bbc429", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "0fa3a45f6b8d31955b0e9aaa68d79f5948a7597901cfed56aec1a35ce57aed3b", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "83a6b8ff9609f07a0e10d5c46357a0c3647fac6671eace084f0568f84ff6d5d7", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "dabd2e4161c862f8b45e5793523c0496a765b247e64f23e202fd2432a1a0e94d", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b62ab2c91fa20d09ea8e79a18904f3ae4465665b4643a1490cf6c0112876d2b7", -"TT_bitcoin-test_op_return.py::test_nonzero_opreturn": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_op_return.py::test_opreturn": "b4f764f46970686537dedf7acc634675ce8a92e98fe99d2b19d766c546726069", -"TT_bitcoin-test_op_return.py::test_opreturn_address": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_peercoin.py::test_timestamp_included": "638313d3b73353020ea06a2c34c4b14ae87e864d7c027a882d6a55330030c6c0", -"TT_bitcoin-test_peercoin.py::test_timestamp_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "f524a9f7ee2fa91105477e0d673e3e5c5e1c1a13222d20d46ae2e375f9921c3d", -"TT_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", -"TT_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", -"TT_bitcoin-test_signmessage.py::test_signmessage[bcash]": "3c538fad2bd6a1fd6eb3c088d9571142e194e25c53b7f19abff1ef7e03040bb3", -"TT_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "bec877a114f2b28638caf4993e6ac8f83a19ec523b09a210dc0b817b1acf1a26", -"TT_bitcoin-test_signmessage.py::test_signmessage[decred]": "f5d7fddf8c0dfc802b58e565e826cde2d9dcf035c5d07539d16dc01e2c9732c6", -"TT_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "d9e1788e58374fdd27b7fbfc014b8dee59948938dcfed47169a5b2acbe380e02", -"TT_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "55f230ea818b01962d5f545f49e893776fa5d6c6b2bb95c78dec22b7e040b4ee", -"TT_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "103ebfb2f9506a61f3ee1f25de8345048318af26666c0cfd98b25898efe6125d", -"TT_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "7fff8e2f1f1471c82d2029ce0fd26dba010fa29eb074025f14ecf154348b6442", -"TT_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "8004f64bdd53564afec8f5f290617fcfbd2a71274a84116b0837bc079601cdc1", -"TT_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "8004f64bdd53564afec8f5f290617fcfbd2a71274a84116b0837bc079601cdc1", -"TT_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "f38bed10be867b76b284c718033e7d6de592925bb0211e04afcd31247c334f3d", -"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "e500416265ceda3522cfcc85e5640197e53d5eb2679bd1cf3708f62ef4af1abc", -"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "6bc4d61dd9a8134b8c821c800e91cfcf15559a03e9b03e1e9144debb5fc720d1", -"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "6bc4d61dd9a8134b8c821c800e91cfcf15559a03e9b03e1e9144debb5fc720d1", -"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "30e5354089ce5519ed95646fffc9f3468587482a19b81163b719d253421e3645", -"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "20d6ed18dd6584879fae23768026fc50d70874a5a68c595251a256d320334e56", -"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "cf9e2197fe85422b3db5110db75bca948cda95d40917ea0c5dc4cb442d0afb98", -"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "cf9e2197fe85422b3db5110db75bca948cda95d40917ea0c5dc4cb442d0afb98", -"TT_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "cb14f397c92ea679413d31b088e6ac149f3ac2406f28d5c07ac939531e1c3f7f", -"TT_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "0c706c1b116ead8623b6b667e57bed1bd2a43abd4b4eed510d025085a66a3e4c", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "933d9466accabf431929e82499f29c29b37eb39b0cccd1b6a4a9b022ed6328ba", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "3961de777b7578dfd5e500285177284462b03c260f2a46f5827bbad906880b5a", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "2b83146021fc6d4e870ecba9b79eeff057e51f1b92e8f6119afef4c7f1a090b4", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "863ed334a92063c27233556e2ebe71c658d99d4a454ea2a7328d97200b4b65af", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b25d95a6546962059efc4b3f7749546a1b938c6084bd52a2a62322cfb4e522cf", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "382511a667f1cb2695c1fd140c3e1960f64d034c2cf94f39c017627bfc2d12ff", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "85a84af1b63221a1d0aa66e59a6323e67fcc25bc0f9599eeb4848f602720c3cb", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "d45d875ec1ae14bb86f68673f5e5fd0597ff48cb3f225daeab7bd0ab069edc05", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "d45d875ec1ae14bb86f68673f5e5fd0597ff48cb3f225daeab7bd0ab069edc05", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "10a6cdf39c7d1c4f90cb7b741429c13cab6cb6fd0ec082a82f22220bab185756", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "ba43a9c316206f12559022c1a6170842b5abc1e4b9b31c41cd183ef71670f785", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8a50b6cc3eb28bbb186c4e113201425392ac8ebb1bb8f03e817b96b8246a9bd3", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8a50b6cc3eb28bbb186c4e113201425392ac8ebb1bb8f03e817b96b8246a9bd3", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "ec4a77e34885849a9302779fc47e260c4d943a2ed4f8e6f962769a538261ebd3", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6fa6739fafc24cde1d9c820bb5dc6abd94a11283fbf40b5967a29c34bb60149e", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "9221745002c1e2d346d9822e358a13081db57c6a4a459eafbe6e83ee3a037d23", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "9221745002c1e2d346d9822e358a13081db57c6a4a459eafbe6e83ee3a037d23", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "d9d3cd25802f3d429d665f1c987d4f895bdd03ab86f13820282b4667991b9285", -"TT_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "236dba354336b318a77a8de3ef74abf6fc703b6e044630884b581d72ea6d0963", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "1333ffd148cb092b927ee65ab020151a0da3ee7cb4e8166f097b1bbb2e7bea4c", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "590a9899c3a3ed23041ed483df877c61e73a4040849c28d9a3dd29db76a1f162", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "8738ce1102d51b8ba5ee0323b89804d1706473051fa0cc2c9c34c62d8c1cc2ac", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "c69fa09b4dab1bafbbe38237d72d5ebc8449c9e188e6d4880136338c31a1431f", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6ef0e5fe5f520320520fc33df8d91d2fcad0f8863c48d71aa9428ba482156cfe", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "d7944e2882a1c71850f6bc087479976e7be548f01c4d7907776fd98b6707a0fd", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "01658c7ef419d543d2117053de5ab97e6886c8957a3623be5a52c5b1d66d8829", -"TT_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "0da2f2b6bd625bc5c8f9982ebd83f604748059a77bc1a49e857a07fd24968a0f", -"TT_bitcoin-test_signmessage.py::test_signmessage_path_warning": "705b683563a06d8eaad242a794e5c8683d41d560a9642761d183e79d85510bd7", -"TT_bitcoin-test_signtx.py::test_attack_change_input_address": "406e9f0bf3be42d1f41176b0d1f97b7286e834e1d15b5397904f981cea9fc5e0", -"TT_bitcoin-test_signtx.py::test_attack_change_outputs": "24ac4be4d6bcb7cdfd372bb3441f10563e13fd684ed3fdcc79c0c8e97830326b", -"TT_bitcoin-test_signtx.py::test_attack_modify_change_address": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", -"TT_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", -"TT_bitcoin-test_signtx.py::test_fee_high_hardfail": "eb0077831dee4dcb6d6395d01ebf1a4eb78e05f6864cc3247e5c05b936656053", -"TT_bitcoin-test_signtx.py::test_fee_high_warning": "ad4a82fa012b89ce6a027b88b3170504f5372b93da947517078edbc647b56bad", -"TT_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx.py::test_information": "44e044c3f8b299aeed155f0aec66f60510aa7dcd3986d340c76ef128de6a428a", -"TT_bitcoin-test_signtx.py::test_information_cancel": "d242ec98f96d0db41ebcd7a44ce31bac38637ebd1103727445a068118c51956b", -"TT_bitcoin-test_signtx.py::test_information_mixed": "c76e1d787c589090bd950101fda86f62dff83e70d4f879ea1fb0519158c1e95a", -"TT_bitcoin-test_signtx.py::test_information_replacement": "ffce40135620e220930713ec3ec9554e6ae801aea34235ed0ff89dbb805c891c", -"TT_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "924ed54c06fd791910d8a43e0b7c6f39852b3406167045211dca4e495dc69b05", -"TT_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", -"TT_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", -"TT_bitcoin-test_signtx.py::test_lock_time_blockheight": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", -"TT_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", -"TT_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "2dcdbdf6c4c2770d05b751e1ca1f1e33646c3f83227e298778ce5bc1fb919bd7", -"TT_bitcoin-test_signtx.py::test_lots_of_change": "e66b43aa7930e28285bcaa14d8ce3a1787a67648c17e55115722a2f90d375af8", -"TT_bitcoin-test_signtx.py::test_lots_of_inputs": "4210ca2bfc63d054923e03cd9e12a643e0f18a37df2045749911037e262fedf3", -"TT_bitcoin-test_signtx.py::test_lots_of_outputs": "4a3b8660ac30c4c91f5dbc9b58d02bc8d60a160ae255bafd3f56e4c697afa183", -"TT_bitcoin-test_signtx.py::test_not_enough_funds": "6b48450b917351d6f25753b29b9df6663c1e6dcdf6a795aae5986992f002b30a", -"TT_bitcoin-test_signtx.py::test_not_enough_vouts": "e198a73b60c1938810862a5e479806ac4d768f42c76e410e842cd89b66e63093", -"TT_bitcoin-test_signtx.py::test_one_one_fee": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", -"TT_bitcoin-test_signtx.py::test_one_three_fee[False]": "033c92c6af972e9e31cee0daf55e76f82015b960459b91cab58535b27711909d", -"TT_bitcoin-test_signtx.py::test_one_three_fee[True]": "3516df019ae876386583e8176957310b57a2a37af3b7eed728fe4c7708c69e2c", -"TT_bitcoin-test_signtx.py::test_one_two_fee": "51d00c0953cfac7ff286cb5117e56dae83e9ade576e77f3be8671ba7d9f8321a", -"TT_bitcoin-test_signtx.py::test_p2sh": "6b705686dc78bf72f8e9ae125b0bb775f814c2f517052cffd2cd3badc9d0dc3f", -"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_signtx.py::test_spend_coinbase": "05d642a9018b50279e386b000ca5591732677370d5fdf1685469ae2406b3bd4b", -"TT_bitcoin-test_signtx.py::test_testnet_big_amount": "85fe2a297d335bfba11b3e9e01a2ec2c9a30730ea06b967983ed4f4502323698", -"TT_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "2007e7cbdb14fe7db3c745a20157103855ec65cb932ac3f0c613de26e3f7dd4b", -"TT_bitcoin-test_signtx.py::test_testnet_one_two_fee": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", -"TT_bitcoin-test_signtx.py::test_two_changes": "a5b47af1fb057b9384194dbf35c9f8de47c793eb26511028b405be06f09aebae", -"TT_bitcoin-test_signtx.py::test_two_two": "bd1e6e9b2f4704e1baf777a41e6f1e576be4cdeafd718e454cad973de1f0a9c8", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "73c15b8ad493c3d7b1d9885fb1dc5a56c68bb6a3d4ec9a3792c03be26795c182", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c74d09789466f3e48fa92ed5bda1e1dbcf7d9afc9d16df6061fa82395c8e89a5", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "f09a0f6c8c10df04da3ceb63bb4d054fbba4fc6275ee92a376b53d133ca648e8", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6ac68aeb33f8e70ed439b3be24f1bc29beeace17a0a5bf2fa1ca89852d1576e7", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "d975014bdaf34bbb6e48553bed41c3544529e907a02cebce1dd730f1ba38fa3d", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "cb88988daa8afa19885d5eb9f051a1420a3a667b429417e1d0d0a6db6b5684ee", -"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", -"TT_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "5faa3de360408600bb51e48b59c9be7910340c2697af97ec7b97d64613024d2c", -"TT_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "8a025c4a07a30fd24274bb200091cb847810b07db961c8f73e4f5ea79da9cc9d", -"TT_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "7c861af51673abc3516f25cf2f494951cfb26422886b5359b6c0123ba83b4e4a", -"TT_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "bc76b3b033eab274e39d8f56846d4eb1a6a3cbc97b2bb4218af62840a0d294f9", -"TT_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "e630e07f6ca5724a6aa53b31b7b17ffe347d637be3f54f3a51e05bab8cffef6e", -"TT_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "651b9abda274123014f55118ddfcbf0fb08ff52377c0079e5a4cf6b7c13d5225", -"TT_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "191c9bff9eecd6ebeeba1d3e1b1701d9a6750f1bc9770f0a886936e19f6a689e", -"TT_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "b0b065fea6ca2acea50cd30b4637a4776688448ff0d86411dc6957de652162b8", -"TT_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5386d21e156629cf7df3cdfd98074357d93e025b113f74e89f271f4f847298cb", -"TT_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "950ba42994f18ee1b96786c8d49e33449b674ffff4715319889c9fb5f34a234f", -"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "4c3cfdccd4f2dacb291d0b3c6d87baa7cdc8f9afe4cc605d9091f9ded9ef00b0", -"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "b3f3c1221160e0d9bac89bd44fe10cb587735585628ef6c652213ccf2d92d60f", -"TT_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", -"TT_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", -"TT_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", -"TT_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", -"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "3278de4acec9009035c80f1a9cc4dad11570582fa2eaab30aa7c034d4f8d4371", -"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9b9fb6db5b35261355f3e335057b7086dae18adb09d94c446294004bc4016876", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "da892ff4e7de75f6b3c1fde48c915b4cfd9da2c3f0052552ce0b873c85a539e7", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "768b6294843581c691d590202a8ef11c0040fff3189a9b0cde91b1a49d6df87e", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "23e3f995af215af80d9dcdb00189a0545a77a40bfe55e195566ccfe41f78d2e1", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "da48ca03cffd80b81d5d17cc8f967af2ea82784357ea894f20bf49d559916feb", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "21aac16e5415731c271adb2e145ec9cf6313bb1205612b74f885a839fdb26c74", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "de1b8868c3ef6abd31805540f4bb73b3693bc2ded0acea39ee2e9aa44c131a82", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "66e15e830579ed547e8c28908fcdbcb2483658fbb22ae138764a594c82f60053", -"TT_bitcoin-test_signtx_payreq.py::test_payment_request_details": "fb9f7cd2571c2c72c56968c57fd0ec16b83d3ab9f0f5be9548d055f37e3f2bb0", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"TT_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "1b0378c2a799b0b890f1bc8652035d7284126009223f976e5623fdd0a8fb006b", -"TT_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "4d157fa6e9c1da33a59735186b756adb7e02189efc642b7732b373b2c7e0bc64", -"TT_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "bd53e379f2e16c5b75b2cc6521ffba666e474f18bae90205aa773d3b6ceecc3f", -"TT_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "bd53e379f2e16c5b75b2cc6521ffba666e474f18bae90205aa773d3b6ceecc3f", -"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "c0f93b453f71ae7f9bd28a27cb50dfa6a99d1131126777d0f7957b194ef2bde6", -"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "bfb6c422e7a8aa05e5e71501ba640b4f6008684816efd86337b46afe6f75057c", -"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "557523aee043cdfaebe92f63dfbf89d0c7d4e65ad583471c18b91e66a067377f", -"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "c0f93b453f71ae7f9bd28a27cb50dfa6a99d1131126777d0f7957b194ef2bde6", -"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "9362fd8a2a4db51618a4be853623a75e73541aef5d329b2f34729831a3c13bd1", -"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "685ae658aa7b6d7d0e450798dfa88212241f89dce943e2dc7733e9ba0f32578a", -"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"TT_bitcoin-test_signtx_replacement.py::test_tx_meld": "da018552044c9dc07dc4019dfc6b5c7cd77b7597f4c8e3b142cf84ed6933699b", -"TT_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "6ab1dc24fa8dbc1c88a9937882069b33f0d5f0766e99faa7c3cd83709839a98b", -"TT_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "9023903d91c453cfa696777db99334016385832fa47af3756a1aed58d097ae77", -"TT_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "f170d79bdc23af7161682637840abd2d271cb73dfcae575f0fc8704904fcf604", -"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "602ae135d5f67b9821d28c3dee2e55c0b30cb6cdbcc9fd7970d8e02f06cd6b7f", -"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "9aefcc92153b1053449dccdf9ef3abfe1c9cf82b777f22340b434ecccb564695", -"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c4d99122211e001a4dc6c421147dd9673f3400af44b26900e4ce1ed49ebefb54", -"TT_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "27aaadf7e3dcb1077651274046e4a4e53bcb708e3a140af0c3c4f92006d4ba98", -"TT_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "1bca15e6a93a162199bdf9155e12a23c34fb7611d395ee1093735332b3741a5e", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_both": "72b94474858fd569d20de2a3324f5d7b04dacad3829c4a4499e7c26bfeab49a5", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "11d1bfd3051ea6389577abd22bb5700eda61da7749af3a3732df17f24b3027dc", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "2b4f72fd6274d1b3d51b7e4de1801b4a1cc55ce7e2b7bef9be152347a1e39ee1", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b62b6fde11bd95904270d2be7127728beaf9813cfb3ec94a1e128fbd19540a16", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "ed223eb647b50559e2bb0fdf1a2027d735f9db79683dbc53df567996a0d8b180", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_native": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "16d836480b99974630adf2a6afeca600cd9dec2343b686a20e3c2b5d854ad8b1", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2f6a9c1392ba334cfc9987f68687d32c12558d08985e52ad71d0424014238c06", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5647cf2836afd54d618f9da5820ef73071247fea8e50c87b5c2c91c733902321", -"TT_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "d5fc037cf71574e69859ba782ec1a03279acd26eaac25b934a4d913230931de8", -"TT_bitcoin-test_signtx_taproot.py::test_attack_script_type": "06ea8319a958a624a9febc0d79de37e3034753924b2ee015f2cf0ec3995cb669", -"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_bitcoin-test_signtx_taproot.py::test_send_mixed": "1c2e5c70e7a94d1009315e2dcd147612d848e320ccfa2eeb747becb4af796c47", -"TT_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6abb97c5b7d3488b7d30018bf970507ada2f597b6b9b62ee0d9beb5d422e254c", -"TT_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "2d6f85827d80251c7759b5ab75ca65640d415d40877ea5d64a677190b8715f69", -"TT_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "fb46ca21976ae67dfbe73f5057ff0304bda4f4000c341fcc8bf856d23c2d177f", -"TT_bitcoin-test_verifymessage.py::test_message_grs": "0117f15331639fd915916dc9fc33df1e5fb6ff419d7835c4fbfa63f0f448d5c6", -"TT_bitcoin-test_verifymessage.py::test_message_long": "fe2bb23c5a4f45d8abfaa91872c6a5615f03e6352d8700ca8b9c9cb4825b47ec", -"TT_bitcoin-test_verifymessage.py::test_message_testnet": "888422306be9265dbff77da9f74faef242c77304f3dc29b874a7e382497f7799", -"TT_bitcoin-test_verifymessage.py::test_message_verify": "0482e74cc56113072a40fe0fc9c77266f824e5bbd40f5e0456ea2e8c05045c89", -"TT_bitcoin-test_verifymessage.py::test_message_verify_bcash": "cf22932a05a0db1f4113bfa793d507009d90a48a8deda2b057b35a8bab2e56c3", -"TT_bitcoin-test_verifymessage.py::test_verify_bitcoind": "3e2a3c1a7b7be9a3cce9cf94d10361bc12bef0c63b1ff8e9d08202d8e876dceb", -"TT_bitcoin-test_verifymessage.py::test_verify_utf": "ae1867d920f8e18e277e03794d0566bcf1255f55ecbd8ef02bd7cbf8f14e1239", -"TT_bitcoin-test_verifymessage_segwit.py::test_message_long": "6960accf077f4a754bd318b210a10b7d00a5f9406bddca832ba9e2c91f98e7ab", -"TT_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "b1f9f1864b9f327518c1ba3a1770072bea7d40c5bde442202206e2fce52171e2", -"TT_bitcoin-test_verifymessage_segwit.py::test_message_verify": "e600dd4ab19d4c55169cfbe73998fd3294a1fab45a1323289478b6a17b7f152c", -"TT_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "ad1e3b8a0d1738020f002bb24824b529fa8ccdcf52cfcea354fbfc9c88b9961f", -"TT_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "f37fb86060db61d5d356d0cb2d4e2ea5e39172b6f314a63fc3d4f530f5c99beb", -"TT_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "93bf717a8b4d4371af323d07f0f4538539a5199f8c811d402445a4f08789abef", -"TT_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ead03a1ab9def68c0c41471fc02f346d6dee943c9479bfe24d88a22e897bee63", -"TT_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "0a7562efc888c57ced1fbcdbea8255bf604ef167098969b313e9a5531203670a", -"TT_bitcoin-test_zcash.py::test_external_presigned": "58ca129cf30e1cfb9a4b393967b859094cf7b7a3095bb1962f9199b52fac8245", -"TT_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5b0b0f76aa1fb8eace9848f3dc9fe6e3e4730a85de184192fec9dce364bbec36", -"TT_bitcoin-test_zcash.py::test_spend_old_versions": "921df31d90290b36c1c650451c4979a85637bbe3e2e918d09d826e63db9eb597", -"TT_bitcoin-test_zcash.py::test_v3_not_supported": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_bitcoin-test_zcash.py::test_version_group_id_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a793235b055146b364dab3842f1364f1d73a0622fbb6f2688463b1eeb46155c7", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "b7325f5034455301c16ed0ee5799bbc26669eff127139198c4199bb94968a385", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "28383f6ff4094be8d3ce786556bd40fc97c3ad0b4c5879328824084ab4317b86", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8deed6efec61f0237dcc1e5048492e01d55c7bd833f2c70e4e8fed46e836ad61", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8ed36af60e84e1e43cf6d4e5c3fd3fff0125005ecb86f4a78e240f7837e777ea", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "92b06620086f0cb3b61937db9c942d5eee357efa3fbbd2f86781732f2f692f89", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "e02e6bcb1f9f6ea287ea5282600f622d52522aa463b48cdbb4ca107201e33d2d", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "115d5b4e020583299b990d80068cf91c7cb3a66a9911d75ea1b6edff41e18a46", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "5eebe2c33a6cd56cd926da5a8b525d862997df17846ac49ff137947a5034ef83", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f7d576e9ee746008a36d2a19ec7832cb2d107193e77303e5865ad4e811ee52ef", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "23670f641c3901310bfb3624875ed6188b04376169062062ad580108e4d85052", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "5c193e247cda7df8cf60fc1b9a132bbe4f75145023aea5c48fa0318b84f3f5c6", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b3f09e86d3eae98f8aa2800a78171e19a3edd0f49aeca1dfdc9aa6a5e08fdf5d", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "5e926670cd17c32366a14ce859c41a8d7b803991b7680ea2ce2f2aa480a17821", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "a51ca1c7df82ca4094847a4d1ce3a7fb675bd52e105e07d2f494631d5c6ca11c", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "530b5b42f2d947a67c7439b9af31393ab42e70b73ce7334dd35b0d4f7fc6680c", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "90dc52fee3fda8a08ca0b5ec6927c56bfaec144474df3c3184acf9f327d4aea7", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "894a23c78b4f72dd299f07e7fbb21d1fa3669ac5921acc2267eb6f40c8321b96", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "86a2724d90a4b32bda758216b1fb9b1b609df37d32031af08e91bfb3be40d61d", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8ad632a79decdd304a270a9d0275ab43433afc24f08415c0e2c6570230af2a88", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f68ecca4dc2ed146c83220e67db6bdf2d684c54c73a243da05fdd1efedcafedb", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b841eff7ee1d641a7796cf1e99dd260f0c176343ef0bd8c7bf697769430e0d51", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "6176161d5744d832e208199e964b6452bc37d782654ba55d361ffeb4f0fb2dbe", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "edb0279a09e1c36eda30a3d48f0de6f547bc6213fa588fded78c03c7b1cb5630", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "432be76a7cedfbd3ac00de037cc9074332105770318c7b399749c7551b0b24ea", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "5438e6f171f6a376e8832f50fdddb5b9f584e55018b85fcee8dea962b152ca1e", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "79c1a4892f1f5c60274e3622a58b0479a678c3104d3677d4251c56056629db12", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "911f9906068aba634eaed98136bb4e98c4a7b1bf3aa4fe1390a872f1547edbb8", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "e429457e523144e8ea90645bf6dec8ee105e02d18eee3c4ba414c311e1ea9c5b", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "42dfa0cac9ac525a24d7a1770f66d1790352b1900d614a50faa24fc7a07d9f9a", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "92a896d7018181dadd4c49d4d01639d8fb454403066afff75355d59888c07b02", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "aa7b2e537a9c7b9510f8298543161407ef4596088fc9c67c57f9a014b97c000a", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "4ea97f8df29eb686bd4a2ac101aa6ccdf4f124ab1e2dc8b913b36e56a7950d43", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "a3259e596d5f8c4ca8e9ba4de2f14fe30d269a4c3d011778b84f73ae4a4c80f0", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7fabc235b262cbb2fa45e42aeb900bbc1cdd8a684d2ad5e08b51fdb147657990", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "c40565fd4fdcf558c29c67b25e2aaf88e1e41c3d35735c344ee09ec672cc1266", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0053e85ac2f8d5659d098f1d878fa7e37d712c79d3bed8a596bb639fdfc720e3", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "37afe319cc51bfd117eb04d350e1d2a174030d0f21723eef23ccec7eeb887bfe", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5a9e1aedd3047e3f741f88549fb2497e2e9216ee326553efd146ae078449a5bd", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4b9aa38bea642c08c31c946baf12ce209b5106a5d8894939def0d899c580a4af", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "5dd80af476ecb417881167555c48b0e267d575ce29f952dba73158861de802b6", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3acdf363fd73843b24bcc482bbffafc0f38eee9a29e1b46a2d101e19851b77bb", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fe53efd4fb003b92c0ec7c73e4f5bdb4e37cda1b42bd86c319328d127e4074ed", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "e8f224fe8adedfeba19c84716af802720cb4df5bb2e346f58b7e9daaefc1a129", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "dca5729b439904a756b21e18660a933446881f9d4fa47b2b579717b9d6a72e52", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "9bcff6602d53b7ab987fa11da5e47a6dd4c1ce458af332acf93e8699709cd3fd", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "151fb9e8eb4eb78c1433de17883440f658661137667733b78ce46027e29f856a", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b75c9f7cd0741200af7dadb268f07cf29bb80d1b6b3ee5d7b640c31b5544f41d", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "d0aa6f83db15be9e81e663daed4ab2d08c7c4f50fe3947a95607ace47e33dfdf", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "0f2826893d63d9044ccade5681fc1c1e1bb132fa18df0536be1809333bdd5eef", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d42e55cc3b2d396128b774a28fdc7e02a9f38497e5df33ba8bc544752e331766", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f538030a0b25cb9b2a555f52d1e63fd66dedfce7eb0544838270f1afe3feb8f5", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "96c6fa4c4dc664ef49a515f2ad2a01639a20d25d28a7d93bea76e1974e171d15", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "1b48eab06b558cd524f5741db98497d0eb9843f3d216f24e73c904b6ccbfc0e0", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cd625eb49e2df164c9118ac74c8de1926c722b72c6139e3c5984f5ccceafcc55", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "321abb9c816c43d6ec44ad22188bb835505c706df4f9f37ea131e82dbe83451c", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1e53c7f2c73c425437435cfc4b02b4240fb1e230a221ecfec39ab09d8f4161c2", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "2849e68d49e69c8244813885f59021cb993c2f2f29110d3f2e129f4610827ae0", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "44acac35409ee4a055229367bfc80d745e4847fdb631edf7621d47d7fde7d34d", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "462b2be9aa31806ba6e30ec00b8542ab263b518c9871aeae10506b6b07a96b98", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "45137352430b89fee0dc777574b3c3c12b807979a00f277bb2e21bff2ad1c8bb", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c8a2b7c44515e1faaa8269ac4c60f1f6c3d22827b924fbd564fba3c8b63b0db8", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "487484df2758c739067062dc2b9e3080a5e04f8aa5c68ae9277060dccd1eec36", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "7937e85284cd08917b7db06c4feea5da46f923907a6240a86362031547841b43", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "faee9b0ccb1ee2b76b8fad5e4da9d6d3d8a6476128a0df91d0d47f5dcef89320", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "0644211c8a04a5ef6bea4867fa7f4d008786bcadbd4a22a2a32a8203ded4053c", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "e03d2e13242ccb5964145a256cff5f0d8ecb902ac8f040b6d5dae575be18d262", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "691b3ccd065e0ed3fb665ddb6e1a6cffe67d7fe74c859f677819efd8030fea60", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "dff434abdc2e025c5de3a4bdd0a8614f58c27d3778e6062e951244c9d4c5f2d0", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "97e8a0674c484269b3755a87380859a3d0cebefb95c4678be5acd7e4b6373795", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "0d572466e8578b2bd6152e3b20ce33aa9ba69abd7da0e1ccb522108484ca53e4", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "361e677305d13f75bf0a71155f8f384cc7a85a53d27d92b662671354deba1756", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "a954b7609d2c5a898ad54f1a15c2d7f190d4e2fb5eb828a1d7a2ac107b87f10d", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "abd332668db3bf105d3a8e55fa1ccf90b4f1acb62e5d1c2860f7ee2599b80534", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2994c65408ded3a3a389cb1d3fb7fffd72f6e24aab6b26f6eba08315c09e9444", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "288e4e13bb3a3a7948e925dcbad8c61cc7245c52409818bd2178b49f0c230c23", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "614cc13a64f35ac3247b83440cdea22a18257afef165fc54d41917500cdd409f", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "1c4bf364e403371d1b4570a6d7a2b8f9ac231851cbf67f56f64fe350e0edadd1", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "a9958771b2394aa3d6488f5d28d0516fb2632997be4ef3cfe272d8468b475e70", -"TT_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8281c20dcf6ccadd0e0a0db53adb4641706dbcb48bf685762173f5645abfa39b", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5dafbc14364b371d938a5dbf2dd1696958dd68fd2f10702dd512f5bd7df02602", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a882c9e5ffbaca9ec0e7f0fcc275270268fa9ef3c9ed135e543ce39af912cbe5", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "d3c1b530540a57f50020e62cd9acfe8c2d64d8c1ecad74226e9419876ae73f16", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "262022e068ac3dcbba07b3451e9b670187bce739b85cd87835b18c544ab66b10", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "dd731124e63c9856d1b3ca05f5b11d922b33bd82db7535f7fa8b135213f648cb", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "969a01934c3f20e57c1ef3bcccf14499c15621489b67f8e9831dd7365ae3c130", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1b397226957de70e91fe48344b86beed80d3c21fc5bd2b6c2b38c1ec6d6a35f3", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "99898cc1734fd63bf4d7906f30087e77138857371109b4c58fcb0aa8d312476f", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "bd9d8a62ed8e4bb8dfe479f6c14d026b41a8b5f8d9a65c21784306dc208f4cdf", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "93a3099eba0179a1ac48e751a7140dedf77cfc572fcc90e8fa6c9f110ceb2b8c", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "027943246f0638357411b1195bd35a2f0d9a976449a7efd3d8dbf26b8205410e", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "6173e8a3a2165a0f54bc124bc505a7ce9aeefecb07cb0803fa22c7d9e2487d0a", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "dde7f3743ec2e9bd7d441b2f6970ccda38c47242fd64440126ded6f61825f756", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "eab03e524c6cfe6f04d0dcf1a7010faef85d62720f9d8722e6e137e7f05abc33", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "9859e1419d1a4aa46be81171ec835e137184d834d5f57ef37e918061b485ca8e", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e48073cb63f1bcac2d7e5f8dcf59e3dc65edce7205eb0f410f70133d28779130", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "0942bab8dc494e8527d4ddfb9411e43c43d5960feb16018cb45c5ee2c6f57770", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "eb01dea0983af584be8ebedacc140c9e5d295204c7f43f604122abae3ffe8f82", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "4ec3428cbcc79e37db158ec1769f751044b5d3936bd057215c2076ddc2487e21", -"TT_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5598cb3d539a85ee72edbfb70583b43b236e4638662de28bfb642bdd93a6fe59", -"TT_cardano-test_derivations.py::test_bad_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_cardano-test_derivations.py::test_ledger_available_always": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "bd5251d6b4525252b16983691a028174d6c083b2c062bb076d6e2f242e470812", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "211a2ca1fc8feadf49d0212d66c4017a12f6860e479cc9da494d3a2db9ee4a40", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4e93343b9e86999504bb3b8e423c5620eb53c86a9fc82f47af142e18d70a457e", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "a175d8c11f1e81eeafe332387e79b3f4bb056e4b1243daa734ea2e9a484a449e", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "aa80e685410e23559d8273af3e08e53c499326759206e52fa45556b02f4abeaa", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e754f01cc31ef7efb83621473556fc0a2d81743594ef62cdfadb2e8233c12ca7", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "3c6c11eeddec4f0438c5180ce4cdcbf69ef1cf04470e5f0dd38a53e17fd68203", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "81005c114bdbe998054d6e94b60bad71d98e7d38715f07a38fb64ce0719bd9b7", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "d4cb9b8254b7f5d42b6440d6c1d8c7ab4802850c0e3d906b4489302da43e9981", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "714fa46f0617fc163cb8b7fd2f947f3db9e2e7f43202e77a39eaf612eb3b057d", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "48a066f73096f96a685337d3942ada9493abe686f5bf70a2a224a999ba5dab3c", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "c3af0c697cfff8e404e6671e5f77f3b556386fbacd25eab158d866c21c6148f6", -"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9343101c53fe8b7360ecd5a102b3e507aabf29f37eeb253df3c88f6deecacb7b", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "8b67edca40129904893563b0c85d2c86398a078cb740a3ca6e23d6489afc1813", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3e13929eb81c8077e946779e4ab3b1d3b5a461bf5a4cf3a886d6ac0a1d5297d4", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cfc2ff70d16e4b00becc081367494ef3ea66f2702b318752077ea1002e6aa972", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "b37e039e74b17959b0d2f13d60bac840956b655b93d8395b9dceba54b4e0e504", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "7572d0edd262f438a53b71eb79f311c0219cc472613492fbc72797d879f5c1be", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d9c57a802003857f97ffb5eae4a42f93d745c6d574dcad17ef5408bde9d54b36", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "960cfc6d88ed3325ec564aa9365fb20f489ad0da15acfa2d9567860e798acbbc", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0d1f0bcc4aa3fb97b6b2cf9748a0129fc2e45c234243da40b5fc19c34f093ea0", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "31541c99c75d9ba3cc057dac8649890544313ee4dfa8040187238ca3383dfd62", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "cf660c71ddea5035946153c57114466d6ff0ae5d4e0af7d14516f9c26f61b517", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "cf660c71ddea5035946153c57114466d6ff0ae5d4e0af7d14516f9c26f61b517", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2395691691124886700515d814ac9839732a849cf5d96b8db9acb196c5289d6e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "f73a3e9d253d92d0be75e8d9670f57cb6306abb2b89d5cdf043adb7e1b4889f2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "b930f013a193eca96f7692223256eb858c060e6b15029df322c7d8d9b6c02422", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "fa3cb8592caa01cd3f4121dd8a1870f0fbfb2280ef5bd30224bbcff6e98473cf", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "fed09cf963c18cf146e4b76e45a76ab8517e92bbe937f6eba6faefddd45169d1", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "46ca1f5850ea62e465758494f42d2970607ab9c34e36fece093d50f901c9bd69", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "9269b9465b1581f0629cd8b317ccf57b69b9607a926f01d982d6f6947f59fa90", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a6ef1c68694d404faae26fd10c501debf48d56df64449ebbcb4dd43a5826a210", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "3c045328c328729ae658fe885d9aa49bf39af763febeb0e7826e8cd18cb4b5e0", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "fed09cf963c18cf146e4b76e45a76ab8517e92bbe937f6eba6faefddd45169d1", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "46ca1f5850ea62e465758494f42d2970607ab9c34e36fece093d50f901c9bd69", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "585cd801813486920555fdad9184439b3b9802f8eac82f7d95354f6a34fd6969", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "48436be0688c36b7a7b372339eed6eedd367b42b2429c2410d7dd85b28072323", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "5a20fc3692a0f398948ac869026d8ae313577495ad804ab3bd09638e0b5974b8", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "a4ec018180fb251666cca02e2525d98e97fc510313e2aa44baa13fdf373f33bb", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "97c3bdfe30e901bd5b4938e4dc19ebfb788ef2b4166fd77aab99d1af1e6d102f", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "6497a875d1d188bcbf0293e303c9cea13d26f88b12cd1422239b99aa0f2ed3ed", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "31ab7ddf5da2bdd7da4f20c39ae566f0fffd3e84cfa7dbdbe7ae2916482809fc", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "a1389ced8400ae5464f921d39bd388ee855de605343c71235097dd0731820db7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "42eed639788adda40cb3b5134b97f02974db0fdc27b87a686d7855b5feaa80fc", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d3bab830b543745d67656d0913f62f073e315293dffe54382024e4c9fda96b71", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "641709e3e10fa91ce21803ba5a52cfc434cdd3578bcd962164bcb99d3a43d6da", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "178e9ba04a5ccbce4326a33bd11fe80b2c8d9e2d16287829a8c48ef8570def7e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "dbc002eddbb6d4a5f71eb0ca8da65903837b2da73201ec1714e3124ed2c3e064", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dcc12f084e836ace643b6f503e60b003c88c419d27f483a11737a9e9c6250d17", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "8c7a81bc9e9e95cd987b6e61036c95f64818b7c1f77c684aabf78297ca2a5ee0", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2c4a8063b68f4d1c6b1b39f16cb39c9adc7f0b2176d39ed4e56c12b7129c21eb", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "5c53c3396091ddf0f8a716f471e6c2740c1385a0a04085163299c1ceeeb89092", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a4114ed4ac01babea79a34adfbcc0a74b85f4b713af6ee8cff6cc8397c57e59e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "b69e40793e7ee2df7db1cede931da022fcf9aac5dc71774732c542745ed86450", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "38bc1a59a58e5d66e4fcfd0ec815765445ece013a158997778042417dcf236e7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "94178bb10492c182aa49e0f3c9defa06da9a4a9029bfc500438d2505a2ff29d8", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "3dcc07313a80489e31e0615944cc196d0fcc8970578476b562b91c367e282b09", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "7f0b5327a83fa2f80c83beb131182000c2d20bbc18a563ea2e2bb4783f583119", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "6ec6c8869de3eb9cd36e821a4b8509331ac4b4f49263b2cb5d99730682ed713e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "f79ab687372b56b3a554af84ae69fdd56c4835cbdba79793b80e54a16de27798", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "b588d1972aba821545fcf4b60c308fe945fa907f087e2db280433b0419156b22", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "231ea4e3ead93f6785985688a996772e6d9d73e008b16ad08aa2e077ef59af52", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "b775180796400c7e96abc5c8d07a937adc0b1506e21154fa8a6d2a1288df30e2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "742d2ec5dd248038f744bc22a63246b06e810e88490d162dc8afb2c3a17a518b", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "27eb9884ece8027dc01e64b3367c5ae79021ff0b05277d772869ea1607a7f111", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "10f5a3304c468fe5eca232d508e427023d9276ff5f8576c1c5df5e263599bd20", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "f722a2a9d9a92911063f262e8122896ef129b15b6e3e7bfbd7d1773eaeaf5890", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1df3cf734d6342f74cde5b48d78e3a260be7dafd895c57cdf88154c9b6899d33", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "eb632b495afa606d4eb03d0cd449859a659c5d40ad8f6ada7b33fd59ef163708", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4312df9c0b61cbf8e29efae866efdb58df2a339adeffde75ea72e01259a4b4bb", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "137fff528553be9c8c12b08865441f954d7423b96b5fe5b5850cf3fbb86e2aa8", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "28ed27584c289daba9ebcb0b5cfa37434fa7482877b87dd5b17e971bb0c22db5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "399d21207fd15392b2b1fb698eb1ca23330e14cc400910e8169780dbcec22b67", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fdc2b395cbaf01587842304f4554246eb8cf6f39cb3960d34c8aec9a382f5328", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d7ff337c6fd0c7cba6f1d9f66fed32eba55bd4416178b14ba14de11352b9e3e7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "326faa34ad4e0e092a8a446d3603b06963852e0c3baefa7fdd20d3a1c78fa1aa", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c83aa4ac945a5e425d585a041594324c8b11d28d34a86dc51d9a77ce9a35a51", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "bd44276fddeaf4511fb7241a65fad11012088c168d26ebe314fc1e0c204edf1a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dde4b7c2ea73199f674943b01e3cc9e1acec55f7a9ca28ab8c859ca91640a772", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "b182539ac4d8a70556e2eb004723bc07d8ed218e7239a6e45f482e65b8b8a426", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "8d45248ed4f81d0e42054e39041a1fcc00863a006144147c9b0d9842476ce7c3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0f0095ba797fc8998b0d45ae32d88feecdbef4b99041e9f68ec85c0a172fdaf9", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "0dc14651ad672280f3dcacb5a406444e5e1c706568fd390a54fd81f25e081197", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f5d2d5e4b29e094268b485cfc59d6faecbf09b72bc2252e14325d7e4a53beda6", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "08872494c7b3422048efd15aa0fb136fbc9742a3229b5d129a023add1bc0751c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "8433673d18ec3f32bdafa4df6e8936a03831354ee91b597cbabf0cecbb7eab91", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "abb29879f4bfc730eb3c1273082f5b9abe106f9eae3b3d3e363a0061410a24cb", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "d6b60d525662db4f50820dd2aadbf1751d74640262ea5d36c59f7a291b64ec14", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "da0e65e13123933d146e70d198b5514b6222ac170939d4fbbbba84a06f5256b5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "64e61dae2757cf9f237493e454ae527c77a0a108a1fe9d92cdcc561367a7be06", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "db6f5d282c4eefb95b236cd1a08cb59c94167d9604337982ea5a97a306b9502a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8595d86f024902af417cf61d79752361f991e83dcaa06653ccc3e3a5bfe1b03e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d408b986aa66f53990851d09d2c1db4ca8714640301c35aa8d96c3552f956d41", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "83f4c429914599c039dc8cc49ec9810670868a585fc968de9dfb1efb5c5927cf", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "04ae909cb1220b008e46f25b0f3131dd27ee97defab647744f412ac6e1c4d3c4", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d408b986aa66f53990851d09d2c1db4ca8714640301c35aa8d96c3552f956d41", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "1fddb61e3c3a7fc0bd764b534a9d836a1d71256ba213138ca7e71f59f59e2519", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "210426af15bf66882c21b523bea7522d93f06f0a67bdd9ed59067edaa1aa07a5", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "11b2bd7e0bff71be8c9c271770b59cd6b8c02d0b0500b58ebd8e61ca44768491", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "66c962ebc60a9d2bfb0a20defbcac98c2ebbb181628105fb89661578ac6479a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "086ceaf6c97354ed2de94ffeedce7a51c86dac8b6351228f692d6c59368ab0d8", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "96581a719cc8a8ec7d1299fc48138ace97f740645973ba08294439a354858f73", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "a8dc52d68ddc7b418dd86cbaddbea42a45bf722e25fe477e24660123af8eef94", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "759fe8fda91115b4f75f56e4f95cc52f58ce099de2ba466874e23a6c35ff3c6a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "945ab62e3008545dbb6d6ea38595fc693844001d093c78dd969a7b5e1b67f1f3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c93d56711bea6a2317d8e14d4f93a9b0941593c87225bda96b8524488ce4b6bb", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1e62b11c3eb59c4af8e7c66e6481a956b186a32e1ea6f20ab679f5abbae98684", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "dec3fdd0efb3f3e163134a1043b5357fe686ebb9013ba4b9c14be1dd9164d434", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "57812101e7daec78830827aafba09a9b7a6f6180cdfbc63448e46254ba896c2f", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "da2d8ed785581989ef058ad4b6f0e71d299e4cb5937a163c04625d3aca8fdcb8", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "a0725ff6de673047101040698cd855af16c8a8fa68f9a67c50dd23452d89f48a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "70df086d9d557fc7ad5fcf230e0232524a9c1c32c33d483722f2b1c7b1ced25f", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "468690086dda091c024e7bac1c6bad638b4dc9c7c90aa2e89bcc3d1910167b1c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "be409a32f2a558fae9dae332264053166f0d3916ebfdbaecf80cc820c90a6a0c", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "ad549b55dc4a084a1804eef07da55838b1ea51b37651d4a14c36dac63f7b81ad", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "c129b2eaf86090db7b9f69f4f7cbe5e2894879bdd476f97ecccfb4cbdcbb1174", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "333453ec30e9813548597d8d7e72a1b9ba8dc05e621ab45d06bf49f7ab344688", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "89f2f6e3d5d80799bfedf16eb153f67fd74530434e6b8d1ad2b243b030d1c274", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "d0b79fbb34282a310d7de6c4547e8ea1f7f7d81b594c2d3e594ca763f758914d", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "d644bd53a4c9e966414463acb86d64b10cd2e18d472c8ac1bbc397c49a32ed1e", -"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "b23d100a356038d67e4daf39f1e01207d66103a6329c9f659db91d4002937f8b", +"TT_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "94b3dafc1a792afd170a06c9c0dff8f7f7ea872c1100649f780c675c730db3f7", +"TT_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "a249459d44c96052309f9f11c5e9ef76909bf4a03bb978dcd6c9d7f9a8ec14d8", +"TT_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "7a04aa40252c26d882600580151a4b7592a97713ccb6830d9635018820a667d1", +"TT_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "3d11a1b743fa800df4d8580a151ed1e6c3d3d2bab6dad0eff2be06b91b381bba", +"TT_cs_binance-test_get_public_key.py::test_binance_get_public_key": "bb8cb7a18c6e284a5f29d8b46a3a8c8c253b5b01a74f55f329d876c363c799da", +"TT_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "f1546713363a17fa2c36da2e4643c945e20bc74a29e086336bc2dbd67e60e288", +"TT_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "1385cbeefc16f66fde62959b95a88d49fa1b02ec9a414ff1e8b3f7a5bf6228aa", +"TT_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "978b9746e0b051b88598c0be8433f5c559d51fab9457b5416ef4e2b48492bcec", +"TT_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "f1546713363a17fa2c36da2e4643c945e20bc74a29e086336bc2dbd67e60e288", +"TT_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "1385cbeefc16f66fde62959b95a88d49fa1b02ec9a414ff1e8b3f7a5bf6228aa", +"TT_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "978b9746e0b051b88598c0be8433f5c559d51fab9457b5416ef4e2b48492bcec", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "97296659999773e56901e2feb5135341bc5c1260c3f212e2a68f83a0cdbef781", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "1fd44ee1b04c7416f609bd9d0284c5c6f52aba7fc7f187a3224dd012cf911217", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "96baf5a34d875a72572a2f72f9d43661c77bdcf04da680583ed39c04e27b3f4d", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "01dd3bfd607245680c663ecbb19819b12b60c4c1254907ef3d0b1d8a701f8b19", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "eef34053c5421db0dea6a9802a64343a5c1337befc4b3d575cdfcd42ae059b72", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "eef34053c5421db0dea6a9802a64343a5c1337befc4b3d575cdfcd42ae059b72", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "7d870891766b84cecb44dc4815d6bb64d07b01d126cdfee43e0d0503410c2b20", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "806ba7be1c541f38a00f7bc71f18b334d4eff462a2f93a8f2f7ebfce0cba1f60", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "1897f08fb161099752400f5d9309678462f7f905f363e0fd227aa4d52ba92ab9", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "542fafa28a8ce04e3e9129cbea4a27691edb624365516c924e7abfbcd0274d76", +"TT_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "542fafa28a8ce04e3e9129cbea4a27691edb624365516c924e7abfbcd0274d76", +"TT_cs_bitcoin-test_bcash.py::test_attack_change_input": "baa0c9cd102dc55075f385daaff50c2b54266092ee7b4c80b37de2e3ea5e6678", +"TT_cs_bitcoin-test_bcash.py::test_send_bch_change": "baa0c9cd102dc55075f385daaff50c2b54266092ee7b4c80b37de2e3ea5e6678", +"TT_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "36e2ca1dbf7954b06ba8dda7374b24d6179cbf87308191b2877f878b9297b4db", +"TT_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "d0a19e96fba27a462c0250252a0111f138d73a35fe612b4da88c6259d4747a6b", +"TT_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "742b39d8e34a4aee34611276d869137b8660ec66c7005bdd4a4f1bea2c65d3fd", +"TT_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "2957be46da08eba274ed97571dbe2e2e96d61b9e6879db4c74aa6cf9a2d7d9bf", +"TT_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "77e8d547fa4eae8346e8c1f01c0676c10b088b16e3656f51bb0b7f8cdb8d1c77", +"TT_cs_bitcoin-test_bgold.py::test_attack_change_input": "7794f0575c74bbbf3745e0d8988a55e10b83a29c459876a17190def1f0d1126e", +"TT_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "7794f0575c74bbbf3745e0d8988a55e10b83a29c459876a17190def1f0d1126e", +"TT_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "830659cd0fa78a3b9870c961e6be3538c0fd81f8f5fbda5a867a9343f98753d3", +"TT_cs_bitcoin-test_bgold.py::test_send_btg_external_presigned": "5b0f4723935bcfbe604afa98bbf898b3c7bb47a7b0c0cb7c0fa63c6643407b84", +"TT_cs_bitcoin-test_bgold.py::test_send_btg_multisig_change": "2721a1be6f51c902d27b284857ea8f33a856062e361fd9f3f1b751756e836059", +"TT_cs_bitcoin-test_bgold.py::test_send_mixed_inputs": "53ff469c42f630b9aa3e1e528624a5626e05344c820091ad70ff245ac282509f", +"TT_cs_bitcoin-test_bgold.py::test_send_multisig_1": "6f165844ab4ce02d3c9f70cd9ac36a7567c3a2069ee0023e777420da65cab46a", +"TT_cs_bitcoin-test_bgold.py::test_send_p2sh": "9e5bad4440532e1668855b164171c05575b3418bf5742f81af7cb66a5a6552d4", +"TT_cs_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "44e781dd797d979f727bf8284f96868fbf4d3a6472dbffac4d7eb0595cfccbb9", +"TT_cs_bitcoin-test_dash.py::test_send_dash": "8c508d2eeb9c6d3bead093364112597b34759919c33d1a2ace790c8df93d311a", +"TT_cs_bitcoin-test_dash.py::test_send_dash_dip2_input": "cad6b53d9bc9bc6abbc5b00d8244776854e9d5029ad7e2b09c7ac57f81fbfedb", +"TT_cs_bitcoin-test_decred.py::test_decred_multisig_change": "ee368951edb7583918f852860f483203c14bfa5972b7bd39177668fad10bd3bc", +"TT_cs_bitcoin-test_decred.py::test_purchase_ticket_decred": "b57db07458914b8f470f84db069ea87d3608663a69a674efb7cb3e8270eaeb30", +"TT_cs_bitcoin-test_decred.py::test_send_decred": "bee32ce733bc8529e29d115bbb9f8204a1c9486e8ef5c2d48dadca43f01fa4e4", +"TT_cs_bitcoin-test_decred.py::test_send_decred_change": "e159e4e4c51d299ad6af2241155b916adb63cc983bf61cb0904b166757f6a7a0", +"TT_cs_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "0fe3f3b4d582c94ddf80aed8b93fa3c50aff4f8c0880ce6ff8f421ab4ac7fe5f", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "bf764e09c9071f00a2fda45b7b93a666037c7c42d766b82ba3faa5bf7bce3e6c", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "c836088e6ce667a341fb8983249691f6e8bdeb2b5d64c8cec91f972006188e06", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "8f51b133e544af17777d987fc16b5051f69e7b5d36b143918b78bd0746138fdf", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "b2f14742cddb5f5648a6f1d1e94be66eaaa2a530446471d99ad1a1ea5fdf7a87", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "9bd2a85371ebda97306574edf28a0d03409d2d34d7f16d544cb955adcc577e9e", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d2b34224c26e485c7785a6a79626fc588d219eda1916723a2395b01fd24ae056", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "75698f48537f7dd579fb0848ab82844da9a0beb1809e6be4d1b045346d5efdc9", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "a1b9a81ee09d14d910d18eedf37e7fc37ebd6eaf6b611cf15fb47acd1a72792e", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "192af8a07832cb1bef3cca297fdfb60ea73439f30da80382279106119d4b3d06", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "33b51ee86f4963a4f98d8c88249347197d3c32ec07e295b5d110d2b26e8301b2", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "1cf9b8e7b27d45dc94033560cf25f06454e0c92d0b848218fae16de5efac23aa", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9f23418b2fa11e237d7fef4fb5179f5f91ac6ad7761ec15c7e0f08f710072d96", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "3be9ac82343d3a19981a90823bf6a50efd04b4f81d6a933379ec37a3422d46b8", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "b543cdca17b0f686e93fcab206a15f327e7fc8ad084401a174c36acedbf61a9a", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a7b38083d2a1168fd81a6ddd29a96f0856fcea8a00a05a9acb2015d674efc1a9", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "1c691aa32d8b9609b9e66219666afed0d8b665eb05da80061ae34374ead0f10c", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "ef06f3c827e57115d202b6007c8271c88ab253ef0c29366cce55c6a3ff7ba83d", +"TT_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "8e2f37cb2023453e8a62459d18283953e7d49a3ae12fb8835aed8f3a8f13eee1", +"TT_cs_bitcoin-test_firo.py::test_spend_lelantus": "5e95f55b5ef66461e15cfdc9ceb50d42662a3115ab7bf97ff921db33dbe9b48d", +"TT_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "e03a38a20a6e528be6850f2abe3f64f5e54e67eaf8e6507db0417255f9615681", +"TT_cs_bitcoin-test_getaddress.py::test_address_mac": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_bch": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_bch_multisig": "845a9ef58ef9a2c356aeb66d30aa1590e960b3ebf3f9b1626a34a9c60d9fd65c", +"TT_cs_bitcoin-test_getaddress.py::test_btc": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_crw": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_elements": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_grs": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_invalid_path": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_ltc": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_multisig": "ea38c2fffbb3baf0340d16fa62e24f69d91829118408061a0f45eabb4834616b", +"TT_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "0daac45acb52dbe391f432298a51ab492fc10887fbcc97b3c351a0eb1a98a230", +"TT_cs_bitcoin-test_getaddress.py::test_public_ckd": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_tbtc": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_tgrs": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress.py::test_unknown_path": "74514113f1cc0d61fd8c73f012ac21bb46bbfc2c5563e82c246cde8ebfdc826a", +"TT_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "6bba4402694fd611035afbb52947df2cbe1d6e87e54da5a1876cf3a3051df486", +"TT_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "25efd7d65c09a6dbc7d15e9e83011ce6e1a21f3d30c36914c64e27f0dab01d10", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "357389fde607dcfec125859889b5eef1a5bd37756efdeffc7760252ddc885d6b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "00ed9b5ef4f4f80ac4acda9616c70535684b9d6f1cb4ee6624da4815bc059998", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "39eb7d11d01a3cc7fa1ff3eee24012817d9cdd6de6ca594793b1e10dd6a2a8b3", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "fc9a6f8409265e3276d567ea50f49742393d23cdb382fb8e38a73bab1f083139", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "e6cf0a9733f6c530b7200400ade16192a5a7f07902503df88501183d8d7dcda9", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "22da28991a005d2d81889e0c1450477c537487837fc1e0f194717c86a720305f", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "c22fe365a120e00596cd9263c33f37aea13860ef500ff941dc99403360a389cd", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "143b596f5b0e44349cf415957172de92108a33ed576f7bf040a71bfc7c775e3e", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "ff3a03ef6f8be62a1191f2722ef24567f636bbf061acbd70b174c4291d532901", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "b8ab6938e42b50abb3b6c3eedc035f357aaab68ba62cc6dea57128ea05ae1e91", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "f6d20372224dbcb9f88d6709d06826e28bb905f6deda78db08117c07f6f1d25c", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "31dab8fc45d57ef459595e15bcf503180bfa463977e7700995ca3bb52b650e83", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "577853879e8b78d8651043d123a9f16680dacaa2a4998c2d608c1f5e5eac6f7f", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "97a69318ef1262ddef0ac30dd07eb60783a96f4456f8f5d7415f18528b38f57f", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "5d5848c4938610a87a92ee3706ab7742ca97981e2fb400eb8cfe888383744725", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "73af06e78baddf206780e97e6496beb390b6748d9036e964a088b26db1a111b5", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "afcf9b3796e1b4381ed89ec9775ec46c8f0628e4182a58011ea63bda6daa2bae", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "a5aa1d7429584c42b98dea9e9275888ac944e1f929210a6ed2f2f015b0acb7dd", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "1f757411c379e4fdc0fe17fb5721a1989381d0d7baa5c4bfd487dba79087daf5", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "0d9bc0e9af4908939f133822c4e284d816ac58e36f9c16cfc16a2a6a0dff8963", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "0cfbdaccb8765eceae288b14fdf310bb6e9a2fae72c980cb4630905d00d87df5", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "35c6077a17103ed0db8b43bfb2c9be3917a7395a6ae0649d960c155b5b27cb7a", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "35c6077a17103ed0db8b43bfb2c9be3917a7395a6ae0649d960c155b5b27cb7a", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "f1b44ec45698fd6fab05c606379cf706f2b97646bb15ba8a78b005ccca7d8aa8", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "ec3000fe40ca0c90652eb6c3af63f8733fbff532319bbdbe3a5ac5240a05e853", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "4cef5817f2a07529573971a6b78201c17980ea1012dd5515a5c3f37fba773c9c", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "57b1af5ff6af867f591b15db5c6f0a6fd1a146276e58f32d9b09fd2691852f3b", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "4b29df6f964b647c519e9186be92b6c5c5a26a24cc4a1e2e57165734328db28e", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "330ba850e4237cb2d0e045d33f5c2b1f5312f60e083fda924cff68d19b4f864d", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ac990590047f63e3120cfa386b3851fc17ca9d5ba396864d752d394dda3273e1", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "89a888a0f4719a88ab124d471d5d2caaf74366e2c1186733a78a200ccd6bf72e", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "4b009ebff07bb75fb981805891b4bc225463c7f242ef4149078c474b9b6ce948", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "70c455c515e06ee6c5e849cae93501e4d9df60a0d9c20f030a3c3be21c35d84e", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "e3832d9a6ab6028d3bbaa194dd63a009863af39fe8f06376ab859b370ca6d2dd", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "76ff19c4c14ba55a2473c7631aecc6ef17a3d434f42f082104b55d760059471f", +"TT_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "a7f95f937d9af175a3ee7ee73779a8a2fc387a39772cc60116e8a81ac081221d", +"TT_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "8ad9a4f74ea204a38592349225f070bb6ed0db3b09b2d08a6a88a5398084e02a", +"TT_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "c836088e6ce667a341fb8983249691f6e8bdeb2b5d64c8cec91f972006188e06", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "6aff67c46055ba381c53552c5d56263c1a97d38a1d8de79816d1eff6fa75e859", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ca9a66e1e3527e417310d0200f5898cae59861ea273e1371186c64f60b899858", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "a1f681e95210e8daab947a6b9fa93459b89e3da51f3c2b51342c28da875d5242", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "7a3a55048aad7f6d25fede53f5067a8274e978898e08a51c7bc33b5f334fd3f1", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "d080567aab1b68f6617cf5edf1aebf4d5cb492f691e0a5c361d722decc3bfdce", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "4a3733d2d2871309d5f36c47ac7a63bd975abc707b4f20793b152af9d58f7b7d", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "af4f58b005a9e39f99e64057d4e9d53b7f78e4645b5961bd3255351930490340", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "3da3294481a292ea053585f6b2a5f8c90cba07b6410968840d28b418fbb99370", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "1cf9b8e7b27d45dc94033560cf25f06454e0c92d0b848218fae16de5efac23aa", +"TT_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "21f2cbb5b5ad3fdae11477193cd3282254e084131178f892a14c4acce761f091", +"TT_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey.py::test_slip25_path": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_grs.py::test_legacy": "6a8e2ba725adf5b4fde22b6654cae1244597e00204accec2ebf5f74771fa5c49", +"TT_cs_bitcoin-test_grs.py::test_legacy_change": "3da3ea5e4c2a29b69559b41f2740ca050d8d2aa176fa7f19c8fdf4a9244d1863", +"TT_cs_bitcoin-test_grs.py::test_send_p2tr": "4838c37995a2bf4136f39a9aadd578247e5676fad0df41d5094167ac1d1be8d7", +"TT_cs_bitcoin-test_grs.py::test_send_segwit_native": "2d43044183754cb3c6f8eb2fea0cb442cfd95fe66b18c064da30282a2d0d0edf", +"TT_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "a56980654a10be5800679e0c36e2d8fb853b6f1840e8becbb8691d986e82151c", +"TT_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "9c3f7e85dc3cd517a64c1b20fcc280650523617d110ff8aefa145c08f5377017", +"TT_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "86bf25e7cb49cea00cbf7aa27087ddc9dcd2af51fb288d8a291cbd73d6f45e31", +"TT_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "cf92a7b18558b8dab318c5dda4bbc5fe8c99ba94d03378e37a70f6a1760aed3f", +"TT_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "cb1c3c57a4179ada379974dedb7a4c0f7f3f1351a5e7726d871f83b677fb34c9", +"TT_cs_bitcoin-test_multisig.py::test_15_of_15": "d1ed477a7d2fc1010976a6ced31c135a6adf14981eedb3d5929921d125b5d2d0", +"TT_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "cb60b1af8e8896cd3158bab3feb92dffd7ea7704c00516d8e5249675b0e30674", +"TT_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "9fed3de524853f89273762367a118bf65be32b12d47f43e81e67be50ea561c40", +"TT_cs_bitcoin-test_multisig.py::test_attack_change_input": "621bb0ed65b3fb9add5ae5f396164ee6ab12981d9355737195c27f7258b56ea1", +"TT_cs_bitcoin-test_multisig.py::test_missing_pubkey": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_multisig_change.py::test_external_external": "3546c2c23023387167f94f454a853ffa87186bcc7eaf49f84a54f0f35efdec11", +"TT_cs_bitcoin-test_multisig_change.py::test_external_internal": "c982279ed478d4970b2119baf508d030e986e2ee6b511b79eb0edea7e7f39383", +"TT_cs_bitcoin-test_multisig_change.py::test_internal_external": "2129970312ab276b671a19e5ddc49ab438aed7cc14431a951d7f5e16a2c0cc77", +"TT_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "b5b2cbdd38c9b1126b9c8a829e9d4120256a3a7257f3672bd76516e1c3a4f9c8", +"TT_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "71bb1ece8908818455730ddddfa14732edd786d45b1c6a4c00f1864d0674501f", +"TT_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "e14242252f0f1ad06c7ca844cbbd0bb180c4b1185c2628b55833958a686aaeb2", +"TT_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "51b7c0594f8f2681bb66cc3faced07e74215f352ea638b4d864ebd0b4ec307fd", +"TT_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "f2677bb46fd5e0d0f4de6a819a51ec914b0d060f4df54409b7f58e289f0803e5", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "461e8b995dc301b638836e4de869bc6613bef85e9cb69bb58bbee3c7e1f20479", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ec2d4aa0e85c61ee85cc89a3a3defc4e4dbe92b6262819cb78d4357a35fbd2a9", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "2f9c338732bd63e0999a3e5da3cd93a3298e9d9c6722d46e2d06c691ecc66334", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "6711d3af3029db99ef62d71135f04521612c23231595536f33e41096299dbff2", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "1687d560d7d8a8c98305afa9638f3a05424f2334c7d11b09ba9168773e5a682a", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "4248d4e7b51e7c57db5a5e7950b80743bf83716b50206242a4eb8a6091471619", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "d14ca95db129d98b4d699eb0c0f1b43bc5bd19754389acb3cea40184a674eff7", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "eca3b916ab3e3bc2d821bc4817acc4f8f7992f5977259a31970c7cdb61f82fdb", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "929a0c16c72804de11b4e4e27ad19d69eabae913403af06d6f19f0972fde6689", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f54484aebfe426ffe5f2b1bf16b20d72d48525bd13e065c047bfcfa22c944163", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "bed117afb609334af9d7748886357f6b3162a09cebdaed0b1807620610cc5682", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "31dec1a5f1abb766566372591fb93f74c8e3cafe18881b3834bd4d98891f1ff6", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "dcf9a1154f6365094cd982bd1b223678ff6d742b99ffc3cbf772b70183905423", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "09d88e330d29274e29785a291fbf8d55c67d060e6a927c804783d757f1e86669", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "fd4cd77bcc8ee544938a5967cb5cebea26991aec593f9aa1c231c726b6a8ea6f", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "684bf2b078c5791fc3a0f0ab9c9deab7dba765f512a76127dbaef77ca2ad2411", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "ceb2e5ba9a5a7eb433fe86ff22be8be31b621feda360869bc03f155418d1519a", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "1a2d02c0a638d40396accd89b0a1f5a0f07039c571d18089d1fd8e48bea2efce", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "f208111ccbf4dd914f947ee466d572228680711701dab30054ad300e5e6f644e", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "d7160b1e1083e0f0499e22302e9c62edce98b3c9502ba60d86016dd1c37fe5e0", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "eb43d27bfd98cda4f244a103111b1a807b5cad0a5df020cdd8b6d7b7f74f41d7", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "8170a5bd372b85d93a7e9f9632c890e84f5fe56c2ca241814886b519e9b35d2c", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "95f1a73889e37b818035f9bcf2b1ee2db57dbe015274245cd233578bc73669a5", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "dd33ba92a9802937be3081a5c9c96a4991e7312e6b1bd62a2e80076462f51a32", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "f514dc36269de9fd313292427cdcad18729b3f8252bc7de96b37881f339f5f30", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "87aa28276885bda2ef392c0a550edb7a01f9f7da6821eff214c30b9c5fe54be9", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "da8a6b932d802c660981e385dd12b9ce997c9a9a3d66e60eb78a40e55b6c1854", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "e080d299d1b30ea160a2d54f1eb284b1fea71cf6741db26fbba9ea8145e196e7", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "d15494c952a4f23b3cd6acd2abb470ad01d6ab2bf50b98c09d4e5d61053718bc", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "908d1485c06b93edf08c1ed94142b831c394ffde8964aa3b6ddff561b2b35121", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "5fcd1ba12136ebe487895fd3a6019175c8034b5418aa9818c6a14836e8843543", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "b47d8fa2f2982cdf251ed15444fcfc952808149cab738c2adae02bd608667638", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "908d1485c06b93edf08c1ed94142b831c394ffde8964aa3b6ddff561b2b35121", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "908d1485c06b93edf08c1ed94142b831c394ffde8964aa3b6ddff561b2b35121", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "908d1485c06b93edf08c1ed94142b831c394ffde8964aa3b6ddff561b2b35121", +"TT_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "ea2d90849155900cafe5116bcab6e010e5eb4ef7ed87d08e7002d68c3723bf6e", +"TT_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_op_return.py::test_opreturn": "67b8bf71f703dd6c3e40fb8818ee359c610f3f2f0914e906145967f1691166ab", +"TT_cs_bitcoin-test_op_return.py::test_opreturn_address": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_peercoin.py::test_timestamp_included": "e495d9ff789e69e8d233424f5e3e9e4dbd2b9096c84a6276fbfcc03c9f88aa91", +"TT_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "2e31d92134cf8606899c549f93bf4c439af74d77285a5efe705ebc28b6b5be5b", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "4c936c43d67b1ce86cff0c2386e92d05718e43792b5cbb6f3302b0d8ffc9fb9f", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "4c936c43d67b1ce86cff0c2386e92d05718e43792b5cbb6f3302b0d8ffc9fb9f", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "8820a34b658964a3f7a24f9d24b368728579662c4dc5c172941789be035954d8", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "83355847d5bb44837dcc162dbe9962f308de05a2df4d618ba6bd0aac886195e8", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[decred]": "de23cdef169712da4918b32b1edc396330d61addd3b5bcfa1a2de7f9c8ad77fd", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "bc1f738aac7f51153f93e9679dd549023aea40cbce62e7492a76a76067f9e5b6", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "a39773ffc0f388af8f51979df6978490049cf597331e7786d07d609fd7d3f4d2", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "2b7bbd16ad03680b5bce7befe2850bcf417fe9333e4ef559bd92d27bcc8c40c5", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "84d3043bcfd56c46596c5cbe0365a316dd820866fbf1cf953f8b0756842c3e6f", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "50ac38ede0b86e7911dc1e548a5b9a6b5dd4b008f7b3d2ad315533827133ffee", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "50ac38ede0b86e7911dc1e548a5b9a6b5dd4b008f7b3d2ad315533827133ffee", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "af9b9e17a9d441b08ff2e949cd7760dc165a98d596381abb6bc3f619fdb99289", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "15449eea77dd6cde9f1b876e658e4d7a679599e4b41ba48d91cb1335d14b16cb", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "92ca03a17d115e3646ec9e085f7be1a7070abbf93fb65e030d08c36a9334c5c0", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "92ca03a17d115e3646ec9e085f7be1a7070abbf93fb65e030d08c36a9334c5c0", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "c329e1dae94305ea10d292304c7299798019fedd0640e34229b6158f6c9e7f22", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "6db73ffdbeaaa93904f7b9056b7de1c8b28ccf2fa4ef3cd07fa7b86ff16ee2a3", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "5cfcd9c473c7ba5f2d153a187b8266e4972dcfbf31fce4dfc0cce717e42d64a6", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "5cfcd9c473c7ba5f2d153a187b8266e4972dcfbf31fce4dfc0cce717e42d64a6", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "067e401a59c72c008280156a75eaa17e43c9a33c9483539203add1e5156d651c", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "a5d698dbaf49a00d1724c846dd3ca3c9e5476603e824e1f9256c96cf2320d9ff", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "1d09a6107dcda50f772259ffc377ba43c3c5c31c512dd8b327b36c14cf7704cc", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "1d09a6107dcda50f772259ffc377ba43c3c5c31c512dd8b327b36c14cf7704cc", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "680ce131a4dd97dec55670527112a00d9a38f6d0f1f3aa51456447bc0ba5ced2", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "2a98e89286053686b4d9f6294a4218f25910f0e7f79fc5ad38fb735a9dcbb9f0", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "3d140f7ed62f92c4adc664a864ee7d176af82860a1e701f6400a017c3258ca1c", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "b7eed45e81352ec1502c8632423ff1d403495ac963f9b2ceb8dc0e1fbce22ac9", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "9254c720fd446dfec72dad9d13d067ed8fb2350f813e0deee2ddf887f9791ec3", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "1bb223c3d5866a04970ef025d974c117c7c5cacb76c5f90e6f269bac25bdb8d2", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "f91cb44cb993eb0a511c56f5c5ea45df0651cfec28afcb237444c367ba3519c5", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "0c4c610850cc615007092f4b74a8f033b1155dc18cd34540d0157455cbe7ebe3", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "0c4c610850cc615007092f4b74a8f033b1155dc18cd34540d0157455cbe7ebe3", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "4a64abd022272b1026f42898144df1fde29cdad57a1057630a6997c8e4ec481c", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "95741669b55a7fd1b77a800e9e25291018ee8430d17973e2cecd93657049788f", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "0dc33fc6f324e38c9c60c14eb3b85c745be71938159ed7bd846b4de8bffd0cdb", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "0dc33fc6f324e38c9c60c14eb3b85c745be71938159ed7bd846b4de8bffd0cdb", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "0ad4cd8eafa47213027cbf84a0087577f454d6f42eab06b8562ff7a22132442a", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "d9a003f4fb666626f79f63194cc1a19c73f519a8bf2d4a3bcb3b7b6dd2f1b2ec", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "dbccc02353c8a154220c375d2321dd1f437c90bc1b7cae8c366d3b47cd3120e3", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "dbccc02353c8a154220c375d2321dd1f437c90bc1b7cae8c366d3b47cd3120e3", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "cdff3a4de6d9e8f2aeb0b777990928176cac090b8e75552a22c3b4f72f92cb92", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "ac5b9776eadaf272381c035288d6d21a3710822b92ea79016b2057e45220bc8a", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "2fc5da132528378817d26f937dd5389430ea41e3a92de2bae2f926a7fa21e030", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "b6bbb85c3c87ccd3581c682e33b164ded70e8c267ffc0a28d152279593ae0fe1", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "fdc743f79ca753387bdb04e43f0f100e2656d89a60def03b12d7792c43d588ee", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "b4da357f2874e80c7f9f8d67895f84a66e859cd7572512f2f0f1d246a6359147", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "43d547e2f627e8e438d6c3953c77cac8dbcb122e9699193b3d2e4f33e541a7c2", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "76773800609e1743a74c6dbcb41e0e47568f9048772283cdad5523306eaafefb", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "b313e6ca793074bd4c03db9320a54ae4326f6c5d3e3278b331a5b239ec2e0fb9", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "e56ae9822c924a369baec1f7e146e91d23422f901ad8be7a2f1e51fedaa375bc", +"TT_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "8921b7bb49cd3a76a64df968fa8106e00a9b6107e6820acc39e97a4d663ce75e", +"TT_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "8919ddaf7d7cb3de4f1a5ed6a5a5a6ecf4032e7ba5b6f012aa8e5fce40bb8705", +"TT_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "085ae17d7075bc3ae6489ee5daafd0a8a429cf79d597f24fbed8a3fed5ae256b", +"TT_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "927308ef655f75e7b63e7e88255f5b70db70dbda52653292e4e409e6e80cadf1", +"TT_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "927308ef655f75e7b63e7e88255f5b70db70dbda52653292e4e409e6e80cadf1", +"TT_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "feedbc5ef6b8966a55e323e54cef32caa52712a4ea68e2e42fd6c7cf5c653ce2", +"TT_cs_bitcoin-test_signtx.py::test_fee_high_warning": "5b5cfbd11e301b5d92891224fd92acbe116c171b26571d47bafd6d538769880f", +"TT_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx.py::test_information": "05c59f73b4984a7533e108ff22253568da5dcfda7597d4b439ae2f78e0bfe5a6", +"TT_cs_bitcoin-test_signtx.py::test_information_cancel": "f79eefc34ef47b932239cf3839d5922fde520b3a1daa6888892e531af99d6037", +"TT_cs_bitcoin-test_signtx.py::test_information_mixed": "7a4e2effccd516f4f055afbf869804f693f6b4a25b0405c17e3e6c84fc78041b", +"TT_cs_bitcoin-test_signtx.py::test_information_replacement": "efd564ca909687749dbf548e43bdda5e6b69bbbf43256b2f32d44fe6c955a5bf", +"TT_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "1b9f0d9d948e1db491195b462f50aa26206f41ea46b720532b3fc75e800d3e33", +"TT_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "4bb47f921395c8f8774ce939f50e3d15df43b9f864041906d4e4786f3ce59cda", +"TT_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "6bd75c2c0930e5027fc61f9e0a1f1d3d039f5fdc5d55be639766b012f6edbd7c", +"TT_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "4bb47f921395c8f8774ce939f50e3d15df43b9f864041906d4e4786f3ce59cda", +"TT_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "6bd75c2c0930e5027fc61f9e0a1f1d3d039f5fdc5d55be639766b012f6edbd7c", +"TT_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "98a1d07f9737dec31613785dbf14db748953fe3aa886a9bd811a0e83d42b6b8c", +"TT_cs_bitcoin-test_signtx.py::test_lots_of_change": "159432d1c21beba8421d954006c0972ba92efb51efe4b323c362e86de7255520", +"TT_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "04b224ac1faae7fe3d7f0b7dbcbb308964a2ef19bfada900ab400bd3f82ef148", +"TT_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "1d53183e6bfd8dd6aaf3da18c8b02bb07dde9423484d5cc1a3e73e777c204d1b", +"TT_cs_bitcoin-test_signtx.py::test_not_enough_funds": "c827384b935dd271e9d02bca4d239497a17e10ff22d204a8078a605f36730f0b", +"TT_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "2c1f7267d060b433ed16083723790c0d78fb01bf54aa2c8830204f655ae62680", +"TT_cs_bitcoin-test_signtx.py::test_one_one_fee": "0db0e194d5a121535b09dd47a0300cb16563a56af25f4f475ff2d1b02869ba34", +"TT_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "939a0ed806cac83dca06fe37f138fe432a181fde34d0bc7e0a8484459c48e042", +"TT_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "36d0c15beb162271dcbdc9e5352a88e172837ed6611a12c965daa26e2c0c1cc4", +"TT_cs_bitcoin-test_signtx.py::test_one_two_fee": "c1c4f2785a1f771f74370cb9f0b423951178eb21d657b89a8bb997d6b7d3ac27", +"TT_cs_bitcoin-test_signtx.py::test_p2sh": "b7513d75ec59130e1d9fd1cd84dde1ef92e3c6e6a747a980db65b339b1ff4f7c", +"TT_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2bca3b9ac6a14f9978efdf8a7e9991ca5e2cf31b3874c109d9e25fa97a07190e", +"TT_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2bca3b9ac6a14f9978efdf8a7e9991ca5e2cf31b3874c109d9e25fa97a07190e", +"TT_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2bca3b9ac6a14f9978efdf8a7e9991ca5e2cf31b3874c109d9e25fa97a07190e", +"TT_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2bca3b9ac6a14f9978efdf8a7e9991ca5e2cf31b3874c109d9e25fa97a07190e", +"TT_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2bca3b9ac6a14f9978efdf8a7e9991ca5e2cf31b3874c109d9e25fa97a07190e", +"TT_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_signtx.py::test_spend_coinbase": "2c3351f08c4f104f9dba8fa3d72d52fad4aecdf21071a75b18c3e4f16e93f1f3", +"TT_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "95a6f980bd31eb369fb1c370cdacd734730e8212f785016ae14f6c4451a346e8", +"TT_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "5bbee924ec2cb828f394c0f1b2b609e9c2432876eb54e79a44629c03da7040f7", +"TT_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "927308ef655f75e7b63e7e88255f5b70db70dbda52653292e4e409e6e80cadf1", +"TT_cs_bitcoin-test_signtx.py::test_two_changes": "8e0a3557ba08de2fda4530dd1f0ca2bfd6a88b66e58c252ce5b3979697e4c8bc", +"TT_cs_bitcoin-test_signtx.py::test_two_two": "03e21f946705baff3ea188d5b794c1ce1490e346a0bae21b4c68ace252fb859d", +"TT_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "0db0e194d5a121535b09dd47a0300cb16563a56af25f4f475ff2d1b02869ba34", +"TT_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "29b42e1b3925d5ed37fe48d7b68534c5821fbad3e7d4bd1b5b16e22f59457172", +"TT_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "ac5db329133c86e29868317068155a991e05a4f5d1cf99658a0b6070b9ea0ea4", +"TT_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "afbd80e65980979276106b7e81d7a4fd366e9fffe4cabc037ab4e68a6d9d02a3", +"TT_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "0db0e194d5a121535b09dd47a0300cb16563a56af25f4f475ff2d1b02869ba34", +"TT_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "1ef84db6d40f8a9e0f6c529c590b02d83df68260781071d5fc657f1b2bc97297", +"TT_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "ba7d3631699c3a33be3524bdb654cc6d1b6083ce9f8b0b74e1cb63be56eb35a5", +"TT_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "fac2a55504d152827c75d5837d6746baef97a8a729c4587afbfcb46a2849a995", +"TT_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "a9e990d713cdd16bc18bf9a61ef4120a08f3f68523c6fd0496512516cb23e509", +"TT_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "1ef84db6d40f8a9e0f6c529c590b02d83df68260781071d5fc657f1b2bc97297", +"TT_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "b2e9e8517e4ee1d6f959838095c38916270ab047f1030aa133be7411595a504c", +"TT_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "de0cf082b4f7a095f19c88abaf8e7f46ab3be6246630a01008fa255dc9236a41", +"TT_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f471cb567c514931169dbda496d5f04eb7e5b6616ab4368aa13e4d27dfa1983c", +"TT_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "d1e1fcd4f04fb7589372bbbb0dc656be69cc79baaaf817e87ca145ff062a1f6e", +"TT_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "c5580d4f53e0924ceaa0db46b00057b404b1b39d91d263b578a4e9618aaeb655", +"TT_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "e8213819a679f7dad0937e7ccc9588ff9009b00aed995b208a41e53b50dacc3a", +"TT_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "3e2b4a4460dee4001806c30408a21b3f1df9ac0141ede3ef9cdd26a86893a2b4", +"TT_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "16eca13ec7b8782ebd403fff3548735c55d920a3663152e1381437aee1080ba5", +"TT_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "2ed8ebeb7f1944222d97ed6ca89761c1a06f89278e4e44bac8e58a3405b2fdb5", +"TT_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "f5165dbcc9d5cf4c362045d80ddaa5ac25f2d6d2eb65b9e43d15699c9b982cfc", +"TT_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "b0fa1b1c2eedd71df2e2a052505b8c7210ac6fd71d851d4d462f8faee29817d5", +"TT_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "e800b58f7eb0b50543def86f23f649928e4df326f97e265e83a3e2280955ec8d", +"TT_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "292774153fe96b963e56ce32992d3be84a9b0c140af6403ff60b61434f2b19a8", +"TT_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "fe8f5bad61f84dfe5e4c1d5b6bcbe27679a229c1d8d5779b463b81024deeb878", +"TT_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "292774153fe96b963e56ce32992d3be84a9b0c140af6403ff60b61434f2b19a8", +"TT_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "fe8f5bad61f84dfe5e4c1d5b6bcbe27679a229c1d8d5779b463b81024deeb878", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "92ded404fd00db35bb3aa225104ee0275b8536111f965d325ac75d36aa4b0786", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "54b377d277d543d74d6920ebe05c09e8fa27a24e6df0b4f415fb77e925840a6e", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "914bae20cedc48b6e70f7918c7d682b53f5b73879ec1cc9e7c06df9a238898c4", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "0972e11309ac1d9315fd30e41eca18ef804757e355dabf536d3997abece698f6", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "919b76660390b2eb76fb063d23afc89b85ddce10802f188833ee7f0d76dcc1f1", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "9488439fce3b406a527861f8fde699de36adba79e1747bab84b90ee2ce962e2b", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "3cbb5277174f480d0099656b3d1ee69976a8fc55cfe04ee59696b74efa3092a3", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "3ec3185e61fd10b565fda23cca500ee7043bbf3712065479b115731f80f2d8fc", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "b8f9dc2b6731f16b810cf6367e326cf55344109ce5ed2afc0e0e4894ea14446a", +"TT_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9ecf9cae75faa9a53d1e9f9fa1027f06566839556543d4271b9f0fe330d70fb2", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "5a23e54c29de3ddbc8e1bd4fc6f3a0ad6c16ff682e5c3bdb6de8100ab08d5a9b", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "5a23e54c29de3ddbc8e1bd4fc6f3a0ad6c16ff682e5c3bdb6de8100ab08d5a9b", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "5a23e54c29de3ddbc8e1bd4fc6f3a0ad6c16ff682e5c3bdb6de8100ab08d5a9b", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5a23e54c29de3ddbc8e1bd4fc6f3a0ad6c16ff682e5c3bdb6de8100ab08d5a9b", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "b31a90b2d3ba8d90373c3ed12b6291041243b846476492b16e55fd4c327aec4a", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "b31a90b2d3ba8d90373c3ed12b6291041243b846476492b16e55fd4c327aec4a", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "b31a90b2d3ba8d90373c3ed12b6291041243b846476492b16e55fd4c327aec4a", +"TT_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b31a90b2d3ba8d90373c3ed12b6291041243b846476492b16e55fd4c327aec4a", +"TT_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "3486b00a44a27f50e51f8a53f70444bbb6cb300ba892794203d761f51adc49e8", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "e68a536b1106ee925e70c3a1a8814ca7c39ab474ad4bae6a6d45de553cdb10a4", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "6ebb5bcf5999dc84f85914f8b8d5dfb716d06bd8368bb87d122cedef0ecb6b83", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "6ebb5bcf5999dc84f85914f8b8d5dfb716d06bd8368bb87d122cedef0ecb6b83", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "2c79923a3de0a2b3af5f74bd5f7edd92e21b19ad52c6a5e1bfe3d9d362d6ec13", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "8cee4b1075f13579510a3f02d4fe94faaaf7af0e9d0ac486520dfb343d4fa047", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "a1fad7faf84efb93ef05fcdf352d67e339838263401902daaf535678488f2495", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "2c79923a3de0a2b3af5f74bd5f7edd92e21b19ad52c6a5e1bfe3d9d362d6ec13", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "072bb0dffbe5d452abcbb8c2c657decb3212f7da0644703cd472ce1dae44d839", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "d9b72ede7a309dd9f02ba63f452f8c208a4c202163a28e58771c3f74f239fe65", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "d9b72ede7a309dd9f02ba63f452f8c208a4c202163a28e58771c3f74f239fe65", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "d9b72ede7a309dd9f02ba63f452f8c208a4c202163a28e58771c3f74f239fe65", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "d6ee016099168c71c6e522ebe29c496967924b2160931474c9b6d0b0a82545a4", +"TT_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "d9b72ede7a309dd9f02ba63f452f8c208a4c202163a28e58771c3f74f239fe65", +"TT_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "296e0f5e20768b94a40605ecb17f886e3992cf1dd1a82c48dc1b11be89a24183", +"TT_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "9105165b49ea82f19c0f4a853478a34f8898ab8388e26902994219ff93890918", +"TT_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "760987abbaba056729e0e95287ce782276d1b41afd9cfb787bae057294d52c29", +"TT_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "0f500596674bba5dfb31e39af00126f762f8764d49085108bf6ca9d0da18ada9", +"TT_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "3d3a98e58630a9a4a9850c4026f6225cca10db0c942609f30ca1d147c3ba21d3", +"TT_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "1c720f760a913ec9d932d0295e3856a26bba4c788711684b23cd20d6ceb77e68", +"TT_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "6a05e663a9657fc7cf67445404d24ec506243ed3591a2c7a91b06e8e4c8aaf0d", +"TT_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "8bf3b220d74c0a4232fa1435f5f905976ff5d4bb5f1690b6fff86ac927e40b45", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "b817c1b7af513be928f747bd21bb5efc6f69994105478b5635d2e5cd26db6601", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "589a8628e5b592a576a6847d474c862b67a344f6683cce273a1ca48491315ed7", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "3d8cfb8dbbd1c7e77e407b21556cc800dc75ae5ddfbcb4b9f8e52166588ab73d", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "da2a9de6a5b5d720aadbfa74f8bc26eb6ebe39a7d4e59e484b283c2a2632e085", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "71a503e2bc64e4803d9a9c6fa8cba5d6d3f8b03867cbe4747c516d4bfbea3787", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "d1e15d3c5dbefc979d195b9114f3e410c2ede1ea9e4ef64a8a7683ed20528561", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "1ef84db6d40f8a9e0f6c529c590b02d83df68260781071d5fc657f1b2bc97297", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "e345fea612e43a72a6d37a4f2b40573759ab20d0e227ff7e5313d1ad491a01ab", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2dd3099e149451645e59b182923a177c246a84583e6dd370d15870a62217845a", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "ea1c8c59bdf6e94667952b416f5cf4e29b3825cc853630d0d2eab481677eb4cf", +"TT_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "668a4f85a08fd2783626c849654465486480847a72cb3b5ce64b481fd0549454", +"TT_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "78e87add5f8025bb5bbb3dd1ef3d9448c0a6e2ecb6a7511dc672f09fe11b251e", +"TT_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "711ed2725a31c65f21952ba46c5ad06e7037b0670a4ebc396d53f8677196c610", +"TT_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "52a3ee5bf511afcd0a2dfd4450801a0c19f8fff5666035f580f5689c2eeb384e", +"TT_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ca315d7dbebe4447fd43423e3e2ba393fbbb7d932f2f1d64446a5bb57cfda092", +"TT_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "46305236d72fcd94f5071ca8a615bd0965f84d93d25fba7b9230bef88e558573", +"TT_cs_bitcoin-test_verifymessage.py::test_message_grs": "e22d2003745f816454397556e3a489d25c275d6b55cd6d71a879b02ade169b78", +"TT_cs_bitcoin-test_verifymessage.py::test_message_long": "dd20252a56df5d511c852c4a346fe1cfd6cdac8a57d950aa5b699286c24c7c6a", +"TT_cs_bitcoin-test_verifymessage.py::test_message_testnet": "9e4150b6f4216fd4274496561fdcb3cd57a79c8505713b66d5d7630a922a9e34", +"TT_cs_bitcoin-test_verifymessage.py::test_message_verify": "408a2c073b3b819cbc770ecfd8bdf0e9804d7a6093cf6772dc2af4541fed0254", +"TT_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "2ef5e40c06de74a41fe9238b356209d1eaf8cd5356531e1b4028c165012dab11", +"TT_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "a1efb6c1bcfbafbf3bbce5ff904ec41663a6bd57d60da71bb5ad9d6fe90e9e3a", +"TT_cs_bitcoin-test_verifymessage.py::test_verify_utf": "25d29aff4bbc1b2e765e5cb93666b0dd49b6b4b6fd61eae19a94927cf5e6860c", +"TT_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "4bf47bb468356d8059aeeea8369408a6dc709658cf9bdbb1039fffc0b57e5402", +"TT_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "8415aad57f582e81d6b34d4d4cdb596cae7e9291892cc64136a9a4ce64efcf81", +"TT_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "0e663319e71901df1bfb7085b5cbf3c7df1a772a6cd3c6b388b73ca9e018fc67", +"TT_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "bb4f5e8e3daf96d85f7851be4e233bdc705ca910f71f3aef13db399e7fb4677f", +"TT_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "f76ce71af9b9c20076a129aac431fb899c77c58c881644f240d8bc990b65ca66", +"TT_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d41e961b6711b20441b340fa73eaf579e83b36fba97ddbb4a94e3ba5702ab4f1", +"TT_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "004de47078627b5893348c71d0524a79e589251cdd05f2442ed70ce34da85d1e", +"TT_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d6be92a0850c1cd25445ec6576db77fcad1a0bebe653e04ef259e2af3b2b8e88", +"TT_cs_bitcoin-test_zcash.py::test_external_presigned": "49dc36a1bf3e6da1aad95de6427da76caef053c9f8dfb302d26d34f82be6a4f1", +"TT_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "8c92ba8a893fb5629e690f6179e0314d884d2cdfe4e2df5d1a20b8fd14172400", +"TT_cs_bitcoin-test_zcash.py::test_spend_old_versions": "af9f2d25c1543a8e641b9204ec9ce885c981f6b4005cd202280f85eb523965b0", +"TT_cs_bitcoin-test_zcash.py::test_v3_not_supported": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "0f29d58a8fa457f8802e545475a13ce28dbc690f0d9106267abd1a3123f7d9ad", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "77c99a3d430f5873fb62d78dced7b061bd3010631671336d7545d20d7cea4b3e", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "c11d44a42aa95f78610390f2aac2e048d435514c77869df68381f82fb243439c", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "d5697d637559e8d48f84b1d02d7dc0f24ba075f2ba7a29dd2442d3a566f1a289", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "9a6be9c53ef5cb45a740ea108d395ea7e5752570a85a8e7cb90729f738e6ecfa", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "511cacba31aea810e061cc4cd6c59bd78540970da1472d2b66add80a05a60fcd", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "a8a5e2af3a5963fc2b88ec5b7e75d1a89371b6ee66c1070edaf0e6fc9941c4a8", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "18ead508a14f8cc0805bed9a3c538f0855bf55db0e7bde373c66b29eefaf8cdd", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "ef6edf6bb8b9773c4e4e53995f048f4d6d156d1d7ff3ace0ae60b4ca669c08df", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6cb5a66e5330097c970f9c2b09127851b478680e1f77f2342dc23813fbf39b3f", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "d17d3c04b72d0d4816d631c7800f660b73d296150d815b4b739397610624c18d", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "342b7c69f3ba9d3870f06e1c1a36a7e539c92af306690c266cb9cc09e5e87d97", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "561c024819b3df77e395622a5c7f8dd5b99f85b77dfbf9728319e73ca9b5abbc", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "dac8a3c2b801dbddc3c166f47569ad1dae1e99e9407b2d10d1130ac11bb8211d", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "cef435de4626998dd26b43c3f62f64a82c0fa9afd2c325153cb8959a77d830fe", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "d371dfee171cfa9d2b9c4d57b43782488782df7f7398d59d5939c3cd5787d56d", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "ad896aa46ea8442f0a1e55a6295f52434660889ff68d7bbfdb9bc1d7eed32894", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "1fe1b0c07ab073c8fe468b3a6ee4294077ce648dc0c4719e248e108f2ec29089", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "68679e42abef978455f8ecac5ad712a6a097d442ff263815bd3d1eae7a094d83", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "d9675d8fa37593f4fb1752499f9390eb2b68c21fef984437ff413d20d36b4236", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "94656fa4a2fa558d73cf6c35ddb212df44498e21471649203e06fdfc13042184", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b953db4cf9562d897b179d71200122f288b8ae636ad0e83d0c0a295d74b61f1d", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "421e7d7c675abe3078841d64a772a01b3ff5e624db89e11ba4056dfc183a052b", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "bd5f362578802dc6864604ad4608bf7197f82f74e71ed9957fbd9536904ccdff", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "be37effb508ab6ef259246ea202fc449eae651d6ac38283cbc9aad0d02e56b7c", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "fef7928d6dbb80361a9626ea1b642dbe10d82ba77974660073cac473252ee3c6", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "ac68d43a49d2372ea6b64feff0fa2b36ccb24d948663738dd1a157cb87dc7c37", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "baa96c22bb195e2c9976b5908a74445453145d7f42b1bd584f4334222f48a916", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "019f06c5900e9927f8ca3237eef112e6a81d23eeee4aba460616cc3dffdb6cc3", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "2ed2ce615829f8c930c34ba38952d6f5fd339d153cea6b78158b399c88a366a8", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "0a3e1c4e2d2b1018338a6ebf5f9e3d6c90fb36febd55005a012d498a8716a492", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "4087412bc4259546a60f69144ef901d5bdac7e1f4edd414d45d4143fee12a7b5", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "48ebaab1ec031fe98afdfa475ff6e8f1337a798fba87fedd889fe98fffb66755", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "77d11d58cac427729f47013925fc0b45f53b1c30612f0ae3b0a860e022d8bc64", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "ae408a4956827ceadd3a5cc38c3706eeb48a7f39dd57c269fb5da3c3cbeb4e72", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "4769972582dbd1e4c6572f942b1d03ef52ef190819635ee740979ebf7d7af036", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "65634cadf00a1a1d82edc01f89328bc7e257c60917a7223bd91dfaeae3af549d", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e3ae20ab8db95c6015f37fd72842ea8950a3023ed464ee81fc7b4ceb7fc5f055", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ea97d7e3aca06e0a3fd69131fde43bca28437ceb13f63c4e19d21aec59b3ead0", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "a818d0c00371eadd725421b112351385ec1fc412a1f662d9f6a38587e34c96cc", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "920574d592f7916ee0ce2e21b5f75ad277a334837267704cc32a2b29aee639ae", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "2a2f6763319cb4224b4a848be5ba19c9f55056d465cb3717bf71e09a45625a83", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "e805e91d5c146990883af24eddea4daa3c0092d2bbd8d78481f01834f55967d9", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "ecabff1d5cad89e3ac87391e4feeb95c17b19c93e8fca696469acd758deae9b8", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "ac07e20d38b8de833d485c55cbf5dc2f357863df11248161a7611018da51f8c9", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "8159cbc66c94ba7221ada92783620cb3d6df20efa822f7b0a5eb05fa2942a58c", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "531921380a173be2b1eb705acfcf2dc5d6ea6e0d9e621fc74a2e57dea79420fe", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "4734199a27a141bd392ea41d41272db37d5178c06089018b55b5513c896aaa07", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "1a585b3477a4a7f7f895e3aac4feebf025625394af8ad9d07665061abb67bc26", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "c3789ab36df5f3093f93e2eff300938b36ff061b47d711106370a8b882ec27b0", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "033f4f6459d4174613b096abf3c1ff8c4d9b67f052fa4264f75701221e4002f8", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "1cfd929a96aa133227dafc06ed23c3f2b401b5154f81c1a1c94a50c6f3b69f8b", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "0362b2643926a78bd3fee3ce9cb7b3a1b0aec575e32f5e7c8580042b797c3306", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "7fd51ac753fad5014f1139d28c9f4d7841bc2d4fb4e9ed684698538ff622bf87", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "e2678765353ee299126e20f3eba29eec8154a6418731b7fd8487011127ac61f0", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "efdc814a83e55f599e2463c4697ab5d65c88cf58590034a080a07a702bb1b9b3", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "db112a6867d8605ffa4bc5cf30982311fe664413f252bd9c8d3fa1128aef8ff2", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "82be31d4045d8be17c433f3043e417c288076bfc96fe0c5b2770268e719e6897", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "3015a387ecc122d3795b1846b420e812b86b22b5d2d8f1dd1721b57d087c020e", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "ab7aefc6471e54571a4c410f46db78f201f6c950fc3bdef7e1a5658e2b531264", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "38090a136d0b5f7ffc8d8b36b2ad1320d674b9d252efb0bd283e303d7690aef3", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "7ca321972bcce415c30bae78359cc0ac3cc67f99c73e04bc070abc6c986ba503", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "784fc0be63747a86fbb38f48f5f28e18bbfdaa8dc585fbbae0766efc0893ca10", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "b731ed96e428df52259429015971581296fc1096a73432b2e1a79f3fe23dddff", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "fde0d75c73c28ef8668a4628fc3c781004946d32812e1d6f768ff1cd6df26a06", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "a77deefa53f98026d4946120e53d8fb8d429e17af66cec4c09eb66464e6e0db0", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "40dd3491eef1b92049bbf0ad26a6cbfe3801859afbfd340869fc5b62254d0309", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "2a4e0581c6e7f265852934c8df2ac354609a739417fcd904ebadba21ab508ea4", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "8ebeae833cfbf068e85e865f49e08ddb75e2fb65f0dff6433523cdc43e42c7b5", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "32716b29ae9b8f48479bdcbc4e64f812cdfafe5f5298311798b4740add62f371", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "900acf16c33a383698d308323e0f86450750ebde7a645db96e6068fa205fc941", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "44b75119c988775fceb5a753b8eb6c17d79530e21025086b17305acd3dfec092", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "315700f0d175dff12b7ee0f3c4b78f046411ef2f0a71b41f2daaadb7eadadadf", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "e8b958e863bc3aa60833062318c145d258589b9fa30fc3321403a84214fd4e06", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "8d7bd4241cdabebf247600ebd596476c0b0d95f1a2f54ea5ed3e2b26bd2c2dce", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "efacdc5010fff903a15422f0bb823acd698b2fa096229cc7455f3411605b0d4a", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4a6b53671a8f4faa4d46e767149849c5e2322d33119f3830a2a20e3f84e33988", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "1a9b7faa5a4a259ecd953d426f095e3952fd58199263be476e1e79f7d5ee8ddb", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "f27f5c7b4a5d4ac0f177f579593982e13c09868936d467acb356cb14d0369a85", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "c283da69aee0a10593b42137a1faa6d4ec294db8c3c8167b5716536dcfc3529f", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "86a33bcf540f7b5d7900f5e1c9ff9337127293480018e4e29e05fdc6632f099a", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "24d9b9697a94b0d6455121f73882e30f087cd3fa62e1aab8ac61c1a42840559a", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "7c9cee1c93b05cca6db3298f3fd7205b37700712406db4fd4e2747a38d5857b2", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "28c3196f53885f25717756a2ec7bd9af8c1e8370d33ec91bc8d72d7856748164", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "30e154f86018416bcdcb716a4ee6e114d6cef24567d8caef0030a84fc62d8780", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ffa013ef2ec20fcdffcc7734b96a456f67ab610846eca395a6fc799f49e249f5", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "41bf5bd9c10b65a011abcae389a964d0682334fac34e05174c02a1af3535e16a", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "3323ea055f521e348e7f2e30bd872771ba0107e25c855f60f2dcb745cc37feeb", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "0ad63264ea1696f1ffda5b3a71e4046b20a7db166bf5e524d17346510a417080", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "2298dd1a1ed80df1bd85ecd3c12271f3da8ddd7e13281957a9109f6319122137", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "b31f1814f300df691291f0381c03d2f6ae7034d32339e6dc1ee6f88d22f766de", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "7a10f029eb4e3d34e04c3fefa899fad2fdede122a9e368ab3e18b8865da1d4aa", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "c2f9446d2bf6b9d5cda4f71b21551cf2962f3b9ab6e760a9fdc0840f2888c0f2", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "5ac0bd1c46165d0991172061a762faa7633a8f49f7c80b75398013d213107814", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "177d7e3887c9998705d0964fbfce4f34c3672e4ca0ac32f514939ea38c225496", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "05268e54d73d184721bf227928afa3c560e6182185f62bb3c75cfd69e166fa80", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "2dd0d4491d7f7f5ca3f007f8de2621ba7606f346c51b7dc8893f2ebf08168a2d", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "b32c60fa643b2a08d5c3668ebebccb67e963d8d76c1a8df7b7ad2cdc95633138", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "10dc15139e1a8a7a759b3e05a0b5429f21f4567e81b9e804a3cf4ef5afe21de8", +"TT_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "a7ebf983a1ce51d816db4470acc91a59e2ad3a5d43bc57e6b5b6715be3b7d0c6", +"TT_cs_cardano-test_derivations.py::test_bad_session": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_cardano-test_derivations.py::test_ledger_available_always": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "54a66bab6b2a7d1373dca461275f9c38461363a95b40df3ddacbe266ba2a385c", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "44389320a0f103176bd9de651312e3b247cc05ceef12a09c61ed62da7d71ef79", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "5d39fb16d6f11deb0ab4cb223ae76b7ccada3a794f6b3c4058f4511a1115a264", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "016cd441b17607afe4ac92ecba7919085cd01460fb21a21d9076c26886655e80", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "e6d1a2bf9092aa287309cc37c459833d9a6c9f6bf6edb7c828e72cbb24777cb4", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "3cc9e467e4f9c8dec1595a66cd0797f9a3c8fb36935279432b6a9b674d8c5e83", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "8b8b1d67c5f4f0497866e7dce381c817af2eb446cfeba8e3af6d9e3c1d8feeb3", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "00422a8b97cce345ff209134cd39f10eb2f9830b7fb9ad32bca9f0863eedd467", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "38a536ebce8d89a55998cb9c2232f6da06b706b280be7df56560db173f192a56", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "0260d5380d7e59dd53aee88f10a6c191747ed94ac1d09a0a82477b7e4ea9652e", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "52d5afa8fdcfb47b7e39269f82d56e9f08defe7c829c8309d141eb7b7122f0cd", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "910ccb68a83c00b7d94f475a56542bc74c51627b633a0490a733b875d9a2b133", +"TT_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "61937d150693c6c37975836aebf52981021d80936ae14937c4d3460f8fd70ac4", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "0d1a71455d777a785631aeb310f88d712206df11d3e2584bce0a4b8012c0ef07", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "9cf51e725d89d05cba11cce163fec0880f4eca87a79d67fa2109a36f9efedfd6", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3c441b1d74d3a7657ac80115e739e404529d71f4d49cebcb4398d9b80bb6299a", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "be8428563c1c7d874ca6391730d30696589c47455ce4c572d7c590b1604b7885", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "be8428563c1c7d874ca6391730d30696589c47455ce4c572d7c590b1604b7885", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4371ea9050975ae6db993d47990a58e4c99bb298bec669bbeb7a9088915e183b", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "39f3cc85fab82037e45f60aff37efcf93beab62c403235a3a5ee434f7f66c0fe", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ec0e0cff0cf128a392443e4c6dc956ef417c5fba519496116aa44901b432587c", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "8d51c3c0a9f5f44e9e09990b74b396cebdea032d0fb319f12b39386d1e18e4ca", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "6f21ac300c5d353c22bf72cff57d97f3b33b860c3f91c6251acd9a5478680347", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "18d696044c62c7eb51b7660666a35be69715df879ff8669b62ac29e37301fd22", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "cc9765d64a6ca7123565ff00a639acb3a9442c784c8f9bf54d17eb23247f992b", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "e8699bd062329b879d785fadbde70704ff1c7f5f638ed4cb5a850eac2690659d", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "20185c3c5fdf0e5f157051ab2178a1b0c154cfa8fd998ce9b30184d9344db18a", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "20185c3c5fdf0e5f157051ab2178a1b0c154cfa8fd998ce9b30184d9344db18a", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "4dacd90c8958690954c5ba0e8960ac8a1f93d49bf30f04e6d68e75c0620470d0", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e620ec5f182d4f7ad2633563a6da953eb10f809f8565253eae41c153c2156d49", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "44dd9497a25290405af75b73d77562850384b224363a78a10e5bc82d67ae00b7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "406a9b497d8208845e086cce9adc1b44fc65e418a755c565c879ab357820d442", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "aac62e647848617222a0ad767acfd9c34ade6b6db77039af8837013472e67030", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "cbae12d0b37ee2d26561badddd6db28d566fef47725d390924b5be88c9f4003c", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "9d53d1f1e4d731c864a733c6cae856518c1494c3a1ffa479cbba61dddfabd732", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "8c5ad4d41c08edc1f26435744467acbc59c0eef15fa558a9e3113009eb2cb7cf", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "be8428563c1c7d874ca6391730d30696589c47455ce4c572d7c590b1604b7885", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "15724db259460da497c4a653bcfb433a478e9ac3ffcda9ded058546d4209a5e8", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "406a9b497d8208845e086cce9adc1b44fc65e418a755c565c879ab357820d442", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "8600b27e6fa0244e00d9aaf0cdd201000ff1ccf5dcd1b584f3dffc868061cc06", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "cbae12d0b37ee2d26561badddd6db28d566fef47725d390924b5be88c9f4003c", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "9d53d1f1e4d731c864a733c6cae856518c1494c3a1ffa479cbba61dddfabd732", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "5a4cda626301f6b5e996657414997c9532b23429b8c0b6cfbef8b518cf9489ee", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "406a9b497d8208845e086cce9adc1b44fc65e418a755c565c879ab357820d442", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "94a827e5a4be566da7026906a478d581599659f8b259810937cf56e06f93b56f", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "b844102ac1cb63c3cb74b43bc328c03335a195077204416254fb11621a58a127", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "5e14845990b1c34ff9e0e7334ed60e83f7b10761a61fc3fdba0e0faafc228efc", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "090e90cfab9a8b6198ee2aea82762bd8bba6c5286db11c091f945491d937114f", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "82e83e7f80a5dc8938155abf5f661f471b0be01fbc649ed22323872e89073845", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "f3d05fd5c7379db57c751dec1898aa6e953087632aed53b489181ee2cd16411d", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "c0617ea8649f720f8fb9c1572289d475ecb3db813545e2fb946d726b386a96b2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "c57ab457b41cf4dcc1868b6a4f5fe955906cfb29568e19b2526380bf0e29c64d", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "3b54359d2b4ac55ecbb0d9db52a8d033a193174a26df0838c315b80d0ea892cc", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c49064dd57ccd0194c4c7b07bd64d4f8f7206d1250b562ce83a0fe3595c98d70", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2f8dec3c99b28d7ac1ed4b63960892ab35c153336527e8d1ceffc939198221cc", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "755d04f52346722dc6010d0ad6853f4e7ff2310592b83f5922cb5cb544fd85bf", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "5a97e0be1e909d8c6696aa621e534e591673dfd9ce284e0fed63318bf5137f9a", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "e2a8160332210e2410efa057a60013d7dcd36dfa1827797fdaa2f79cc672f20c", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "ebb0f284287218e45d7f8d7e440a328f7b4515e74daf08078f57b5f709894d25", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "ba87654a7eab15b45e1f7083518f85dd837b7a88079d17db7d43afdf14a774e3", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "43a5a1819c85b3ec1e08e525f92cae66b6e24ca5788951012b95d0c6569104b7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "a11127d31d463a8c49f6e383ab0a8dd2f2dd4d195f416e898720b7e5bfe13115", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "23b9033d60ac9b5e6c1c8071ed3be164afba7f4459a31db5949bf613f5eee288", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "d8a4e746c1244f5369acd4fc2c2ca5bdb6fd37b52446031a920211ad35da3867", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "b00f2acd3f545e6e2c21e06fdc5ef30084b7744d75f69e8b010ae28a8a77a324", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "5d9528cf3520ec44254c2103c0ef0f9fc8cc3e8931398eff59a2cf9cef4a3e13", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "5d9528cf3520ec44254c2103c0ef0f9fc8cc3e8931398eff59a2cf9cef4a3e13", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "e9a1fefdc0205f9bfe2ae39a4d6289c8ea18157edb551d2acd53ed56632cdce2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "4deb22c5c516bc6dd32d0b3898da67ae081a64bd8f775ed00ff51f678f1e6073", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "b91b44c66fe30b7a5613d032e29aa88cc66b28549e3113873018a15458f7e96e", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "4085f42ff1eb3d9fa749fba7dfe77110a0c4f4c290d86509d3e1ed696bab3f9d", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "934a0474826b5a7bf41ea0670e9bdb58d065d1de95978c26a614de5cafb4fc31", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "cd2a40153f17c9c8bcc6e8ee21a084f6ec649b756183240d9be7b9d52ff3c8f0", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "3cca5ac6baec040b05b6f8c77e4048014efb4194de9ec8544ea5ad24996c87e8", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "b2cbeae45f543a8fa2c4ebcac68d5cfbbae004cb7f33c30845f1d3edc285d989", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "406a9b497d8208845e086cce9adc1b44fc65e418a755c565c879ab357820d442", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "1ad7e49ca5c577b46b7dc707e9b350b4a423b2aa114d743dc37c20e739c695d9", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "d1a69165af278bcf3e57ef2c44872de43b9e44e0c1cc33c71cfd652341f4012c", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "8800da8705fcf968c323f8033421190ab33fbb613805721888a185df92e4917c", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "0f1da2b9d1a412d4f150a3c193459b0256c8056238a584fc431ee2125db71996", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "48ec749eed41eff4a9a2ab6a4a92e6a1f9272c89694a143fa31993b535c5f383", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "fdbe444ae373b6eea42322148e5de02e04e1ca871a06098dc32d0708056413ce", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "76b584811f4130123c82a7ae51a6b75913f319950d7c3ac3cb53942d72c6384a", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "406a9b497d8208845e086cce9adc1b44fc65e418a755c565c879ab357820d442", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "778595b4a3fb114d5a49ff2f8bd090f69bde56d7ab40c0e404acbd9b03c1b4f4", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3b0e9e8b1dd0a35dd318b8d94d8a222e4b969b44940581aa3f367e45d4ed12cf", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "0144bd9959b626fce7a5dab005e9a973694e780ec59cc4640149a734e37a4ec2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3c07677b76644e716d2b642cecb31338d879b7101b47a3f4243fde573f7f0c4a", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "08fcf2b1cf6e8d70593543cc9044f3cca5017524b18a5b2bc1ffd0ab51415d9d", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "fe9855bb4146c278d6a851fecef099763fe0eb01202d8cb7c1369f63e847e833", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "65921594817d81765c95a53b18d103de5e8bfce0d05629e5bbab3a3c9d352c24", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "e7ff1a4b891206309cc1d22d50830dded5b5f51518a5033015210af6b39d4864", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "9f74bd9603a391420813acbb9ea387745ed514ebb34d34a8eb8f2e7943d9aeab", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "6cdfabdbd7677d2f8996d0160b4108c21fdadde1e7035015cb6d4db09ccd0c6e", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "6cdfabdbd7677d2f8996d0160b4108c21fdadde1e7035015cb6d4db09ccd0c6e", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "4638a1e2f79137ac8d10ecca8d8fd3d7ce54117ad86c3f1c5fbdf719438f650e", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "17e96995d472d4292379114bd2a1e61b071f082e85c54f61d744bc60dbe89def", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "090d40451f779a75dcbd6029b27ae9ee06eaed1c9970f598515326cae7640bfd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "bdf07c2f3855ae9b9cee2788cbd06ec85398c6c5fa5507f549099d3d7442de16", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "5f09b23a2f74c5a27bcad2453b1eb9f5c11f2f2bbcd88e79dfa16e5308aaa5fc", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "31742c40a0b154ff68cadd158a23b8781a92946b808a9f07818b8abbb631891e", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "be8428563c1c7d874ca6391730d30696589c47455ce4c572d7c590b1604b7885", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "be8428563c1c7d874ca6391730d30696589c47455ce4c572d7c590b1604b7885", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "4ca3207f09aa21e1668974280cbfa23f05dd9c719f5e33fa3235194d5af4b195", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "f08180d9c566acbc8808de9cc3ca4749626f2a805feb18c6cf7d8bd1a4c77122", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "cf701193571543cd2d87837b9d417eeeba446ec7d72a7cd136a986acb12ba319", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "0d1a71455d777a785631aeb310f88d712206df11d3e2584bce0a4b8012c0ef07", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "8d51c3c0a9f5f44e9e09990b74b396cebdea032d0fb319f12b39386d1e18e4ca", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "30a43720449d921de3246fd21df480555948c24bbd45f587883bbedb73cf67a8", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "092981434b1c6d08c5642f5b058c5c9ea002f3223d5afadd92f9fbc53aa7414e", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "092981434b1c6d08c5642f5b058c5c9ea002f3223d5afadd92f9fbc53aa7414e", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "1852b03e6ab3b580d07e6a123601e661a9448cb7db05eb7ce0ffdb56575205ab", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "02be76dd4488a35b1dcd2a569f24d38c452e0af661a7d9699b63a3946e8783bb", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "5d5af49db7efd3a5601fb0fdbbaf83c157cc40f462de57824895326cb2d0256b", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "406a9b497d8208845e086cce9adc1b44fc65e418a755c565c879ab357820d442", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "1852b03e6ab3b580d07e6a123601e661a9448cb7db05eb7ce0ffdb56575205ab", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "1852b03e6ab3b580d07e6a123601e661a9448cb7db05eb7ce0ffdb56575205ab", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "beee6c0abf8ff5406540a400d1e980133647dde8651553a2240c2d74d2ab7e6a", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d250fb38f483e6f57a47b1d28480a32e3487c7926104f169ea8373da02875da8", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "1fe72924570044641c4603108aa682e6c9ec5c3f3e42197c5acdff12703808ef", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "89944e8abccf601bb12558dd62ca5d40ef84cf038bc97e16a52949360a778ca8", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "26d39bfab655259858a59b46c9057d12c5210b4939bf5b89a30efa50ea36d15f", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e43d987c850d813b5b5a4c3f031360aba6914d8519182d1041e8c67bf9406f15", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e43d987c850d813b5b5a4c3f031360aba6914d8519182d1041e8c67bf9406f15", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e43d987c850d813b5b5a4c3f031360aba6914d8519182d1041e8c67bf9406f15", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e43d987c850d813b5b5a4c3f031360aba6914d8519182d1041e8c67bf9406f15", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e43d987c850d813b5b5a4c3f031360aba6914d8519182d1041e8c67bf9406f15", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e43d987c850d813b5b5a4c3f031360aba6914d8519182d1041e8c67bf9406f15", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "26d39bfab655259858a59b46c9057d12c5210b4939bf5b89a30efa50ea36d15f", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "26d39bfab655259858a59b46c9057d12c5210b4939bf5b89a30efa50ea36d15f", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "26d39bfab655259858a59b46c9057d12c5210b4939bf5b89a30efa50ea36d15f", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d250fb38f483e6f57a47b1d28480a32e3487c7926104f169ea8373da02875da8", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "33a2b4a4f28e9a0ba91ed97b80f246cd670659d17e54f442803007e6a3762368", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "edfed365f11f75b9af189e2eb3e1ee40c980705bda470f2fbb31e6429aa1a2b3", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "a880827c3bea6a1a8642d63bef48594fb6a065ab47905086b39384191e2114e3", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "7e028f926de0fbb7d10364a8fb3d54a8674f6bf7ff0065bed7f9325fe3b7c2a9", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "f93cfde76a4f3fe0dff6d64b43a4d531623da6329ef65a8ea2d7c4f11fdaf14a", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "7e4a902ac35ff8e8284ad322a8fac47c5a46ca38fe626791f14d0dec03b27c3a", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "8ad4773a1ed02ba430bd569567f6b4f014d70af0ead98770027df5a0430c6ff7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "1852b03e6ab3b580d07e6a123601e661a9448cb7db05eb7ce0ffdb56575205ab", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "1852b03e6ab3b580d07e6a123601e661a9448cb7db05eb7ce0ffdb56575205ab", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "f367565a0f00f2cda38f4dfdb2dba7fc95762e60d3420ba8218806a08a6d7780", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "a00f75ebb85e1d129f72311f751ccf1b89b6c8aff55f534aabc65ca4aabe6e08", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "8bdb5cbbfd78c3945effbeb5f7e8810da63a7d2b777c4cc562855ea7ac9d5d73", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "00bbafbcb7e2ad7bcc5e63d94923f64ab3bbb044d3ade2103ae4ba7fb619bc23", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "092981434b1c6d08c5642f5b058c5c9ea002f3223d5afadd92f9fbc53aa7414e", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "5d9528cf3520ec44254c2103c0ef0f9fc8cc3e8931398eff59a2cf9cef4a3e13", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "5d9528cf3520ec44254c2103c0ef0f9fc8cc3e8931398eff59a2cf9cef4a3e13", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "9d406384e3ba116bbff977b2f1b230800dee3767800e4b84ab8896d0d9b5db87", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "5d9528cf3520ec44254c2103c0ef0f9fc8cc3e8931398eff59a2cf9cef4a3e13", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "1852b03e6ab3b580d07e6a123601e661a9448cb7db05eb7ce0ffdb56575205ab", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "1852b03e6ab3b580d07e6a123601e661a9448cb7db05eb7ce0ffdb56575205ab", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "3d285d92d9259e9cf4c27bb4879e83f22a232e30c66e369f8e009bf19cb9278a", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "1858e7641c56c6737552447746e7674dad2a1d2da93fb60ce0a701720ec73d32", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "51e524d28e80c6d9de816b4abfaf2b39037814dd037314d2571bcbfcabd10fbd", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "606acd9cb284d77657279b19677a0f911956583c6abeb67943d6e26501e88767", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "6a36908eb9bd816aebb9aa82633177ee31bc8dabd811504863a883c480a5ace2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e43d987c850d813b5b5a4c3f031360aba6914d8519182d1041e8c67bf9406f15", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "3bd2003639ad44ac30c1431e46fb213207d0c1e9fe66ca3ef6361777bfb46fb7", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "2615bb021b5b4bd6b801c5fa2e75f042d971df86f09f248f38aa497e719b8d82", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "5cd116418477a2f6261b16a398420ff40ef8493faba10a341289faf3ac2b7364", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "f16c2ceca64a128d88fc8fc8e05d6265ea7d89027feb85df84ca3b361fa7bd9f", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "bb05d056d44beedcfb1749eca383908908c910407393891940597d9e48e683ba", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "0745f83505725b28fe04474621d95cc29986fb3b771362831d34e5138d0a37a0", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "871a6265b8eb17e531704d5370560729882312c82bb14b6cbf5b7295f4eb75d2", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "08e3ea17df7f808519415ccbdffc415861db13613e688b4c12513a41184ec1ec", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "b92d62a90c7c79cd223c19e5b0421bc955a89f97655009e49b62b2c1342bea23", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "b3bd3fd4929ed46cf4acdce1afebd48c5939e54ac0778bd2cbd1b73ccb16495d", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "d6f6934babde256cf8103658a66ae29d8fe144a7fde53622dff68aa77a8bcf93", +"TT_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "55ec96183f0e144d70704b6c47eea12e8e9c804e25bcbe34a622a08064deb24e", +"TT_cs_eos-test_get_public_key.py::test_eos_get_public_key": "5d491a8b994d3b09f3035bebd046f5e633c9ba8ffe5e9f53382c03d0e7146ab5", +"TT_cs_eos-test_signtx.py::test_eos_signtx_buyram": "4823b25a63b5b97870c82a212cb5ef89e9f556332b6025a31b31dc16887519b4", +"TT_cs_eos-test_signtx.py::test_eos_signtx_buyrambytes": "9256841cbac2481f214f890f8b36ae75300f4da8ecc773550fca58dd1e75d82f", +"TT_cs_eos-test_signtx.py::test_eos_signtx_delegate": "5b0eb344a0c5753e52e1e37fce79e9bc2fbfdcfb2b3dd7b8e3086cb9562bb65b", +"TT_cs_eos-test_signtx.py::test_eos_signtx_deleteauth": "3645a5d228a2783bbe6c828fa2192e95a8c34d3d99cb95dc4c3ff6f901d3d767", +"TT_cs_eos-test_signtx.py::test_eos_signtx_linkauth": "2e9102706dc0fde71603dd5c2e8637def5542311763e81a94ea7f2b92b01bbd5", +"TT_cs_eos-test_signtx.py::test_eos_signtx_newaccount": "8a849a2ad7b87503c8655343407989e878bec357308a3a08c214935b016d88fb", +"TT_cs_eos-test_signtx.py::test_eos_signtx_refund": "68fc5e86354adb1615558483555b50d88238bf6d28133f4eeb9111d7c66c3222", +"TT_cs_eos-test_signtx.py::test_eos_signtx_sellram": "b24abf50a000eb8530976a8ea1a5d560929c9c90d4d050ed341f47a5dcfae56b", +"TT_cs_eos-test_signtx.py::test_eos_signtx_setcontract": "94cb86fc341e8c597cbda21777c679a73f67cf1bacdb9434443fc6f99cdc0b05", +"TT_cs_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "523c9458f629bd750f6e65116a017e04c91e4226f5d256cc1af986c2f7240c57", +"TT_cs_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "523c9458f629bd750f6e65116a017e04c91e4226f5d256cc1af986c2f7240c57", +"TT_cs_eos-test_signtx.py::test_eos_signtx_undelegate": "26d51f1f960101451efcc1931c7e47b64317085c579dda02f8d4bf7bd0ea2311", +"TT_cs_eos-test_signtx.py::test_eos_signtx_unknown": "606721d26ac1c8b8f03f1f762e5a65c80d12237fcb49ba65125704a966ee60ee", +"TT_cs_eos-test_signtx.py::test_eos_signtx_unlinkauth": "2da81226b2d5fb0ad740d939f05cc0f937284f9fe927b1e1298bb83e8cc6cd17", +"TT_cs_eos-test_signtx.py::test_eos_signtx_updateauth": "94fca5fe456943839c99c2baf9e7b01cb065068c1cf8f638c6b79fb1d93abd83", +"TT_cs_eos-test_signtx.py::test_eos_signtx_vote": "2857c5c3342215693dd55e50d65c480f0c071eba5310e947fbb0b745bbc5a0af", +"TT_cs_eos-test_signtx.py::test_eos_signtx_vote_proxy": "f62e23e83209b66483df752687ec75450c8d98ddb575672d5ab6c14604106be7", +"TT_cs_ethereum-test_definitions.py::test_builtin": "89bd448bb1056a6dec4e129d8db1c46d476324110a9392d355e01832f5693f04", +"TT_cs_ethereum-test_definitions.py::test_builtin_token": "ca5cc05da3deec18c716807b3a13e7606024725f75c0c5a6401501e99dd0f9df", +"TT_cs_ethereum-test_definitions.py::test_chain_id_allowed": "4dd46079a4af3a171db1a4fe32977a91fbcc422c2069a8c1b1c5db03de367ecc", +"TT_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "952e0f19ae84f180d79bc4a94d1692933bf2d23839027569c624570773bcece9", +"TT_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "d71d9f8538fca634aee1615c699e809314cdb5e2880772eb4c4d84fa71d2899e", +"TT_cs_ethereum-test_definitions.py::test_external_chain_without_token": "2f1507e87e25f4f7a1e8a789f51dcf6b6294bd0cdebbbf49a4e0fb3991e75176", +"TT_cs_ethereum-test_definitions.py::test_external_token": "52ae92c84e7770fc0b4871534a69c26b3b70accc36577acd0138250a58cb04e4", +"TT_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "e4706bb27c3b93ce31d04d5d5122ba7de90a1c4894fee1bb90c6c1b87e9c2cf5", +"TT_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "47b0f9f7b75955cc094f8ef69462216e64eedcb9c6154f7cfb88985d1bcf4b5e", +"TT_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "229eaffddb996c6a928fba9e50b65f867ccacbcee7a9cabb24b83c874c47dbee", +"TT_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "f9a407e0a1a48066f62f217b4f2910f9cabeb7689e068cfcd3abc337f7bed996", +"TT_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_slip44_disallowed": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions.py::test_slip44_external": "8ac154d0e7d35979b619760f6e11049475861254bcada4e028e922ff4f6c5860", +"TT_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_bad_proof": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_bad_type": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_missing_signature": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_outdated": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_short_message": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "c132db3b2001c0d4867b1d026049e3f2cec1df42e92fed6b20f5d888a0024c6e", +"TT_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "12ac45d3dc0f7c58627826c1a464adddeb3c26b12c0440824f52e6055bfbd3cb", +"TT_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "6556b04af0a5a5a4b0dc945dd9d62dcaae44f9e391cdc3fb1ab30f7bc8d53344", +"TT_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "ed22860a2c307f0420222bc37797f5c40ee36371ba554d3e0ab5e6dd6eaa7d78", +"TT_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "91cf90a2ff35218b037293424c758c08f872602373010a924386925c0d426e96", +"TT_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "d2d6dcf874d0186f4475ed01b19f87632f6bdfcc08319d9f4650b8de5003c071", +"TT_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "952e0fff265d36a10e0e65fbe8a9347812863fe7b8cabce01337e925c119c121", +"TT_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "4dad65664db6800489f09f61f0ff41f759168f62d8f4b553b8be6c91b059b4bf", +"TT_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "17cd6bed0c206be5c2dca652d84cd7932490a69ba01f4277a6c2560d688eda5a", +"TT_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "705a45897e776a301e16ee998ae42fc38eca1838f8e8ca4353677a285a12eaa9", +"TT_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "0c17f911d869fc0137b80b4757faf4a12b917c23a1d9a367de3c3bf4cfaeb864", +"TT_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "6314feb9c8b71bf9fb04afd1f99fa9a517b5fc782f8bbe84dd3dd115ce64d3b8", +"TT_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "5388541ff294dfd517a0bb222cffd647f25a519222a5ce77abe3439f6bdfeee9", +"TT_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "5388541ff294dfd517a0bb222cffd647f25a519222a5ce77abe3439f6bdfeee9", +"TT_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "5388541ff294dfd517a0bb222cffd647f25a519222a5ce77abe3439f6bdfeee9", +"TT_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "5388541ff294dfd517a0bb222cffd647f25a519222a5ce77abe3439f6bdfeee9", +"TT_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "4c737d05a449429f270520fe7227f05ca5328047a2986a158a5dbc302bc734c5", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "0204b33510e519d11d590f3c2a7919f7faa7aff4ce003a801eefc52c2568f8c7", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "c37a13c06034a0f9cf4706b5002bc573dc0edc786ce04a64b4594b2627b6c9a2", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "339b42ee73549526ae5806a6427301625fd203d46ee987e9f0fb1f94575dfe8b", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "f385a511e2459bda3a5469686cefed3df2ae28e9055cc6e663d560711057779b", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "5050a6baf5347ed815ae70c537fb11a781ab96afdbfbbcb088aa78f2d3d1b1e3", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "c37a13c06034a0f9cf4706b5002bc573dc0edc786ce04a64b4594b2627b6c9a2", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "c37a13c06034a0f9cf4706b5002bc573dc0edc786ce04a64b4594b2627b6c9a2", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "c37a13c06034a0f9cf4706b5002bc573dc0edc786ce04a64b4594b2627b6c9a2", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "1af1abdc7ce6d914d33bb68f4e06633f93e669e6bf10dbd85572d2038cc9ad1d", +"TT_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "c5aa821bb94f9682fd044403c6bd9e8087b89ce6cd94f15365240dfb9850bbd7", +"TT_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "82e017fcfe4529e770b15009e7c42e6d3f0dfdcee32f1534b94906d6d9054713", +"TT_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "f997e1b19d6809cbfae44101d1210254dc8a2e06d0613d2e77bb25a6f8446871", +"TT_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "af5a40d7062ad283eaeb5a48755bafa6e45335d2a7c61ea09e2666f541c0b7ad", +"TT_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "7ffff0268162fb755cd37196bd0e20113b8cea481f9296c3e2c6e37539408679", +"TT_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "fa41c0b1b2549e8b6af872f7350ee76c75bc1593865db10c2b64cdd169e2a557", +"TT_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "65b839082fd78a4a74bf993d826bc5c540e087b10bdcf707fd387649134934ed", +"TT_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "f3789098fde090fbe34bc11d718635e1754cb9083b8e8588e54c76bc6d26add9", +"TT_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "011023ddb55c30c946ce889b328554e330233a8dc812fa9ee03a0a1433ba5c6e", +"TT_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "1687572b94aaf20ebf302cb601ce9b83dcc0af2f2ba294b371185ea69a0d4870", +"TT_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "da4fea1a539bf06ad0d43a2161b853c34f05f48238ba9e2bbf9da9b43d796935", +"TT_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "22efc6fc9493eb1749208fee7afe58d1f1bca44becb169264dc318601ed3386b", +"TT_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "17116e7a1601b180512538c7d8b6b1446188a0fb05d03bb8e79c2b64ddcebfc6", +"TT_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "f334215576df8e0b5181e41aeaf616b4b6c67cdf8d389ea5ea355266a99665d2", +"TT_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "62104fa852dfecc0c3c7e3366322a408395f3c835ced91b7c5b49609546bd670", +"TT_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "b41a060b928166ab892c1e4a1911cdcd359837bb146ab2553561608648856467", +"TT_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "84f519498313167b2764061e32b76c1dc072ffdd9fe014bd9ae083cee81d94dd", +"TT_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "b7a513997bff57c698f10ed76c13b6858787989404a1645b7276a2373d1f8f51", +"TT_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "da4fea1a539bf06ad0d43a2161b853c34f05f48238ba9e2bbf9da9b43d796935", +"TT_cs_ethereum-test_signtx.py::test_data_streaming": "42da29ac224c9dcee3ab781b2fd096d36d750c559b166a13b8f15807604db1f0", +"TT_cs_ethereum-test_signtx.py::test_sanity_checks": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "e06d2d7985f9442095de65fc6cb5751b6f1233c39cfe05695dd05b5ccc590baa", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "d5abb9293b45fc7ca0bfdbdff5c8d58b5c77f0536a967d31bf2ec9002994ba43", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "29cbb64aa5ac2aa9b4877ca5025545c4603ed3dcbc3d8550fc3a97d71e030b70", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "2f1285729e912b340e785d673cb4f77f106445ef121c878e6f4fa1adf0c5fca3", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "29cbb64aa5ac2aa9b4877ca5025545c4603ed3dcbc3d8550fc3a97d71e030b70", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "e06d2d7985f9442095de65fc6cb5751b6f1233c39cfe05695dd05b5ccc590baa", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "e06d2d7985f9442095de65fc6cb5751b6f1233c39cfe05695dd05b5ccc590baa", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "35d51899665a75826a4872eec1113351e243f914607cf67b7514e8057bf8f909", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "35d51899665a75826a4872eec1113351e243f914607cf67b7514e8057bf8f909", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "e06d2d7985f9442095de65fc6cb5751b6f1233c39cfe05695dd05b5ccc590baa", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "e06d2d7985f9442095de65fc6cb5751b6f1233c39cfe05695dd05b5ccc590baa", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "b2bbb49601c97055cab36fe29bad531783fa827fdd5b9a12e40d30e78b58773a", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "d3cfec31107f24b9ceda2f902f00c4c6ea5f69d5d93a9e251c78b8d2a3dc0fe6", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "853f398238302105bdd3d16b5910f380c35f843d7f2a58fe354b80be7d16ceab", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "e06d2d7985f9442095de65fc6cb5751b6f1233c39cfe05695dd05b5ccc590baa", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "e06d2d7985f9442095de65fc6cb5751b6f1233c39cfe05695dd05b5ccc590baa", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "e06d2d7985f9442095de65fc6cb5751b6f1233c39cfe05695dd05b5ccc590baa", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "156bbbb3d4d16a52c57b917b8c50812852ef5c0fbb2577d9ac5a31151208cf00", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "2aaef798a6053fb140d029a2dac4548211bc285955de76ca215c91073376ba38", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "61048e5abb9686ba6043b66e00c9c0aa274f225b893317f197660d1c3236f780", +"TT_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9b4e32703a25b82be151a57e6fe1f517fd57f7b169305a526d86e8f57e51955d", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "4415e1a1111cf599e91bb73aa4f58daaae59d841599c6238a113d5290ee357ff", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "ee30d46f1c99a92add8ee2ff793ab544a5e1c334d1bb78ec3d807d90a186676e", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "d03bcad72fee88daae8c23c9193e1a7070e76cc0ec7b0e1704512918e859a2a4", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "53369ba41d32cb23f2232fff562eadb429cb1e635afffcc029303784e7f4906c", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "d03bcad72fee88daae8c23c9193e1a7070e76cc0ec7b0e1704512918e859a2a4", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "4415e1a1111cf599e91bb73aa4f58daaae59d841599c6238a113d5290ee357ff", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "4415e1a1111cf599e91bb73aa4f58daaae59d841599c6238a113d5290ee357ff", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "1f9788db850c39e4c13e6c755d9a463df9a9b3483f34df099ed6cf9331328597", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "1f9788db850c39e4c13e6c755d9a463df9a9b3483f34df099ed6cf9331328597", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "4415e1a1111cf599e91bb73aa4f58daaae59d841599c6238a113d5290ee357ff", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "4415e1a1111cf599e91bb73aa4f58daaae59d841599c6238a113d5290ee357ff", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "04a63a9760ce23b6ecc682406795b4d9816c7d84baf5c0ceb2848814d475e1cc", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "e20ece486acb4b64f023f34693289f5d8c2a9e83479706c8c8682f2e06c2b20e", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "335d7d0578a3cd79c9f354b0438ef21a39bc9672252b2374ebbc505a0eff3fa0", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "4415e1a1111cf599e91bb73aa4f58daaae59d841599c6238a113d5290ee357ff", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "4415e1a1111cf599e91bb73aa4f58daaae59d841599c6238a113d5290ee357ff", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "4415e1a1111cf599e91bb73aa4f58daaae59d841599c6238a113d5290ee357ff", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "156bbbb3d4d16a52c57b917b8c50812852ef5c0fbb2577d9ac5a31151208cf00", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "abf9bb8e41f6b93c42f7309b5f2ddc21621480cbd68489ead03b67aca934bf91", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "a90682caaa4daad7c80764c03cd178021e520bb0d4d985d7368c669ff636a6c6", +"TT_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "3a6d601d88913ef514ad30eb212bdd280bb92e3f21a64a2b4d756da1a83ab8d8", +"TT_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "c7afd3e5dd9dac7d25617956c6b6ceb77e37a9abac55b762ad7a57ca06303400", +"TT_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "fb6284b091c1aa137f66048d70e018d21ccd26b9314ff95a2a4d779d82335c17", +"TT_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "c8fecb2bb5ffda9d896aef28f928eabcaf1e2029a98510b98f4087569697923f", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "2aaef798a6053fb140d029a2dac4548211bc285955de76ca215c91073376ba38", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "b2bbb49601c97055cab36fe29bad531783fa827fdd5b9a12e40d30e78b58773a", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ef32521dcb8dbf991dcdb3abbcf5124a0bd980b88fa7915c33cda838cb32bb0b", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "853f398238302105bdd3d16b5910f380c35f843d7f2a58fe354b80be7d16ceab", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "379dc7c2468d2a47e70699b408f97c7bbd6c916a7c2374918519d41672e0c318", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "ef2887df076117cdbe6df89983314be3d077e39f5ca77e08b75330b11580dfb4", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "2aaef798a6053fb140d029a2dac4548211bc285955de76ca215c91073376ba38", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "abf9bb8e41f6b93c42f7309b5f2ddc21621480cbd68489ead03b67aca934bf91", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "04a63a9760ce23b6ecc682406795b4d9816c7d84baf5c0ceb2848814d475e1cc", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "48d615ab22741c19a2ff2fe6f9fd038e58c734b09538f3df4b917c040771e4e5", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "335d7d0578a3cd79c9f354b0438ef21a39bc9672252b2374ebbc505a0eff3fa0", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "69aae117327e9351b866a22721be235df6d2ffac3dfe935b8a8073de0213e5e9", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "fff9602207754db3f936c3cf7d714e33cb8a67db8b56d4a3b3254fbc34769628", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "abf9bb8e41f6b93c42f7309b5f2ddc21621480cbd68489ead03b67aca934bf91", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a25a753c4f8b7390c8ddd05b908060d76a5e6d133501e4dfb365d71161471cbd", +"TT_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a25a753c4f8b7390c8ddd05b908060d76a5e6d133501e4dfb365d71161471cbd", +"TT_cs_ethereum-test_signtx.py::test_signtx_fee_info": "abdb860b961d2cd894b9eead65415bf169f1ae5a63a9fc8b61e9d284555c9d58", +"TT_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "07fb847c547929a0a09726e93c242a6afb2766cf2b5fa5c5b0f01d043587da9c", +"TT_cs_misc-test_cosi.py::test_cosi_different_key": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_misc-test_cosi.py::test_cosi_nonce": "7568dc4699d4bb9d58fe5f888e3ba5deddb4b9505c449f0a4b61b5c8814a3854", +"TT_cs_misc-test_cosi.py::test_cosi_pubkey": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_misc-test_cosi.py::test_cosi_sign1": "7568dc4699d4bb9d58fe5f888e3ba5deddb4b9505c449f0a4b61b5c8814a3854", +"TT_cs_misc-test_cosi.py::test_cosi_sign2": "14163056229dee9aa2d605acfac63d808858ca7ea702b274008edc9237037256", +"TT_cs_misc-test_cosi.py::test_cosi_sign3": "605ec97da32399beb8bae0b17c1e16ebc3fa1e8391fedc94f8d7b563bed2683c", +"TT_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_misc-test_cosi.py::test_invalid_path[m-1]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "9c894c5b568d42ae0bed4ebbca98c8af7acb9fa0e7d385f19ed67cb007d99805", +"TT_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "c7490a096029a41d407bb1336e8c3608d6e005623cb002a12cc0d078d7ce2c46", +"TT_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "30adcf93cd8622c4f91d8ae671ade1ad4940ef461940ea29c0e6aa5d93f230ab", +"TT_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "6993328130b45dc39a9455b56d02671edddd36986245aa7ebd79dcadd812d82b", +"TT_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "0a327faa01a30d835304b2d60b6c7c54ee4573b057a20175014a374b9a10940f", +"TT_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "d02970067157c4e2fde8ab2bde360f087627ea680758c541a0966de864305cb2", +"TT_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "8d2d8d1f2fabbb7d75a504991e4537bd2707c08f81fa4fe34200a5d8c5ca72da", +"TT_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a27d17f68f537c94bca6a94b265a0870b5c98c2f61026fa75fc1091dd64ee02c", +"TT_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "dd132849a3e3f84b5177334bb7fe899de1139505752e5f84e452d019cc4fb944", +"TT_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "cac4e0e83b0aa3c57d8bf6a412022863e2e8f0f645ae307218f5a0ed39fdbdb4", +"TT_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "9de565736028eb112aac6e2fa196c4807d1a0426c6c780ae8dc141981e1ed1c2", +"TT_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "34b093e68606a36268d953d268dd794c1fef32c09c8427848b5f0ac37b8875da", +"TT_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "247b151d18cc492ace1d68972cf3cb082582a3b2261c58666427a4e929d0a2cc", +"TT_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "951c738ac7c3889788fdeea6ec63d8dbd3c00ea87d47faea0497bd93868c7435", +"TT_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "0ac342e5b14f02c0c34ba66962bd8557eabc59af2deceaefb6be644be00f84f1", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[128]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[129]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[16]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[17]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[1]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[20]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[21]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[256]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[257]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[32]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[33]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[3]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[4]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[512]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[513]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[5]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[64]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[65]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[8]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_getentropy.py::test_entropy[9]": "c6b07b93d190f0627a1f5737307e8759565842aefce888b59206e2d126c84550", +"TT_cs_misc-test_msg_signidentity.py::test_sign": "cc0fae3b5b4ce8a38c069b9506f6bb38cf95b935b5639f98dd99f3e53f760447", +"TT_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "107e49aa8a36f5efa2ca2b3da28b155c6623c139f8bb3b56d99d53326afc4fdd", +"TT_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "beb6e243b7a3efe066dbac8572a0e3cea708645919e7a10d9aadff25cd235fd4", +"TT_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "092d54a31355dd6c70ad3a20b94a3327505294e62f5f50599ce53d53ecccaf1d", +"TT_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "4d04e9a9366b9a0d8729a60790b65f1c7af3db625335d93c52620a527cb2c3a7", +"TT_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "20acbaca1efb83a0962b7debab05045160eb3db362f88ad3e397dde3d0d73e49", +"TT_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "63eb35ed9bb2dd63d111d67b100767976a46141a75c000b2e18f3b97d10ec99e", +"TT_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "4c32aa45261bb4f7fb8a03d0adc8f6bb80d1fa47df8513aaa34973bae6aac128", +"TT_cs_nem-test_getaddress.py::test_nem_getaddress[False]": "b103a67454fbb5309dc856a94da72e9ecefc970466119f8ba4c931d73403f793", +"TT_cs_nem-test_getaddress.py::test_nem_getaddress[True]": "d0fdfe15ec5f5ceccb97331fe2d46f055ef909336ef92a9af43e23958205faf2", +"TT_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "5074834e907e88e96362a202aea6b5b78b7b3a574baf98d7117911fe51adf585", +"TT_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "22966c9978c630f7a3af4c02cbb961a66530f9d28261f7dae09de7140b703b66", +"TT_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "9124116a96d03b899cff1a6b37ee44cdd50ec77cc52dab6cc61810455ddddfca", +"TT_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "d87cb8b60406bcb3a12bd3e00c813d283531b04697628b95e17394ad532ad995", +"TT_cs_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "e4c875c5510e02527786252832606f9a28f2d233795c1e4f281a755706d552d2", +"TT_cs_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "4d1b3354bf1e40f5b5ae61d7a80d03cc283f6d2cf5448a7140bb9c4e01b5ecef", +"TT_cs_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "89c0b1375a2b0b8dca4b4c386cd9222f55aa648d27ffeb39279ec4f0343a3e99", +"TT_cs_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "017de9a38ec7eefeb30b74f2f887367ade9d51a041f9bc6de2007d4c41d96b4f", +"TT_cs_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "c61be26e4e4c94b1ff471d95f21004c0f723cc59d03c250ac96463a19e0ca3b8", +"TT_cs_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "44d177561970efab7b8e0cacc736880d570c1457afb9aea6aeac37be5543c9a8", +"TT_cs_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "9b5d5effa5abe1fa9acb3c8f8fcd1193bc863e22ea882db688a45852ac49183c", +"TT_cs_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "aaddf04bced540328450c18945bb738b05f2ebd83f439e01d7f60650ddfddb61", +"TT_cs_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "184dd861f4c9455c407de683402874d66f1329328b07d11a114d010950747ed3", +"TT_cs_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "0788afdd7c42c64957958d137da843ed0e6edcf3f2ad85fdecb1a62f42145f7d", +"TT_cs_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "d43835c316dd970b7b63467ee59544258d282e33d39cddcb61ad9e1b3750fffd", +"TT_cs_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "d2b15a925e2ba15254fcb37561994f4fe676ea33e592361bf7b018afa8a39408", +"TT_cs_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "79985502cfd311bb67783383d7fe79889ee8ac9c0ebbfda9ea5a43254ec979e9", +"TT_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "fc9f297bfa56f0d00357e3973920b200d6a3b2ed6e1f8397f222010354e19711", +"TT_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f76644a9714836f2226f3f1139acfb68411710b617e3d14fbeff4b54b08cd4af", +"TT_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "d8e63625bd390871181da7a8105832ed40e722cf4e223e852f3a6b93115d32dd", +"TT_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"TT_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "dcbd002d65bb1fe8e22158f7aecd2bc17c9b02b1e6f6f7b17412888ca74b5f84", +"TT_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9146de4922e4010085488064fa2f4cbf0b248ba1936dab663dc79cf53d85d92b", +"TT_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "66c8f5eb1acbdb4d3db244b6d31efd2d7e3fd62b79fde17e32b78abec7a68b92", +"TT_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2669e0c58fd853a584af3c0cee43fb1340ebc8a556f1aaf536e274af3e33c3ec", +"TT_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "86102b15b448b3cd3bf31ca3271ca380b3c465794e6d3a54955c5d0542976eca", +"TT_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "02b4fad0df1caba42d3d855a3616446507d3abc799917c09ba78b3ebd27615f5", +"TT_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "2e314d53a8e7e67f9666529e0e987e851c8fa230cbb4ca9b988345203de0fdb1", +"TT_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "7bfe3260a44c90c7f38480590fa0de982fbeb9f9d48125aa79ca8feca914ab5e", +"TT_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "5fd29e241bbded3d0ac3ce7bf953ca515ab77ef410a356328b899da1c47c959c", +"TT_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "c00a38573e199bbc17a0d23aa56d92967738990fcedbec89fb7bf24dad4ba04b", +"TT_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "126657a53d25d4bdfcfd320510ddfe3d03c83dde47174221fb96c5f9bda30056", +"TT_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "74763dc6de38cfe2b365d80ad6b2cb28b08a93c17110e475d073d177bae288a3", +"TT_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "423de24cc262db7357516f60ab1bcf402eb33f8933837816354fd63c7941e0a3", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2c6e22bc41d4816a848970269ff34092d9c9c6a199d4d2c3481911e1adb8b467", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "66c8f5eb1acbdb4d3db244b6d31efd2d7e3fd62b79fde17e32b78abec7a68b92", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7947fffc6bab044b011a52207daaa508f649493d4c533f8d07c7f7c023e28b90", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "addc15cf99f4d90583f720581ba57d497e58c67f391b6507b8d72687f2823e6a", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "62df6b57adb2c61d05ea520b0c6d4f8c21cea7e66717f1c4e941312f09d4ef41", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "7101927e7e9b71d7f8b8c297c97b4855685135e69760d166a0ce180b61ee1076", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d344ba0580a0c26179b078c9e6a36661dff58fbd388d2a3dd198f8e332198baa", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "c87b040b78088479f204bf9518fc10e709ec4b3e3be99ef7896da850e3dfebd1", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "a1d6a4cb44167ff2969d94df792f37bc4455356f116b3b9d1fe8f7ca2606a397", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "fbbf9e3de77d943edeeb789454e627aeb17600d08d5bf6fad92484f98ca72383", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d980669d6f407a7966d3bf9f52f838c5b26e80eb11492f2894793aff0ae1502f", +"TT_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "051deae14a28377b4cffd9e6ab8d784bc26db5493b896880f31b420eb986b702", +"TT_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0c7e863bcbb109a4f1480b6c94565f01dc7fc951fd8a93d2602c9ea9ef3fe509", +"TT_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "2cb58e0a206bb6e9b183beb9677b52065292f5a4de826b87f5ef983fc13e23d9", +"TT_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "fd782e264f6b374ddbc965668c85eb53925eea8398a90061d20d4f164e5b0eba", +"TT_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "2a0a29f3f7f438ede1ef29bb0c8f250f7b5afa96169e4b9ff3fc271afcf5b3d5", +"TT_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "4768c64d85e230edb952f99639e7aa02f28d096d24d72fcdf58082f5556fc171", +"TT_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "47f1cf379df13cbf13b840dd61b582fdb8651e0cea42a485f8d036bc92bb8a79", +"TT_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "a45c3abbc71e0e1228a5b1b3b2a9673cf65caac9b4907f0184b4f83fdd320fbe", +"TT_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "635aa94e98d0366c92947de4505d7b0410aeb0ed26aa28e5355f9d0758ad2458", +"TT_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "82a78a114a3ed30481e74bc17cb162facf18720f12d5706052ed9e5d7ddc1364", +"TT_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5848e1d6a46bbcc514f5a11fa61b8a2585546d946d77356b56175e29e076fdab", +"TT_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "3c5770400263447833e2d7804534b0873c7953d3d7fdd3db17971e5d9ab2fd11", +"TT_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "cff3c112518fc95f3dda6ea2a5fa72bf0084d1b70c6f0d8c56983d5d1ff245ee", +"TT_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "03d19e578adaaf57f79f31193387deb5c5e26ff5726905f2b33e749cf314f832", +"TT_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "592ee5f6eea09ebaa98c7257f5f138946d0bf3da4a88cba4bb02fc4c2616d868", +"TT_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e52a74600f353db71e520815cec9275b7d0d75f724388a860f569da20f36be6b", +"TT_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3a94e3fa46eef790ac09dfca7d43357c8c851778f4d92ba3ee029a65c51a62a9", +"TT_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d0cedb974a47d3cfb1deb0f925664b56cdf5421fdccb18112dc9a784e6e76411", +"TT_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "bb156e784d795da9b0653f6c44b558bde1d055685bf55c0ee9a33cbfaee90622", +"TT_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "90814b220996f4efa1ac64e7650118ab9e8ca014901759e0b94f454555c00625", +"TT_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "6f8d6ecedf7eed64c1f5b131dc7d5c861c11834a5cd67e24885ac2a21e8be230", +"TT_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "04b4ca2f9d259d04ee29e7dcdbf5b8ef99c3657174fda834ea1d92f8d8b9089c", +"TT_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "4764059a957a6d81b3212e58c2d42980025d4ff21cd56c3f388cc49394d6de4e", +"TT_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "13ec2e2067a281d64d382f98e5593c877d96b3a388267d67e3646974d485187b", +"TT_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "b5822bf30113abf509eaa29fc9a01bee06536f1d389dae8162806c98b33c190a", +"TT_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "a4311ee86bbea85d24392d4fc0a024382b7f376e0c0284ab776d6e087f83d035", +"TT_cs_ripple-test_get_address.py::test_ripple_get_address_other": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "c78a37af15c7d114400862a4e2b2ff05fe735151e7fa85d6147bca35cf87d113", +"TT_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "f94011a17f81219f349329c9e6aaf20edeb32e873e9f83d6c55bcb7deab4ba3e", +"TT_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bf2d6d6cb693a1692f63fcccd6e0d956c44a2f1412218c79b26f9bcf7fd7e78b", +"TT_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "f2ae634d78b2ba219a7cb990d552085a8a2c392a05b0e64249c54dd872d0f7d4", +"TT_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "94b3ad428ef44cd7e4008dcb934edc556878ec7a73a95e170cf8060555c2b9f2", +"TT_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e295218bd7696164f71923471349ed75a3119670bcf54bb9405b383d504e33db", +"TT_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "a0e35cf5a1cbe9f298c8ef4e6ce24c3b8895ebf462a88b9e0242c41f182dfe25", +"TT_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "5ef18676eca613a837b5cf2e1077606dc9e119d70f08318725020e43a9433246", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "794bd5693bf9b6335d68d1bf614db53913e500fe80282be5e538fcb75774d5c0", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "70a8b68682ef120c5ff506fb8df54bba8d3aa1dd2e403bfe2df570fe486c06c4", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "1106ce96ef81aa3bcd566afcfc3d825f82ca417bc75346371972ac55a59f90a3", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "38a228d748ba8b53dd9e0b749b94c3d1011cee58e51d834fc37cf0d29c1d163f", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "16ce44c919db803982e1c867c7bba6aa39e4746a6a9fd144c6e0d1452b1731ae", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "1c23add81d0127dd7593a7e61ca43fef4f4e19a9f00b85605a26f2a2ea73ef72", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "c4cfe1f84dc99372c35b9c6675e1b211ab86a3358b37f114f1f76c38366e4f28", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "b8933fde38277204ee308290ed0bfa4bf3fd8089f1c9993aeb0c09a86a6cd659", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "d4ced13050960a4dcde363d4f08037520bcd76f5b5b9549b3e585c0216a664c6", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "6a1961a41e2c2ce21686226a2f1441b2e5a8fcbeb85fb6caefda4d19415422e2", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "c581e639c58c391f57feba42152a5fad2268af121279708a76ca16603262b949", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "25fed7297d1f86ed1b592ab6c0d3fd00cbe042c0fccdcccb4b345386bf28b62d", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "b3aef2a112efa815534a7aa383428871bb8dbb3ada57a78ea24ae5378cbb0292", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "590693e7b30263c27a9255dd08fbc2a69b621d2d67d26f255b8a03060e3dcf4a", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "fc3d01bd7e19ecbdb25b44a5dc7d68c25390de626fb27c6c98421491aedff2a6", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "bac39533fe51d9b4a25d192e9170a3e8b3aff9f9465e0a2cc8517f9e51b11e99", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "34519b0c5d227f1c3e1854338a0f55c2e65c460aabc86bc51f8ebc9530a11c2d", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "bc0d302c97dd936df1ca3b400281f929163f796b210a0fa8c86140941c8afd9e", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "a2e9d7323dedf8e38ed29a9e390722dc50abb6717f64c0c6576776859580390b", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "684ec9b4024241f1125ca20d1aa04525df7bb4f735cdd9ae5594eaf873f20564", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "7139400cb020b3d435d7c9b3a3ae45df703d234fc6a10e7274bc26430811701d", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "4d3563511cbc745e44747ed4880a96830782698ed6cbaaea99eadc5cfa9d32fa", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "a6d6e2740900be77c578cc452f120bd9d2d0bfa202ec7fd869514ddfd4da1b17", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "dc6da4551216822bf01202c555cac33fa0f6ee31d48786d2ce7c6d9b6c19025a", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "79da24fee0c6e45f1b2f346af2ce30e23238c557a7007bcd43f8c2ecbed08d49", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7a7e86f822ed064bff09de6396eaa4cb1af92a50190dac27b6b5802739b1e1e6", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "d2f3f87f5c998641275aa5c5b4289d4b149f34a386aa71a7d45ffc99e4e301f7", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4baf3462652bb5cf11197006167637894a5fa7c03f10e70e581eef2e2f2a5870", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "703f16972938dd9a0517446f605129c464f1500a7c4ef8333c6be1bd1d88dc00", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "7b6d206735be11996e876e0ca6a48815abbe6826ced00cefa3d2b155b976ddc9", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "2c5007b2690edd478091c8ec68fb351a1d26be18de15d4616eaab219421b403d", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "23fa211ce7af92df3a91da73fdfe5d39b9a94e6b8f186fcac418dd7021ba0419", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "8d6455caede842099bc0699955a9df3cb1bc2686793d32d5ad6d19379491caa7", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "fb76b76c69f5d34a23fd589d96f6b7e34e34ed701c43336d012519301bf4f104", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "05bed094ca72efd8269abb681531c62e21e18616f7bd2ec174dd9bc29574f3a5", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "cdc24dc72c6b2b59b0af6eaf6891e498be125bc1fc0dd1080a76634e01b50f59", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "095ee704873c76c298d3da9c48e0e578809948a3b8f56754b1359ef0ecfc2ae1", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "89c537f9098ea12b9ed97fff1563333c8b84b81a366c1176e7373286a120f9f3", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "561e71cf4437dd9be8243b4816368c37cbce31081546e70dc23b8ec7c9f7f44a", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "193a5e620c2cb020fe02e0ab16df59225872f2f8138da5ee9462f07fa11e0042", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "f9317587178dfc26ee8a4358d0dbf6e5476ff90992f928a9aaac0facd4e008a3", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "823461d696aa2b662149b9994675b57bdc91af006a61526f40948333c7d18b26", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "c9451e16923e91d0ca1d48de3d5287753db066949183f2fe24b34d15773f0111", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7884243e22eb818823105cd3c862f71cdbf9c949144d8b218957a8e5498d43a3", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "0bef889597b21a71309c286bf781748d8207f3c16007b347ee30590f20d79dbc", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "6c350a72b7a7c71eec36c741ad88ee3f6315f3cd1e557e6c63b81c4d33ef4381", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "85b1a93196dc1d295c6492e4578c9de65acf2400f72c9086af4e3d35b5d536c4", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "41e866349d788678c9ffa6b8051cebf3525d0522e89addee6c14a5868954c32d", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "d7e336ad07fe2bbdec90af5e7ad2ff027fad47889163f1332f59ef03522d9759", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "e4fd00cb2e0b6c0da2b81f13fb37f01602799ec1f798fef7ea9c2d9cf1d8963e", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "b9cf8cbfc970e931a0921d480964c894b89808d717531d5fb46e79a659f9f20e", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "4d37ce0b0d7a506e33410a38b5bd9ecd4575ffce3b98aad3c6b0a031bc9ae30c", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "a110fa64ea2f26a393a988ee4e86b1aa482a19d8e5d8e8f57f003dfcca111973", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "89e57ac1056b987b4519599008b91b6f0051a852e9d30dec8f4e67af5f2e98ca", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "cfd701064a12757323e8e88bba643f70135ed4f29622aabf21b99288ce8897b1", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "47ab3ffcb5ae750089b2f7e10b9fbd6d03b340079c948358b3537cb9bcc45c20", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "18f90ffb6b64159ed3ab2fb0e968a5fb09a817a87fdb4807eccee15edaae6448", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "6497c37b56a262c33d6d085a93157e2db8c7427ea430c5fab8674a53227c4243", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "dc6da4551216822bf01202c555cac33fa0f6ee31d48786d2ce7c6d9b6c19025a", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "c860de3f3e5579a7082cba35588d3dbfff1eb866fa66ba7555b283a016c15145", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "4208d3f7579c61d701cefcf79268c7be91ea45e23bd96c4719cf784273bf5978", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "2ead89ae61b22d0439790a6bd33a4ac9548de8e3503f78fc4c626f520bfc388d", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "3c1b9fa02e26f8cfb4ed63116a90e4de3270dcc00b9e7ccc11a306d11c59bdda", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "587f1be1c6eab25c8532dc524736631777bdc21a575f10ca9dfa9aec2d7ab7ed", +"TT_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "0c92d3aed7abb14a93cc1e6dec8de82d394488eb707a47ba890df2fd91f7fb01", +"TT_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "aa676e658e8492fd07c964b2dbc358c2d8232db6a102264a09a3798aed14780f", +"TT_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "a521b3326a52a694dbfa86d04c57558523cc672788ed8deb34f11363fe421269", +"TT_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "99d6bc426ca7cf491421c4dc421ac7e751c224b23c46ebf1a4999213e8b27ab0", +"TT_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "cefa23d955959bd41389e9dc00f21105be95899041eb550d7a021966b9706fcd", +"TT_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "268e80c86ede8c2231ddedbabb7ce42e91fd9813cf853ce30a189955f2952b4b", +"TT_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "b7f674cf38b7254a9caee8ad446cb852baf9f1430d9af3a45bccd7a5b90d35aa", +"TT_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "d4889a51dba970d538af0b8947f065cad6e7a3239db9d7499c400ec1989b42c9", +"TT_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "36c20af1210fcad9dd3dfd6761720d478be051ad1ebd90e0d2b62764138512e7", +"TT_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "543cafeb784a40034831b2157a3d8f16398e156a61b372bd15152d2101453063", +"TT_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "26596ecbb17947ca745503738e72751d44d8d46b9966c276c78fdcc10109b9e9", +"TT_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "cb055e3a293c1054eea47493977eab56e470868025f5468a58686d3c7917dba0", +"TT_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "d222264c3eee1e7b257033b1fd5a77d1af7225c07101ad018fc8574bfc6cb2b4", +"TT_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "1f5c2d0e8e838410681e1ee66474b4466392fead78e23f700005ff8999c7211e", +"TT_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "ba1af17da17d1d9996648ecda3ced70eb101047ee82352c3c6b8ee67d58754f2", +"TT_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "4f1e29b3817da88d6499f1c0b6d65c33ae8966c1d0177f652537f4742b638687", +"TT_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "80f273bb82850de11ebecf033c06c5fa3c40f105f371c014e7f2eec547eadcf6", +"TT_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "80f2d8d503acc90e1bfea554e8533d708f287ef3ddd7794852a51c6728eca53d", +"TT_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "dbb864817046818bc6d32c2d411c25f13b1e45b550ec135a58db24f51d9efc1d", +"TT_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3d215e8680766dc72134555821ec3479a232c06a5effeb13ba5a58568598b034", +"TT_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "1923bff547912d3dea6744d6c5a3879c16708b799923f6bf0759a6c999fc90b8", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ce2b75f6431d6b1f796a275b82e8169c390bf5ce8fe2eb6e9797e8d93d4baf37", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "ca8963cd4735fb9f389ed9c8eba44b0a21af7ee645894d5647ba900d8bb2c188", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "8949ef23e837efcb5efbd7244de396d5e6e1c07aeea9aeeea08ae0fcf21f256a", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "ae5585d05fffb5747010ec98e7b35e414c9ba2cee64bd29cc7835f84afedd1d6", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "c823b425ca0b8b744729e2d3efc8e3f2247f7fe15d0f249c1e506d01bc7fc8bb", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "40127c08d83f3e8253c7721f788af104d860cfa3e9f338988406c5a5f50f926b", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "334503effab4ed56258c0f0eec5996dd7e5ade628829ebf103ad80fe44c09037", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "d0de59a00eb0c6f45edfee993beb8689bbc9da0b9593d11579925891f46f637f", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "abc70286f674d9d054d6d20c7150edb2ab447ca00d74b8664ac73d27b7e16bca", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "0751b0a46ca02be0850a087e3f58e06e4648ea5718b2c2c5068ceee5944b08da", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "7b657ee1d12288186b1de1a60f0f3779edf07a245c462534ecbcd2c966c5336e", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "86ef41c12f32dc317d818c6b41dc894069f95dbc6d9da4ce361699ccd947c83c", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "75f220234e7aac1bc86ca4c815695f5c1db244e7a537d573f0f9f150c4ee335c", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "737cb6ed03793eef4cc6faddfc11892abaa82aacb4ab90312ea5d1aef3832201", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "d2e942b54397b175646eb877d1b9f8f4c986d06a3f35057e0c17ba529f2a66c3", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "e28c073f7c09f630c281b821d3b67296653c73a57b918f5de8c3a9e90e77502b", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "2dab594e256b4d19f98f1307108e87c3f0efba2c1d3fb824cddf9e67baea073e", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "b845ef69ce9d96cc7d1f303901ece69f8782127506def3cac015202660a5890c", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "797fbc6724efab1cb1703516cc2316edb7f6a616aa3dac8067855e9f900024b1", +"TT_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "874d52e7f58c203ab019511c40fe230efe4c37ceb9ca12c39a493fe05d59dddf", +"TT_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "fbd082bda538fe5f8f104c085f45b27a4f60821179878dcd729663b256dc4186", +"TT_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "f07ffed7761dc20fb7557213c48f0112ac51750b54a912212d81d565f5708db1", +"TT_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "ade0ea9a4b1ca72b36c740f79b169caba8ba9c48192aa3f5d49b5367e398efd3", +"TT_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "5a99147ecd78afdbac8da6ff5e114275e41b2f81bb94dae1958359bed08d6d5c", +"TT_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "b0dfd003728ba247543e60e9e02e34e290f86c2f66fdbf1e9e627138e706385b", +"TT_cs_stellar-test_stellar.py::test_sign_tx[source_account]": "927449d785d020793d17a0f061be138f64a4e1c6ed1a9b9ec05629e72842e1cb", +"TT_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "5a74a26b9a4c160a9dc11b5b1093d37cd8529c234d43daa4a23df5cad41f2a13", +"TT_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "e2f0a887e07ef47ab2a096a274a250fac1d7a508531746a9ffebe93f32d66c92", +"TT_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "1cac48a0a2b754ad2329724216f0b96862e15c2ae7b4a897afea73821a142243", +"TT_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "2dab594e256b4d19f98f1307108e87c3f0efba2c1d3fb824cddf9e67baea073e", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay": "d8c3c3be7a7405d9011fdaacdfc80bc1952f6a7d8a1105748917d38d372d8dcb", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "b5a62384cb7191d76f1a33b653ae1491788dbc611f484742707c95602298af87", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "b5a62384cb7191d76f1a33b653ae1491788dbc611f484742707c95602298af87", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "b5a62384cb7191d76f1a33b653ae1491788dbc611f484742707c95602298af87", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "b5a62384cb7191d76f1a33b653ae1491788dbc611f484742707c95602298af87", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "b5a62384cb7191d76f1a33b653ae1491788dbc611f484742707c95602298af87", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0185cd7b6bbd52b24ec68d65d0cdb6ef6a03022a77b09eaabd29a82c9b3b6921", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "147079222ed3c53b518e184d50ecb4d4c67277ba07375542fac86058e65b5188", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "5e56074a8da192f2bb4a8e75135d34eb634053efc0fba4b3ad68f69ac7326971", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "81d23eff1b5298775ea62deaefb1c457105685abe064b46165712de45e749fd6", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "818c4a06fb6eb7b3da254c0296ac87ece331fd743520f26f3234c52a915ece25", +"TT_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "d2bd7ea1a12b7d1994b799d6892da8e11900fba63f9fd089e66bc508d3a2d1cb", +"TT_cs_test_autolock.py::test_autolock_cancels_ui": "8280fbcab8cf3881163c950627eabe9aee6fc3293f081f212d6e0ac7b862fc48", +"TT_cs_test_autolock.py::test_autolock_default_value": "c0e766094ced5d92e93b13549efea2b4eeaaf1527288224c1a55b3e5b5b42c40", +"TT_cs_test_autolock.py::test_autolock_ignores_getaddress": "fe672ad3637173221e891fd828fe4363e67198f9a7917890663afce00d11ab6b", +"TT_cs_test_autolock.py::test_autolock_ignores_initialize": "fe672ad3637173221e891fd828fe4363e67198f9a7917890663afce00d11ab6b", +"TT_cs_test_basic.py::test_device_id_different": "797083da15c42b7da1b2f4b4e9c86384aaf495cfd2148ae7af4f7db92621e2f8", +"TT_cs_test_basic.py::test_device_id_same": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_basic.py::test_features": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_basic.py::test_ping": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_busy_state.py::test_busy_expiry": "08b7309c3f4106c28dbb2fb13348b48734bf35be678836a82c4ad2011e7fec71", +"TT_cs_test_busy_state.py::test_busy_state": "7c9a754b51f21f04a4c302d64dc9143022b8aa7afdf3d036aa8e00ecc5f5d358", +"TT_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "62ee1180cb1d3b6ecb3c6318455b59deaed2820458ead2ef6184807e63c9e19d", +"TT_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "62ee1180cb1d3b6ecb3c6318455b59deaed2820458ead2ef6184807e63c9e19d", +"TT_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "62ee1180cb1d3b6ecb3c6318455b59deaed2820458ead2ef6184807e63c9e19d", +"TT_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "62ee1180cb1d3b6ecb3c6318455b59deaed2820458ead2ef6184807e63c9e19d", +"TT_cs_test_cancel.py::test_cancel_on_paginated": "665a641f0247713734e013e9cac90052d2525fced980f0d082301323a919765f", +"TT_cs_test_debuglink.py::test_softlock_instability": "b9e47d16876c5956822fcfce49ff2d27b276170cce97b3fbde4752118e2c2c34", +"TT_cs_test_firmware_hash.py::test_firmware_hash_emu": "bb32ed87d7216bd017cb03cb857435f083bcea192d9df180a3654ba594885326", +"TT_cs_test_firmware_hash.py::test_firmware_hash_hw": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_language.py::test_change_language_errors": "f839ad9340a0fbc2c26aeacd077a278c90b1544c62c185f403c4e791b00d232a", +"TT_cs_test_language.py::test_full_language_change[cs]": "b837b129f22886f15e2cf5183adc44561ba24de2848097fbbbfc6c44fd34728d", +"TT_cs_test_language.py::test_full_language_change[de]": "b676fd41a87a70fe86e02d921cd85aff55f7a93fe9ca0b85b286db977f38175b", +"TT_cs_test_language.py::test_full_language_change[en]": "4221be0ec3ac6b31d53878bd3cf2d216b962b06c6bd793cbc8f4228594d391f5", +"TT_cs_test_language.py::test_full_language_change[es]": "db80b9abb8c8bc766f35fe12f6261cc178509752e7116164d4de90194b35546a", +"TT_cs_test_language.py::test_full_language_change[fr]": "d3ff007594e555b45dcda3cbce54f39f7b9caa2b628c5d8447fcb075e45b84e4", +"TT_cs_test_language.py::test_language_is_removed_after_wipe": "a3ae02a5a95dbfa4ffde27c66ab3b5a766aa0e84e04c64504c19a3ae432d0e8b", +"TT_cs_test_language.py::test_translations_renders_on_screen": "29e8127373ad1c7c383deaa04f8bdcaca8f245eefcc710b3b50ceb5d1f154b22", +"TT_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9fad96569555ce39a883e478c87d5c5f1f08a25458833834b27b4285d66ada47", +"TT_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "b5a62384cb7191d76f1a33b653ae1491788dbc611f484742707c95602298af87", +"TT_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "b5a62384cb7191d76f1a33b653ae1491788dbc611f484742707c95602298af87", +"TT_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "b5a62384cb7191d76f1a33b653ae1491788dbc611f484742707c95602298af87", +"TT_cs_test_msg_applysettings.py::test_apply_settings": "48477507989f25f698b693bfeaef2e4ff0d88e64d5ad87ebce15fc7aa7ca6888", +"TT_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "ba11afc9b55e0be86c3db2b53a080b4a7fdfdf6966a1f5604e9b48f46781b96e", +"TT_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "5f2fbc214d353a10ee73bb833c8df5ed519075e9a9ec018ed5033332cf91faba", +"TT_cs_test_msg_applysettings.py::test_apply_settings_rotation": "2c220b0ec671debb88eb5ea14a0de425e3cd3ecd51e9f89bfa4513ec68624cb1", +"TT_cs_test_msg_applysettings.py::test_experimental_features": "bc34efa2173c6d846cf5743d9cbfbe673d7a83a90734a305c058c848e288289d", +"TT_cs_test_msg_applysettings.py::test_label_too_long": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_msg_applysettings.py::test_safety_checks": "666d0a398d8b0c71b1b2cd298b196c4bf0e8cf3a066b6788cc1e57a2e2c528e2", +"TT_cs_test_msg_backup_device.py::test_backup_bip39": "1ebbdd01c383b399838b3b9f44cf518c1a323f30e58e4a65f0f284656eef77a4", +"TT_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "307da67baf5ba519fc1a37682780170eb76fcf48a75953b1fd1feb725a35c828", +"TT_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "2fc69bfb94c23567928f0bedb3184f3deef8ce7cb9523a84634868843779ffc2", +"TT_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "054f6425560215100a07cab95cc6ccf27c7f05312b2bcd5bfe28d748742b9454", +"TT_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d80424410b922b7e8ec822b6ae075f9c7d7b3e484af6411eff2ed18417655a41", +"TT_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3f472cd9603b5ffbfd84eb07058b5d0e5c9d94b9d6f00f3386a8559b4e427386", +"TT_cs_test_msg_backup_device.py::test_no_backup_fails": "247e6b82d188c81d81cc92fad52a81dcc2329c823b50fa988ae17aa027fdb160", +"TT_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"TT_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "e6aa7612ee5a83427b47c9f6f0d39b4ef930b0bada0a8523a13cb4121ad3cd9d", +"TT_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "6f84f166932e607d0e256d5387c2cdeaa8d2f026d4a1eb20dda384989eff29b2", +"TT_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "b68d317c72696c6b37f6d7df4fa5c1dcd575cf27f5dac54ed2a7002e36ba8700", +"TT_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b634448edcf8d8b9753e03fac11c79d6fd9a957165b44ae5bdbd5b27115d6e43", +"TT_cs_test_msg_changepin_t2.py::test_change_failed": "6146244a94936085c549585f109f8c31fc37eb4edc674ac2329ab11fc33a3d57", +"TT_cs_test_msg_changepin_t2.py::test_change_invalid_current": "b4e2be84c566883e9fa8f93379f423c619746435dbc8c6adf647245cef2fde1a", +"TT_cs_test_msg_changepin_t2.py::test_change_pin": "523be1c08e21685d216ac108ca07d01651c504e731c82202e5a24522dd88eeec", +"TT_cs_test_msg_changepin_t2.py::test_remove_pin": "cf1dc8967949194aea823c4d7d1d8d450c65abe507e098311de71bab8501eb99", +"TT_cs_test_msg_changepin_t2.py::test_set_failed": "bb2edf4a0c7614b49ca097212deb5523f334ec969bdd8e5ac0c11ea6b1064aab", +"TT_cs_test_msg_changepin_t2.py::test_set_pin": "b4fcc6da47e8ac16ccb5a8ae4c477b98169cf2412f4973eab429a82c51acb649", +"TT_cs_test_msg_loaddevice.py::test_load_device_1": "9a3bffbfbbb1e373da99b39e7af5194b5fa12459bc38201e07e3b146621bb25f", +"TT_cs_test_msg_loaddevice.py::test_load_device_2": "6557ee4d09e1ac6349dd2ef3f6e38784fde71917815998e77789a25ea762fb4f", +"TT_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "9a3bffbfbbb1e373da99b39e7af5194b5fa12459bc38201e07e3b146621bb25f", +"TT_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "9a3bffbfbbb1e373da99b39e7af5194b5fa12459bc38201e07e3b146621bb25f", +"TT_cs_test_msg_loaddevice.py::test_load_device_utf": "d1186d5ed28162d79ee97e44f81815ce689ec9b1d732eb41e9971d50b19498db", +"TT_cs_test_msg_ping.py::test_ping": "4459238c693bc3923d4d25cbbd14ce28fae43e6461b3af66b3a7f303a296962e", +"TT_cs_test_msg_sd_protect.py::test_enable_disable": "613c4bfe1de9078b44979513b61cde0fd41c8244a58ff05344c4362f97c196fb", +"TT_cs_test_msg_sd_protect.py::test_refresh": "b38762f6ca851633c3b3d089cdb34e570ff0f563345dd0a8fcdfb52d4297c3a5", +"TT_cs_test_msg_sd_protect.py::test_wipe": "3550a8d641ed5f23e8d65d70a033c1ad0914f8e08c749018642f138d03ba0af6", +"TT_cs_test_msg_wipedevice.py::test_autolock_not_retained": "c7c2007b99e3019c43f47530d8a71ff76bf89564152656d241f62a9f0bb64b91", +"TT_cs_test_msg_wipedevice.py::test_wipe_device": "797083da15c42b7da1b2f4b4e9c86384aaf495cfd2148ae7af4f7db92621e2f8", +"TT_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "5ea38778d4270fe72555ee116f58910b21c2a512647fdabf2f895ca72b34b15e", +"TT_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "5ea38778d4270fe72555ee116f58910b21c2a512647fdabf2f895ca72b34b15e", +"TT_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "5bcc8c62da79e909146bf8dc9af59288053e9f952da646ce23a2a34ab173077e", +"TT_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "5bcc8c62da79e909146bf8dc9af59288053e9f952da646ce23a2a34ab173077e", +"TT_cs_test_pin.py::test_correct_pin": "b5a62384cb7191d76f1a33b653ae1491788dbc611f484742707c95602298af87", +"TT_cs_test_pin.py::test_exponential_backoff_t2": "8a769b14340e9f3c310c474c4f3fb927831699ea19b5318b4e64c530e120d33b", +"TT_cs_test_pin.py::test_incorrect_pin_t2": "ec38e49d5af1275e776628a7cb3bc7fdbf3de7e527d0c364b28b3b5be57f6c80", +"TT_cs_test_pin.py::test_no_protection": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_protection_levels.py::test_apply_settings": "91afe314baebc258bd47595d050ca4b0816dadb03b433c5fe974b046fcc83123", +"TT_cs_test_protection_levels.py::test_change_pin_t2": "5e3d101a87a140d8f4b96a8ccac7a2d7759258f7151aa722e70e8d134b076955", +"TT_cs_test_protection_levels.py::test_get_address": "26c226a16dcf2e66831eb35e62f620a5ac31747df080dd85d3ca4d17d1e2e7cd", +"TT_cs_test_protection_levels.py::test_get_entropy": "02ea170c48bf2ef8d63f40c77d1f8ecb9e7589179edaa399b904937918b86840", +"TT_cs_test_protection_levels.py::test_get_public_key": "26c226a16dcf2e66831eb35e62f620a5ac31747df080dd85d3ca4d17d1e2e7cd", +"TT_cs_test_protection_levels.py::test_initialize": "06f717c573d16624d87824a49b6b230bea44b93978be316db8e2b0f13059b094", +"TT_cs_test_protection_levels.py::test_passphrase_cached": "f58645f846dced949c6cc563b2019c24a29d55e441d0bebe253afdec39a06f67", +"TT_cs_test_protection_levels.py::test_passphrase_reporting[False]": "3b3e552f7d28002e68d915ffbb3591b9935d15823190eea11ee877903ccc5a8b", +"TT_cs_test_protection_levels.py::test_passphrase_reporting[True]": "4dbcdd94d7d8e9fdd0f5e87368cd07d2deead32c9fe076e080bfc998c21f77ac", +"TT_cs_test_protection_levels.py::test_ping": "4459238c693bc3923d4d25cbbd14ce28fae43e6461b3af66b3a7f303a296962e", +"TT_cs_test_protection_levels.py::test_sign_message": "9507c4b589cd8af5f794c5f7d2a6c4bde41b631a0d091affcca94ab2480fca58", +"TT_cs_test_protection_levels.py::test_signtx": "199b179d7b7bb0877bed6a2aa58bd23702e6654fa45fac830151afe0bf646668", +"TT_cs_test_protection_levels.py::test_unlocked": "a956e833335eb89b0e7d650e44bb528f21eaebfa31e3ad592fa0cb5a7d1f327e", +"TT_cs_test_protection_levels.py::test_verify_message_t2": "a42486c9804f76ff1ea224f32dbeac19ac6800c1c855a4c0557a89dae50582af", +"TT_cs_test_protection_levels.py::test_wipe_device": "f101b25a4e4f3675469ffa7e2deef37f24e4f5262875e0683cd2819d947f3e5d", +"TT_cs_test_sdcard.py::test_sd_format": "9a93b4afa1653f32a7de89d91be3f58452ca5152c70e6f3c4f39d1ded75d41f7", +"TT_cs_test_sdcard.py::test_sd_no_format": "c7fe6dafa068e3a37704875ff07d933b1c3740bfd0066b90d8661aabcde0632f", +"TT_cs_test_sdcard.py::test_sd_protect_unlock": "45b0fffe826e47ea3d2f0a2facf7f996b753460c8616ece4d8ec13a2932969da", +"TT_cs_test_session.py::test_cannot_resume_ended_session": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_session.py::test_clear_session": "dc583a13cdf2dd6faa1b7c6479c46bd103e217c1ff9403b837af199d879b5b94", +"TT_cs_test_session.py::test_derive_cardano_empty_session": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_session.py::test_derive_cardano_running_session": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_session.py::test_end_session": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_session.py::test_end_session_only_current": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_session.py::test_session_recycling": "5bcc8c62da79e909146bf8dc9af59288053e9f952da646ce23a2a34ab173077e", +"TT_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "d29a1495dbb57e7b485db4d9568cd11ea79d64898f1785d45f6e7cfdb6cd454f", +"TT_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "c5b26e1364b081dc7c277378c11159a052c970b477e1d2634928758e960c568b", +"TT_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "dfddd68e26bb20f39bfc1bd560fa001a5c8d917ec059b9a921156151469ff993", +"TT_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "3dbce3fd3f39031aac500bec0f2b19df8f3bd2c0ed999168c1f4ee35e02db667", +"TT_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "5388541ff294dfd517a0bb222cffd647f25a519222a5ce77abe3439f6bdfeee9", +"TT_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "6bf85713c913eca157f01263004c663e65847c98857599b7e027206625b56456", +"TT_cs_test_session_id_and_passphrase.py::test_passphrase_length": "5d65a48ff36bb7deebd37a9a0f3acf794ad92088615c459941dce66a1d25669b", +"TT_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "f58645f846dced949c6cc563b2019c24a29d55e441d0bebe253afdec39a06f67", +"TT_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "208adb835ed273ba9fb9df40d0fc2690908702ef42b4c229a601b0dc0293e3a4", +"TT_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "f3d67fc104e3df39833e31820ed619524c5064beb9222e030c5a8c5768aa906c", +"TT_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "1c8d30e858c4e4961eb5ba8cb663b797664bdad5ad25d9d19ed9b010b87b4b80", +"TT_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "521247e7eb4103cb1666aaf781d6d229f3de9ec1595e2b014e14fda3b8b1a883", +"TT_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "094e3df5e4123accc5b70536ba98bdd6097efac7c5b579226a6095645b912702", +"TT_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "b885a264ccf7099dc3e78a9ebf0f520b37f279ea356b6d7841ceca4c919b1389", +"TT_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "7dd6eabf6b42a4b1046abb6d857e541281b171ba7e2a665ca221160e4f6a4c11", +"TT_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "f325acbc05d0de196daf4842cd9fd9c4c1658f2b3205ca6557e6e3cc36258b24", +"TT_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "67857ea621475c22fc4f2b45f09d97cf1d111ff3e689d961254c8f36a4ea69b7", +"TT_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "2f2a0dfc631fe24dba45701d1ea87b78cdaf5321535e273f522d474c770647da", +"TT_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "a4625201aef732b40c8a2280a1835d32a8553d379e070bfa07784c210298dbbe", +"TT_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "59a4e182db5068fed4862b49217eba30d64f65b63e64aad9730ac325b1516673", +"TT_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "c1cfaa8a273323e9a934a247e2b7eb4f6f56cc47869e0a2b4d1ec27a805edfa3", +"TT_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "b3e3f2e2cf13e9d0ba4f6dc51965a8f4bfa86311a2df5f582a0822715a2c0feb", +"TT_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "f27fd4cbca68238d1a27cb826b8c463d6949d850e2fccc9e70183f92ad4a57bf", +"TT_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "cc9de1a3b8f8d82a1b1c14159c28f3a745c6b083b13132c0ccf48c7c78839651", +"TT_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "8434f88926a7a2f199e4774308e34840649618ee681fe2383f8bcb5e6d1b5c59", +"TT_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "dd1935626b61860eaedac13c8b9fbdc4ea5f83d1b9fed05540d1d560fcdef83a", +"TT_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "44890301b738f0c2238318c45d97b7203bc62f09b0b7873d337ffe5520bb33ce", +"TT_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "c7fab4ac05ffa9991acdc35fb7c3a10bb66118d388357df6e7d2ef7066211d20", +"TT_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e622068c74cbac2c488edf500b381f3b11c5a6c71fa1811e4a7bad857b27d788", +"TT_cs_webauthn-test_msg_webauthn.py::test_add_remove": "974bf26531e9c9304a3291a67f8c9542c791a38ddfe3de2025ee17c441076597", +"TT_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "0de066070dce2559287c60ac61c64b34d24081b07db57cfd04a3ab1a586d0241", +"TT_cs_zcash-test_sign_tx.py::test_external_presigned": "49dc36a1bf3e6da1aad95de6427da76caef053c9f8dfb302d26d34f82be6a4f1", +"TT_cs_zcash-test_sign_tx.py::test_one_two": "8dd8aa939a7fc9943138abd8414ff3160edcace482249a138326b6aa64498fac", +"TT_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "1df08e004faa856a0f74b753e95549ce790724765821e7735d7293d291ae2574", +"TT_cs_zcash-test_sign_tx.py::test_send_to_multisig": "615442556502794f49465148634407d645c27d581aac8c5487dd4b0e5af7174b", +"TT_cs_zcash-test_sign_tx.py::test_spend_multisig": "d275a9d0664647dcbc7c39f5bd075c8806126fb0e0d87337b65d013d925c0a9d", +"TT_cs_zcash-test_sign_tx.py::test_spend_v4_input": "48b7e22ad81f73cda043a5f6fc5af2b7c8658b016e56d9b5a56c8dd5eee945df", +"TT_cs_zcash-test_sign_tx.py::test_spend_v5_input": "721d9aba20e6bed37a6be161622d4cec4cf582b8720748f81a097e74a25e7a0c", +"TT_cs_zcash-test_sign_tx.py::test_unified_address": "cfa7209376a55ebd73d692b16e86397321074000dc9d1b8841c6d49c9fc6d60a", +"TT_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "56f6f2887f3022efefed50e9c478040b38762e8a120586df0f1cea4941f5c34b", +"TT_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "879743b48a3c22d24312b3082714ea373241bcedbdfaf0d86e500f64428d0ef6", +"TT_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "cbb2c69ea73dfd2f5b5af82cc1e4e6546bfe3ecc22445699628636030fb65dd7", +"TT_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "299faeb8e8013b87fb9a6822f829df37a5da0655b8124b8c1be19028a84a6de5", +"TT_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "5bdc3bfebc71fdd5925656cf7dc5739ada465b3bc679a83d022f421d0ee67264", +"TT_de_binance-test_get_public_key.py::test_binance_get_public_key": "f6246bbc0c189d7c4de15cbc8aa64594d7f27505324e06ed22c414b4c777b2cc", +"TT_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "f0cefe1e69e781c436c621290d064ac6f722c70c1bc250a1912c63f2a524d1f1", +"TT_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "b8d0af4917751e74802660c9ebfa63cf3d3a81a9e5daafd8da56e7031e943882", +"TT_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "1cbeeba806eda63dae4372bcaff03cef2f7fbe20139f4a52ff1dd70904567ebd", +"TT_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "f0cefe1e69e781c436c621290d064ac6f722c70c1bc250a1912c63f2a524d1f1", +"TT_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "b8d0af4917751e74802660c9ebfa63cf3d3a81a9e5daafd8da56e7031e943882", +"TT_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "1cbeeba806eda63dae4372bcaff03cef2f7fbe20139f4a52ff1dd70904567ebd", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "d90f1c2f5154447363fd60097d44033a4b50818ec6bf467cf3f579864efca045", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "0ea21033ce9dfd9fd59287c1916d51a4226f5e1884e1004dc9ad9739d1f154ae", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "b1e8fefa973c5d6f5f28eb250431ab519059e3b3ddc7f5010ce09946bb07800b", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "2581a9c9e9ce8788b8af8b2d977cc4cb25c5c7abce616cec37896b3f36fec536", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2bd5bd0242098e731cc998f3bd4077c0d336abab2d984e61b075f3e0b704e4d3", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "2bd5bd0242098e731cc998f3bd4077c0d336abab2d984e61b075f3e0b704e4d3", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "68940854912b91351a5658fb8dce23a2681a1a2f7b26162783a182db911c9e0a", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "ae5c0e38f14f497534a98bacffc24b45982314158a3fbb91c8c3ae23bf88d923", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "2900b47f2b2cae7172272cb91e81aa92e5cedae603008d204fae7b82caa5db3a", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "08c7198e34b1cd90475d8b7b1384ffc9cc72b8fce3ccd8ef7704225ded2c37a2", +"TT_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "08c7198e34b1cd90475d8b7b1384ffc9cc72b8fce3ccd8ef7704225ded2c37a2", +"TT_de_bitcoin-test_bcash.py::test_attack_change_input": "822e2388ff8710a688919b36bc3d93748f34f2d1ed5b9ca52ed77c46a61e5906", +"TT_de_bitcoin-test_bcash.py::test_send_bch_change": "822e2388ff8710a688919b36bc3d93748f34f2d1ed5b9ca52ed77c46a61e5906", +"TT_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "6290d3e7dae546309d7760f974e4fb87c50d03557783e2ad25629bd8966f796f", +"TT_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "20284dd5b3cdc51628341394b96c08958bb135876c3a8fb336d7050fbf3c7daf", +"TT_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "0d272d0c58a892ee1eb48d07cef435b1da486c5afe8180207f20493802853b8d", +"TT_de_bitcoin-test_bcash.py::test_send_bch_nochange": "5381adcc8302641cc3d641ce4fe497083c05d3c32b71df69457a4fcddd7d8052", +"TT_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6c9a211488453d4b26ff7158e2c42994be9697db41c61ddfdb1ac36dd68dc453", +"TT_de_bitcoin-test_bgold.py::test_attack_change_input": "a5d3869f2baf531a088ca0f7ed86453eb1aff0a552becb55472c2fdc18fa25d2", +"TT_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "a5d3869f2baf531a088ca0f7ed86453eb1aff0a552becb55472c2fdc18fa25d2", +"TT_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "e1747b97351d84cebff3b4ae1ae2a961ef7bb05ebde4f2d73250b051eb99166b", +"TT_de_bitcoin-test_bgold.py::test_send_btg_external_presigned": "409664cf8554fee3c4cf90f292b04cd70a27e221291fa4ff5e1a979e5e7632c1", +"TT_de_bitcoin-test_bgold.py::test_send_btg_multisig_change": "ea893eefc742edaa1981a11bf241fb1a0dadcefabb8f05216233d47beaef85a4", +"TT_de_bitcoin-test_bgold.py::test_send_mixed_inputs": "52d63f6d548301ed71dd3140970f74e4957b9748abb6e2439b99b88a2ec77861", +"TT_de_bitcoin-test_bgold.py::test_send_multisig_1": "47222592223f833a079a6237df792a32c705543ccf671e32112ac508d29179c7", +"TT_de_bitcoin-test_bgold.py::test_send_p2sh": "5fe7e725d9169c155f44c91c6bf2217936fc68b509fd4528081fc92bfa7f826e", +"TT_de_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "9aacb6de47702ea3c098490d4ffdf804409bfd7ae02863f9ba70446ebd711b91", +"TT_de_bitcoin-test_dash.py::test_send_dash": "0df946a754ffdb0620ab7a1ad91c02d18cb7eae04e0ec98c7b4f149221a266f8", +"TT_de_bitcoin-test_dash.py::test_send_dash_dip2_input": "2f158cddf131a8c9339e3db52fbff8f5ad9888d3fd4269da35019e56669dd7f3", +"TT_de_bitcoin-test_decred.py::test_decred_multisig_change": "825613fd784f6e1a00717b1ca25f247f86e79ae8c84ce3c59561257bfe937983", +"TT_de_bitcoin-test_decred.py::test_purchase_ticket_decred": "7606bda3442b0d080139169eb67cde36368515cae66783174572febb4cb06c1b", +"TT_de_bitcoin-test_decred.py::test_send_decred": "d11f65f6a43f1f7f7f2babbca23454363e276227a41bc9d0c41d4e5c59f38591", +"TT_de_bitcoin-test_decred.py::test_send_decred_change": "296a332dc4aea1697b3ceb28e52af777bfed770ea1306bb627c3cd40ea2ad212", +"TT_de_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "227f1ce2d4f1ca4e3cbf45c5d630e2522af9ad2ccd8b19de6fbd46a785e7a31f", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "14a9bd7163b1971c143ab1defd90cbb5449bd08381ea782a8817d2903c6c3bd1", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "35108b70689b30aab884bc10637f198b455c10f56d09f17b837c6c405cac1e17", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "81094f550ab8bbdc2406d4bd1c0b7a7702aeb4f207dc33dab442ecf778be1f95", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "6889012e04378613dbe6b1b73619d65b2b1717a619ccc309a2e7de052251ed0b", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "b965f5b6120ae7e74e0523ed140e50773ca49666f542720d37cc7ef9b2f0602e", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "21ee4196a3f70eca63d42808e93eaa3f9b9d42192c162b618c20e3239b51343b", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "a2c72a1c6a487ac7c46f09e6264b72818565c4af73e0b84eb683a584903b8209", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "a4938ffd05ba183c28281211818c7f7115c50c82f5820d9b24f66f680af2c4dd", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "e1e067270ed6a0c9968cf77aa80ec0d8db8542b7a4dfd40fc5fba4c27cbe9094", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "cdc7f9c0f89878c79fb22a1bb04cf6a49ad2e4d0ed3bcdab65d6fe24507c284a", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "ae78bbbc05a0d1ded325ffd3a2a104bd608eb21399aa28505764158efdd40ec2", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "a99586fdcd022047db3e93fec311cea2dcb103598ee8ccc7c3737c2358c8bba4", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "952cb6c73f1919074365dd3bdc918666a5fb09f27da41efc08546fe67730f0bc", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "68bc0badd0e364a6188508c206e294bd984b18a4ce7f8b2ce2b9d357537c8207", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "6eeecdaafe5815e67380772f20a7bfa20f8a7b2f32d517191232d5aef122a6f2", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "80762731cd7c72369a856bd275022f3472a6c74fc93f4f66f12cb4d545f4f98b", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "4d2c0ff464c861d19e363307d52d7fd48b8a8c914497d70ed0bcdb4c2a757b40", +"TT_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "cb8bcbc298f8bed6fc405e42467988cc975d52c34d80a5d20ed02dc36e2c7637", +"TT_de_bitcoin-test_firo.py::test_spend_lelantus": "6d3fd2fda0ea77cdaf1daab722c3ab0e98186ee34f1f76ea19a27ef662240de1", +"TT_de_bitcoin-test_fujicoin.py::test_send_p2tr": "5c24cb24b6bd704d8d526fac38b61630c0c186e58ec3e74040693f2a000618cf", +"TT_de_bitcoin-test_getaddress.py::test_address_mac": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_bch": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_bch_multisig": "52c6d39fc0c55bbebb01224ed61a189018bc482c67be6994ccccb287fc5801a6", +"TT_de_bitcoin-test_getaddress.py::test_btc": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_crw": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_elements": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_grs": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_invalid_path": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_ltc": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_multisig": "61fb52217bf25cc234ec807882fa030b0b9bb2e92855696ae32e1afea467a6bf", +"TT_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "923c1fd4c118e66060ee61bfb791a72ceed2ec6cdd40b4b181bf693bc3818392", +"TT_de_bitcoin-test_getaddress.py::test_public_ckd": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_tbtc": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_tgrs": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress.py::test_unknown_path": "0e05c6a5fdadefde97d298ce824c022241804005a16c9bc92db7dca76fde90a7", +"TT_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "b058278ad53d3e4f62c075de3980c0dde65c09608675b9af4838e7dc9c440f85", +"TT_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "9d80bae0e247acf3572b16a0cf34883e3c7d6826bdb3b3cdea03a7f0083f4b2b", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "4d64eccb3cebffd6594813e62dc305b49ceb51b500c6d3921f293c7949a986d1", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "ed477a1698555bd9539b9ce989878196ec3e772efed8901a2c16a287a1dc1607", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "7491067f3ee31720c82b7f65f8d847e390e09cc90ffabfcc4438cce64a334802", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "4cb5ef78890b3866c3c49a78711c4a23b62ff49dadf0b611b3d39bb4ac57dcc3", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "fa356aad84b38c1c95a159714c88686af48330ece839bdbc68fcf388b246255b", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "5ead994c9fdbda7d7e6e42a1cbb794b63ef6154e820e1861f7288af95e1e960d", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "ddad47e0542ec16bcf9aa0a5d265e8128e9b7bcaa8ad5c3f4280bac15600650e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "b95b942dcdf96c461024a3e3bde3c53cb39f4ac3a7522184045ca02ae722c728", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "22c84c8df158f69a94f771c019bc075bb08657ab9268a7b9a1f49e7a7a9f65f9", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "968b5759bb8241cc05ef5dbd034257040580be8b6983eceb71658d22c8675662", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "387d0de7e7a0ce73f393836abe59b31fba7fe1de4fbd360812fc9e8ed8b609a6", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "81020456a8b6fc7832a9dc39939eca28ba291612066cffb8455eb35d1d2e62e8", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "74f1b8314391c3e0c0267ec6265159031e0c5d3b954767c61c715d86f858097f", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "af2e58632dbee916b29aecf0f56c5bf5a6d930ad250b88c60a92416d78eadb14", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f0978d55b09a69f61dbba573c2880434004f292d297f4bd4f88436a5a04c873b", +"TT_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "2097cf16d8ab74298b2a88a563e0cba6703f24cc61100126e190c3a426365366", +"TT_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "c33543a32e838de565abd052a07e928cc66fe3b0ffedc78444ff4ef4d1f7d6ca", +"TT_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "ebb5803dd383301058b72a0e5fde537a9a01e78d406183eccace8fb6c64eb40d", +"TT_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "f06dda2a57904e941334c12055305d2d021b92f614f2f89b6a96d0ee8b189b6b", +"TT_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "79b00252cf1aea9a6286f21dd4ae23892476fb47cc1e887086da2c540d0fab66", +"TT_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "569a516383066d0ae2a7f5eead88b2fcab3192518f75b6340537826390624f77", +"TT_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "3e8c34595cd584aa68c9d30aa5698d4eed30e16bc2d3cdca4afc33b99c1b0d88", +"TT_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "3e8c34595cd584aa68c9d30aa5698d4eed30e16bc2d3cdca4afc33b99c1b0d88", +"TT_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "ce084ad58462c3dc402bf0c906b4b0eb280d3a7760b3166841c35c5e19ba33f2", +"TT_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "2be8fd7268e87eb461ad8a4a89a0b5986bd7a7f7bac46d128d6b49cf8622a74a", +"TT_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "9903379740f991ab8b43be7dd5d7d8c835befc8af7a2dfd6b0c0b861d4ba746a", +"TT_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "fd4cb204818d458749e38b1de2928b7923a70b98397c494c8d9157fcaea893e6", +"TT_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "abee2f0f6130350a06fc6a62474d96da2dced62e7510bb876ec3655cce08c666", +"TT_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "9b557b35728a3d29325848e24064186b334c253b4beb37337cd2b98d87844cbd", +"TT_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "077ff377a15695ed8d7e49100413bfbaf361b78b7a88af2668fcbeb7c51d388a", +"TT_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ebc7d0cf14e38b9212500e9cf04a66ba6e2496b967da66d8d1337e22dfba2de0", +"TT_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "76764b3a4aaac437f5bf198ffac0d243b9f6e22700ccc3575e2ec4bdb05ee6b1", +"TT_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "52c07b263790d6cfcc2c3c7fb7b0b88022a29c3de3b6c664bff91bda67e2518e", +"TT_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "39ed913b75143c0c649be65cfd19aa2b5a78199721766eda60de6f0b85525384", +"TT_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "211beaf3322f61bc90042ffdfc66e5e9939958870953b7125e648f8a064c163d", +"TT_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b0a7d4d9351fc4c9a92a1f2107b045d7469c289beeca3e3bbf57a01630a22f5a", +"TT_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "7a657ac8c188da4241b9de04f336c953983dce5de377db1d9f4b92804c68087f", +"TT_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "35108b70689b30aab884bc10637f198b455c10f56d09f17b837c6c405cac1e17", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "91c8285c0eea84adc23c3a93430c00b4154c8f01e1e176691759be1167a30fcd", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "7b6c90d0ce7ec4bdfe61bbcb7c91df0ea5dbe4a8ffecab74a0b1d9b70663786a", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "a112b5a9ff44f9ee0cf8411360240c39726ebe951149ee8990179e52f02f8f2b", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "b1606bec5f73b2c455641a5f583542e8b4f2134747d6e26465644511a3478af4", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "b6e973c6267a7c52832e8c838e9aae0ee5940a5155752bfbedd2aaca25ab93f3", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "970166e2d512c7f0ebdf2bc7eb3769b3e6963c8fc186d062562f401651eb0b09", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "4a0c7beb01490e6cc91f85468c2995ca654c914dbb8b1d4fb1335c775d6c5ba5", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "96353f503fa8f1e9290a7a593a6290b0c0a2b2474e4ad6d81671077578528521", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "ae78bbbc05a0d1ded325ffd3a2a104bd608eb21399aa28505764158efdd40ec2", +"TT_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "ff99863542315b22664436759d0e359c43fb0216e5348877446dd6368a16e61e", +"TT_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey.py::test_slip25_path": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_grs.py::test_legacy": "e846433f77c98f522df25a277ae655cca92ed1d5ed8f432348604264c70ff46c", +"TT_de_bitcoin-test_grs.py::test_legacy_change": "fcb06ee3bf1fdb8ff586f29afbc74fff3a2a7bea94ab03afa3ae292ed66aacf5", +"TT_de_bitcoin-test_grs.py::test_send_p2tr": "2771dda69e007728be41fcd288d09b4fca7ed8b7598b2046f33bbf2c06029dfe", +"TT_de_bitcoin-test_grs.py::test_send_segwit_native": "2aa6ea6c644af11a41f5ade467a5c2306499a3ffd0639be1edf3305ef2b91813", +"TT_de_bitcoin-test_grs.py::test_send_segwit_native_change": "1c29f1c90777ffa58b9966f33069bc6912f5972092ac992a47c5916aeb5fd511", +"TT_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "3f5e228b66327ead183b6ff6a8aae74e51c0f4c101b83577495c866f4468821c", +"TT_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "f20ba4e3304c3512d10991132ad6995bba295459f1dea39b1c24efacbee1bd91", +"TT_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "e5b08d50609fbc7d8318b9eb022b5daf9601552dcdd3fa566a7d245c56bdd073", +"TT_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "3e475c2be108fbdf888ce26a72803562db29e248f4df11e22893bf8c5160aeb9", +"TT_de_bitcoin-test_multisig.py::test_15_of_15": "1cd5970292b0207d4b286c6ef8b8cf8f34ce6eee8467db29b93eca642644045b", +"TT_de_bitcoin-test_multisig.py::test_2_of_3[False]": "2e7da531a12458444d79b9a7c32c3cb5f6b9e49476c56351b63ec0d71ce72954", +"TT_de_bitcoin-test_multisig.py::test_2_of_3[True]": "fe6ce44aa4d5246ae6e65e12ded3c61d4e94799656c5d27af5ebe85b821851c5", +"TT_de_bitcoin-test_multisig.py::test_attack_change_input": "6ace13d764a390975925d10a8ae416448cfc241940268c7977dba17f7e1d999d", +"TT_de_bitcoin-test_multisig.py::test_missing_pubkey": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_multisig_change.py::test_external_external": "9af039c83ceaf44e0e7ba3c565995f0d8c6ee10e0a06a13ea9d7e7e631b5a3c2", +"TT_de_bitcoin-test_multisig_change.py::test_external_internal": "afce9f9f73cfe558c8cb2b9a23dd8739f168b60d560203766a0a060f24d6c25e", +"TT_de_bitcoin-test_multisig_change.py::test_internal_external": "0e701113ed2fbc5724b8935eca7b051e2888f9071f88769344e2bcd71a232ff5", +"TT_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "fd817d25b69f2ba09c417515cd67952d09badbc560a0fef828866c7483860c90", +"TT_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "fedb4c525dc5ea37521f59e7f4878887a8d0441e94fb56de68811c245eccf277", +"TT_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "5e53f150fbda19dd8c4d4191928a2f5726e364d3c5bb12a0611abd24f60a5c41", +"TT_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "879afe423770b4ed3f51905bb21376aa64b2b5e3829d7e9c7f6e9d5c80a9b3a5", +"TT_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "268ce452d25a5cf65aafe16511acbdc47d86f04c15c16773c39dbfd23c27665a", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "1d26128960de3dd008c460182c42654ee49dbbc11a95db21ef14ea141be1ddfa", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "d70ebd01f349bb3ab635ccd20a2a957cd21daa35b7cfab69681ef48621d84d50", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "2cb8c6df2fbcf073397c4c6629ff1ae3b61ae3713e25428bbf5c0da22e430014", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "78748de474de9655687825b3489bbc1af59b77e708d201cac24abbf659588420", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "ba54bceb0060652cefb92c263420e1fef1843f852e4f7e539615b46bd9fda10f", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "6c5d329d41738ad4acebbe9ab7e76408566a3074ec0208a12ad8a642404055f8", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "21274c0433e30c6b7c5addd3cab9f11b05e66012d3a8b84f6cfcb2d87e967be4", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "0f199764eb0acf7450cb22421653662c6575e2dc2ac8303ff321db31991ca812", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "e10ae30cb0c5eab1b55ff9a3be4e0cbecb06d4acaf4733a1bc1098fee7ccc3a8", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "9580e603c2e15c7816534bfa27dc562012efa84359cfc7df04ddde1b29bbeeee", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "47e3b13a68dc6777518bf663fdfce32819d4fba26113274a48d9364298e055d7", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "2418dd23ffae954a7aaeb433562776dcaf004ebb48efd12c733e7dbc153792c1", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c0204c43be9afad4553f8767feb62825c089bf0ca6feb720e1bd67b0e00b9ae1", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "0a9e04bb8909b34e2a154589eae5f6a58edf8dcd3a1d44c6835c5c26b863b0e5", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "1a5b7fc6ebd96237f9d7755c9b2146e6697c9270216bb729647b7d6050936e94", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ac04d8c640313cf8fec5ca32fd1bf77bb098fc27849e73b896f006569c90e345", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "c47bcaaa97574696d9358db97340c5bbd4be67a493512ad9a457d3f7e640bf09", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "8dfaf2702568b7fefb5008c950f03cea6e6586b516385763f118e24c3aaae4af", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "6602f0c17ab4a6be87d3ffaef22e932e9925afeadea5a78bb57489c011fea22c", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "52882310435de98b3c6a63cf90ffb7a35d31df90f6910658ed1851f58a0c5151", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "2b5f112ff6b1ee45e3de57b018139e0ef61ca27753bb4054f359d73507f00394", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "c3d7b639d9dd0506b8df82ec6d52ec5feddbc5e0cefe83770943396c900402a2", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "a946441d4e3ed47bde7e867f58fa2f9b83a36cc5ecb1ed8398fa03a4abafd9e5", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "d28652384db5df61d2d351c32986cc755af7e9d327d17a7ee7923760791dc4c4", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "496db7abf5f8f6983dbcfa39c48e8df45cbd96f12d6f4ff6c864613f83e3a865", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "e46622cc811b914bff8765a18963d11c518e983c26aa98c0a560a24991edb4fe", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c26905305a803be4092c010184a4e582f66881e14a8706f997943be641a58bb3", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "ebd40bb4dc1a073d270e9f119d1d890d865e2fa99c48fa208fbe819a61f2b82a", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "7dfa641e5684a13a0785106206a8f4d4ea703ebc2fb29efc6c5d8770b1d4a25a", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "f7243962e31292cf7f9ecec81307eee50c600ece5800e72fa2d8cb332b56c3e5", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "e1e63c3a72e45147335b9a2e7c090213dc032784fcf4f406baea6df34f819bc5", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "599d45fa6814bdc5e8ec50c28884948be707c0b9575adad013e3d3e4af57516c", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "f7243962e31292cf7f9ecec81307eee50c600ece5800e72fa2d8cb332b56c3e5", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "f7243962e31292cf7f9ecec81307eee50c600ece5800e72fa2d8cb332b56c3e5", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "f7243962e31292cf7f9ecec81307eee50c600ece5800e72fa2d8cb332b56c3e5", +"TT_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "d812848e2dee1fd809afad8f61f8db805126277d9e8022f1b734437cb84a668c", +"TT_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_op_return.py::test_opreturn": "673ee923e1aacefcdcd1714770b5531635f2e2cf6a48793d856d734b013d3a8c", +"TT_de_bitcoin-test_op_return.py::test_opreturn_address": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_peercoin.py::test_timestamp_included": "0cdddc0e74ae027d9d09728fe2e33e6e6b1c067701b12d0d208ef955c260b755", +"TT_de_bitcoin-test_peercoin.py::test_timestamp_missing": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "110dc76452777ff7442bcf23983a46acc61914680209829b4294b96b18440bc2", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "e7e32105a08fb904f81d37aca026be35e230d5d2c34a269688049ae6f2c8286d", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "e7e32105a08fb904f81d37aca026be35e230d5d2c34a269688049ae6f2c8286d", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "251d317a962fadd9fdaa04b4137e1553a28fe14263c7d51decb3b45212dbafc1", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "edccdfdf94edb1c2906704a6a4c4c6a7161b700e74055ed138e40658941738e2", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[decred]": "8c90d2fe5c1767060eb95b829dec6f59088c8660019b2736bd04a38fa98642bb", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "04b250062f4691be3fa960018744f4b5e0c84a909e233f8bfc316fdec650100c", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "104d220106ba16c56f7642a37b11f192970cbe67c4b2fb9e1ac8358c2edd02f7", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "4f84ec0225ac9f9c8cdc6161e83d83c7914a8022a8f7bf75d32b849fde0c660e", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "2a142e595de473f6016831ddc0d296063e83268cf68b87575896fd33a6f2162f", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "eb93c40f8b4b5a19d7d3c6f3fc141f2431632fd43b35ef479ce07db34949df20", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "eb93c40f8b4b5a19d7d3c6f3fc141f2431632fd43b35ef479ce07db34949df20", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "7a4c475b5bccc5a4fba1d49df8dd7c4e5309cd2012497c7158a9713cfae27f06", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "33f5f46ac1d1e8879c75dc8fef109ce01cdd77dc6f89a32e61bb9c5199390020", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "31228016bf15f77347e70ac9486c274b73ad831eee877a0db3feec1175156636", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "31228016bf15f77347e70ac9486c274b73ad831eee877a0db3feec1175156636", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "b9c98da35209438be7933d8491906fb614d4e2b7e778f8e93e41e14e2ffcaa23", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "28bcd81dcd90ed8fb1d0b695988a696b9bc2260d95e2b1b48038cfc1fb0a88f8", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "0b9801b1cfcd3a1c5a080875864ee632e3f533972b5056f9c8a6dbb020b8d760", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "0b9801b1cfcd3a1c5a080875864ee632e3f533972b5056f9c8a6dbb020b8d760", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "baa3b9cecd34492e7069838a8832d4d34f4a87b4e13ea5818ae673cceaca8d46", +"TT_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "44db1e7b61f54d5220ed5f7d6bd7bf9a82826637f2ad5b82fc4bf0b4eada82be", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "56a2eb0b465dc50f51ecc8c2ff812e9abedc774bd549fb7794f96404a082ac2d", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "56a2eb0b465dc50f51ecc8c2ff812e9abedc774bd549fb7794f96404a082ac2d", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "9e5b0514889c9e8c54ec9da5a1d914c7b2cdfb9b6537e837dd1ed95537b77eb8", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "f8f589497b1e96e19ae36f2508e2661359ad645af18f54e3e3904a3fc3bfe7c9", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "ecf46e85f01b18b954596e1c8899b9ac348ecc6f85cb1a680ec20015b9bb3969", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "3a6532d3684abe7524a76e008f550a721ddc532b4c4f81d8ad15ab0ec0bc88fc", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "0032a177eff58b247eef7594d82319be07c44b24a61f23710d7657384c38b617", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "dc52bf59340ac47de9b7f2d3d5ad48d2def028ca626efc33df370cc901c2e015", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "17e7acb00c658d011c33ecf08ccdc231c645befb9976bd66fcdafd4a13bd0813", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "93a2ba84b6b99d846e584d0f12db7a23e3b3c1a4f77e29e2b52309723cff65c9", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "93a2ba84b6b99d846e584d0f12db7a23e3b3c1a4f77e29e2b52309723cff65c9", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "5dfab8c0c2707981e3f51b37ad6f72e7519cd2fefe64d92cf03a0801a9c87e47", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "12fc543347d1bc81e6c3f3b089f14daa1d0d02c45678547311418eb6567ec2d2", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "590935a7aaf7a1621bd68b222434219a448df34eb51a88b644e8d6cc8165dcda", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "590935a7aaf7a1621bd68b222434219a448df34eb51a88b644e8d6cc8165dcda", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "f767d77b6273cbff71a9d4aba2cdf5e75cc1399e8f0c47a8e729460be96b224b", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "5f39b80d0e5d742fabb552b682d655bc80d99e55737c1aa5ee689a1dc42a287e", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "c0fb80a1d02ac9bada4fabfb11e2f71023384769e60aef09c3f247d4110e86db", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "c0fb80a1d02ac9bada4fabfb11e2f71023384769e60aef09c3f247d4110e86db", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "8baa487a7a282c8dbdfd186631f42ce5f1f5d061169ee49af568cd8f376eb237", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "8f19f89f780a841fc6c97605b90e4c4f9ccac02bfc1efede9f1fbf77105e6160", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "75f6cfa798a472c62c533aaa97b9375a6368dc1c341fa81cc12527db0fc817d8", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "19a412d18a0abab7f2ff68762502410cc57c6a9ec34cf64815adf2e3acfcce18", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "7e98949a0baa2eb1db245b463f1c99397d74f5560c9eb9cc86aca6ff27fd942d", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "9a6bec6083f8c267b7cdfb34a899265d96ef7e1d659da9b593ae1352b443383d", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "a37484b32ee10f41b82c35e0de0cb163cf695209796101f13d025e2b2073a872", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "c29f2f1854d6e0a2289141ce25d7b07473b1fa82d396a5a6f8e71d9093f1a971", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "e4804b424af920d721eb320a76ad1f0a6d3e8789cf0e107a826e3de7d9e186d9", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "ff96ce3cc7fb20a7b161779fb2dcfeb71e2bccda57feef7abc18b504d991cd3e", +"TT_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "55e701469f8428bc1d8223a90770df4719bb2eba5ff0da35ee194cf6fa7b7bb7", +"TT_de_bitcoin-test_signtx.py::test_attack_change_input_address": "2ebeb8f256007cccf626cfb43c6ea680c6124b7ee68c0827bd33b9e8c14bce73", +"TT_de_bitcoin-test_signtx.py::test_attack_change_outputs": "4fd0fb69ec6f9dbe2ec92f2f5a2987769ad499ad4069dd27a093733f0b4b83c5", +"TT_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "9051d65ea84673da21f7483945ea6c456b6f3ff608806c502ccc0e8c368f5fb2", +"TT_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "9051d65ea84673da21f7483945ea6c456b6f3ff608806c502ccc0e8c368f5fb2", +"TT_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "d9f5eecb7fe4302d1441b9842013ea79a43051045da00de7eabac8d8baafe5a5", +"TT_de_bitcoin-test_signtx.py::test_fee_high_warning": "6a1967992ae9c319f33a45fd72d441eab4ecf2ac4cc9249264cb2f5c21ca491e", +"TT_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx.py::test_information": "6de159db1ca371c73b285ebcb59c10780cd1caf7b4d2c19ae384fee0519c1d18", +"TT_de_bitcoin-test_signtx.py::test_information_cancel": "9860959c41e218a3a0a74d600a7053639ab42c4c1c674fc991adedc8ae74e64d", +"TT_de_bitcoin-test_signtx.py::test_information_mixed": "22e1385724d57bd3fc40b12b496faf80f3629cd6835804fec752c1478557b7b4", +"TT_de_bitcoin-test_signtx.py::test_information_replacement": "8a9e72a43de05a03b41f3620f4d9bf5b2f8bba9328dddc45bae8f28ec19c3c9e", +"TT_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "f6aa7e8be8fcff6b6578fef9108e9e5a19a71e73746ed15759cdca5290cb558d", +"TT_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "53d13205381dc6b0442c6337799976318abb4a660f887fad173fc6652fd7c653", +"TT_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "35a2308712eb88bd06138149293d8d69976c4a7c110a851f6a9aade72a314bee", +"TT_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "53d13205381dc6b0442c6337799976318abb4a660f887fad173fc6652fd7c653", +"TT_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "35a2308712eb88bd06138149293d8d69976c4a7c110a851f6a9aade72a314bee", +"TT_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d592030d39a492e7debd1ec93cdfc7d7a818769d6763074ba8edd3621d13e8d0", +"TT_de_bitcoin-test_signtx.py::test_lots_of_change": "00f4c7c218f4aba970ec1ab0a6bc0065aec1d4f4b739c39fb0afdc3807d6b679", +"TT_de_bitcoin-test_signtx.py::test_lots_of_inputs": "0b6ee9ad773bd7cde0b81450570589b26501c4ad36027a93c2fee8b307fb4644", +"TT_de_bitcoin-test_signtx.py::test_lots_of_outputs": "a338fe38b1eed6d7ca536227e6cf1c19940adda242371822383cd375eb304fe7", +"TT_de_bitcoin-test_signtx.py::test_not_enough_funds": "13291132308a51e22c7ddd4dbe9ed7c37b4dc942da3f051cd4b6f7cf6f772b52", +"TT_de_bitcoin-test_signtx.py::test_not_enough_vouts": "5de4ead645730ff9aa8c6bef25c73826521be9a9ce948d01db0ddced3ec50d6d", +"TT_de_bitcoin-test_signtx.py::test_one_one_fee": "c257dbe93735e39833c7f5cf82bad088fe45bab791113198cf096dce5bc19e5a", +"TT_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "b9ae2474265d1268cbe8c5d04b4197cf66ac6a9681226fee161e662011015b67", +"TT_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "7923f1d42d530a415bfbe0f2b087ced9b9248384f515ceeed0d26a203ea74714", +"TT_de_bitcoin-test_signtx.py::test_one_two_fee": "0adb8c747be89efd33030f9c71caef89f8a3d1ec7f30165ead96fa9c7a5daabd", +"TT_de_bitcoin-test_signtx.py::test_p2sh": "2912b9109a14933e97045fbf99980322a6d0cbcc2ca4d64d3aa3fec2ceab2045", +"TT_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "f27c8b42a4d7384877489dc7c0f59ee6170d45e92bf93c8c773e029ce57cc7e0", +"TT_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "f27c8b42a4d7384877489dc7c0f59ee6170d45e92bf93c8c773e029ce57cc7e0", +"TT_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "f27c8b42a4d7384877489dc7c0f59ee6170d45e92bf93c8c773e029ce57cc7e0", +"TT_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "f27c8b42a4d7384877489dc7c0f59ee6170d45e92bf93c8c773e029ce57cc7e0", +"TT_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "f27c8b42a4d7384877489dc7c0f59ee6170d45e92bf93c8c773e029ce57cc7e0", +"TT_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_signtx.py::test_spend_coinbase": "806a8775ab46352835e43e496dd68f4103f8be667404a007e360ca357a56f492", +"TT_de_bitcoin-test_signtx.py::test_testnet_big_amount": "6946b5921d091012fde40073456e3bbf7d393d0cbdec95b38fccc6bd5239ae56", +"TT_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "b5e348a4f790c45253311287c8711b2d09c454b2f833fdff4bc185aba80001ea", +"TT_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "9051d65ea84673da21f7483945ea6c456b6f3ff608806c502ccc0e8c368f5fb2", +"TT_de_bitcoin-test_signtx.py::test_two_changes": "7fbc9db771337f78a30d4b0d9b44e167cba4580f9a69a2842fdc3651130d3aee", +"TT_de_bitcoin-test_signtx.py::test_two_two": "ab28d2ff3b9412e0a7b3cbd5ed5488ef42d1725b6b1fb32a6335ec694592a5d6", +"TT_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "c257dbe93735e39833c7f5cf82bad088fe45bab791113198cf096dce5bc19e5a", +"TT_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "5a375e6a5627195fba40d37672c0fe29cf109946d6df2559182c5ad3c644acef", +"TT_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "43faf4b6c4a9fa309708919627b586e698a517f875720fe3d73dc034d24cdb9c", +"TT_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "170f74eb3205c76dcfeb76798591584b183d3ba211a57fe551f9f8c66ed8bab8", +"TT_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "c257dbe93735e39833c7f5cf82bad088fe45bab791113198cf096dce5bc19e5a", +"TT_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "9617e1b8047125c7e3776a9e16f7ae41f305fb9ed26da4c38d02c3909395541b", +"TT_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "b4c021f2b778f3cbd731d0810a1a311e541a48ec152f20fb25330bd85d09ff6c", +"TT_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "467f5db111894b2326be96ab9e0edbec1007a23db498c0e648fe41a8751e792e", +"TT_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "344bf88a791775d7e24069034ce954fa7a67e6ebb4505cdcd3ad32fdb1559380", +"TT_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "9617e1b8047125c7e3776a9e16f7ae41f305fb9ed26da4c38d02c3909395541b", +"TT_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "cda759861ff400aa12e2c8b54117cd2d95ee060aca3e23f8830657a77d48ab95", +"TT_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "e9cf86f419fe28d64d4e2cb97acec32b90c1a03efa47b72d866482a957aae546", +"TT_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "77fafb9da08986ece8b13f2d49d1dbb0ca343564c6858cc00409962506bd13ae", +"TT_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "4fc84045aa3d4570d33109d23d9ed2b3d5d128dd302bf0f594a7edcb65aa95f0", +"TT_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0f3c2e51ae4bed8ddc9bbda12d84c1b43ea516d8ad945437a0a7dcc4c10708a6", +"TT_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "3507804cf0376543d270313a5218007f7a3fb3689fae3616bdb4dbb1a469e1c9", +"TT_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "169922e1128d899527bac4b97f6d1c6587518cd9c78c254f0b69f4711715ddc6", +"TT_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "2109b316384e6547a3ed443f83da2490c7c116555f800f5f097e207f3c14f966", +"TT_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "c63d2de1ad700152a52d36b7d409f5db6fc4f5427880afa8c52fd2855ec8ae86", +"TT_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "9dae66f230b8fa53f654581413112c3230e9b342f4aeded0c8ec922e3339928e", +"TT_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "13e8bd701706ce53841c0a242556e7f6e67889a9a2cc7ac2e368d99c43f3f78b", +"TT_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "44dc370cb470bca018401978d5ecd87f055ec050ec1d1b97b76443b672f72718", +"TT_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "64253c038491cdc975efbc9ded952d74dfd4199bb241eab675c6c00830391392", +"TT_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "d9b71e92db3eb3f198e571ea1735811fcb2493aa2d2433238fd31db3b75b5217", +"TT_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "64253c038491cdc975efbc9ded952d74dfd4199bb241eab675c6c00830391392", +"TT_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "d9b71e92db3eb3f198e571ea1735811fcb2493aa2d2433238fd31db3b75b5217", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "dc44682b5c7d26a6d11ea8fcf8bb388c3b8dea2dc97344892b298332267436bb", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "81340e479ebd3c5bb9363d713279754c7d10a06e5e003afed11cdd70909fb0a6", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "69901fda1858d6933e715afb0883504bfe55072c7eb985ff1657924262dac797", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "a1a081586bf190fbd5765e0a48a4fcaeb5436d39b19a604bbdb7a6fd56711ee9", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "95a2011d129ebb047ec863fa0990e645e8f2d7d5bb94e37cad5b57a13b5f2c02", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "ff2c3818b56eb2a13a0ec806b9cab76df2a3d915ae0d4efb400f42175350d6b9", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "25062e6bf1cfad0e6eec8f96fc9de334501a489c9f1c2c6b6620b9945c8d6fd7", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "c43fe4c7094e82e63c0c975e99b956d63b5c46a7bc25223aba60bbafdde71b75", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "d01f303b9490b128da93d2e13f29006c99c602c9d2680534ce7390772d0b45d2", +"TT_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "3ed1dd682073c5e5082ba9983b54065392130372a20743a7e7a7e7884fb7a936", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "4230e0675e7c9c1242ef2e6b53594d85fabb0d2918b94980b4bc4148b422f36b", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "4230e0675e7c9c1242ef2e6b53594d85fabb0d2918b94980b4bc4148b422f36b", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "4230e0675e7c9c1242ef2e6b53594d85fabb0d2918b94980b4bc4148b422f36b", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4230e0675e7c9c1242ef2e6b53594d85fabb0d2918b94980b4bc4148b422f36b", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "7fc3d936e1f919cc708d935ea93d7403d4aca7d99a2417e20c0bab4b3450d9b1", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "7fc3d936e1f919cc708d935ea93d7403d4aca7d99a2417e20c0bab4b3450d9b1", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "7fc3d936e1f919cc708d935ea93d7403d4aca7d99a2417e20c0bab4b3450d9b1", +"TT_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "7fc3d936e1f919cc708d935ea93d7403d4aca7d99a2417e20c0bab4b3450d9b1", +"TT_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "25511630beb305d6bb1b0c93d1a78d79c0670ceb72115a3eb5a8215121176e35", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "5a4005cab8a1b66004738b17b516c1256a2352b77cc595f2416437c4dac8c200", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "c4fdd715143f4a2672d983f190237b8c59c05878d277467dd4daa00a4ab44d59", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "c4fdd715143f4a2672d983f190237b8c59c05878d277467dd4daa00a4ab44d59", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "bf5616f8e5f5b9ebbce62c7bbe693bd48af6a63bbb4dfc7ffa8c24991c76c6d3", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "4498cb1af189e5aab6e65dd7192260307f82c3fc6e3ace7d3b9ccafcfcad8ced", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "9f6a85e77ea3e3688cdcd6fc50ad1ea0a080efd22c64d52f85f7f5ac69e98cfa", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "bf5616f8e5f5b9ebbce62c7bbe693bd48af6a63bbb4dfc7ffa8c24991c76c6d3", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "a2e3ae799d2168aad5b2f610c5117e310a1838478bf469b7a197fe7e6055654a", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "df342ff7cf6f56efa3ad57e0457397739eb8cba6bb679566a68308d907fffd34", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "df342ff7cf6f56efa3ad57e0457397739eb8cba6bb679566a68308d907fffd34", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "df342ff7cf6f56efa3ad57e0457397739eb8cba6bb679566a68308d907fffd34", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "813946e708b17281f3b27deed63000ecff8b417d9295d7d32396206cbab0d093", +"TT_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "df342ff7cf6f56efa3ad57e0457397739eb8cba6bb679566a68308d907fffd34", +"TT_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "0ad4093ea30ae1f77769b36a26927b8dab184a8db60dd69b606bc0759f89c0d3", +"TT_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "b25621542314b5fbb48faaee5c05a518142e973e62d10bb8254f3a50cfd1f032", +"TT_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "d2fbb7a047c1b4f6ef10d8f7db885e6a87b8e64ba38a1faff98fb4f34575b830", +"TT_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "cb1a5353ace61ed1e083a8907d027b29e509246a274ddde64544481afaa4321b", +"TT_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "679c115da88b32e4c479c9eeaba6d116b3113f8362df2c2858bba416c570812f", +"TT_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "0934e3d31f679763ab1784ea0bbf32b25873e8f0514a32a4d41103424b8e6a24", +"TT_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "99d03f6c079fdec7f56eecfc7aa1ee3a71ca9432fdbb490e6e19772103ac3ed6", +"TT_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "67da2a04b99d3933a2ab70d4cc64ddd5e0b90142630388e6a0d8a91386975692", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "a19248791c6de9ce29691d32b1677b74e5c0c821d2873d5feb8052dc04c3e90b", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "e96c9a35b9b3145448afd283e19351b8a669f0b44f9a4cd577b5a9a2e08c8f36", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "9aebb7ddc8f75ee5f683c7c3feb16d48a86ff4e1ee7f339d9e716ff33cfe4da8", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "2ee42cf8baddbe2ab5b2106ea86a7c18ed06398b38af9e274263559414228d67", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "df0aae168c02a038af2fc353d310e1faae866e8202a3a9e016bfe9ae383e56ce", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "4d6754f7dfc3d6a4f09255785070199a2fcbc93e6fc00137f99b565bde57e465", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "9617e1b8047125c7e3776a9e16f7ae41f305fb9ed26da4c38d02c3909395541b", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "e1a9f196eb1e9d474c127cd90bb6423d0e0d460e3bd71a04728e015ef580ab2c", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "ecd9b2be762debddb1df9fbc3e12754d71d8fecb0534171a44367ed77dd262af", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "d893f829da396f7d87f2fd678bcffcb52c4bb17fbf1cd59fd10ec062dc0423ef", +"TT_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "1f5aaa1181ca19847dfad1f7c8e3fc081ca511c403cf7ff9a66c468e0192486c", +"TT_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "48c33491fbd98885ad0e8896435bb09d1d5b155e03b6b6d7f6375e7a8b0f0a89", +"TT_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "48e402cdc8a8b2dbe9abf4424824ce64e8c7351a4d551e1e76b34bc5af8638c0", +"TT_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "b8e69619246a88f3a5dbea6bedeb4f73ec91b6dfa45f77f649858b174a12f2e1", +"TT_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "da8667a284f56a63f748c42ef3fa9cb843835fa682ef0d0840b9c756e1909625", +"TT_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "3d24cf56b6a048f53ed9be7f3cd0abfcb529e751590cc4edbe747ac000072ac1", +"TT_de_bitcoin-test_verifymessage.py::test_message_grs": "82ad09232da85ab5df5df2808daa38cdba118495cac31590e09c695f3dd59c11", +"TT_de_bitcoin-test_verifymessage.py::test_message_long": "90189621b0a0b556bf17d91a4a87a4b28052068a6e16492cecf22a613ea857e0", +"TT_de_bitcoin-test_verifymessage.py::test_message_testnet": "6380a2009ddd5914492708911b806d309bd28f6e343bd66665abef31f9305d90", +"TT_de_bitcoin-test_verifymessage.py::test_message_verify": "528e6b385f34c16c4b81bada2f109160df9fa07cea2c6b521af94e79097060f9", +"TT_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "eb1974e3e9cdefa64b7ef395a014624dc5c72cbfb1c30481cf446cc1f9f7d8d6", +"TT_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "75dd2d550825ef332782f1539b8f1fc6d68580196d6bbc11cede58a73b80b42d", +"TT_de_bitcoin-test_verifymessage.py::test_verify_utf": "4472a98155deda6dc875068d42b5c4fbd3f7e9a400d1b0a41ef114ea6a1eda6b", +"TT_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "f7dbb7a66211f8703d7cb587e8b776a2ef24a3e76b14f3b0ad8f5712ec0340b1", +"TT_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "87023f4aaa7c8e250caab145658564bc404778b80d7f830f685d78822fbbe498", +"TT_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "454648828132bcf91efb890464f87cbef948bcc7e4132280360db21ef6166484", +"TT_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "0247773d621ecbf29b21bcb600c2896dbf0282539615b043ce76443065857803", +"TT_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "4ca877123162cd394bdf388c9cddd855a5ccad60b02ff1767336d5f2acb68c95", +"TT_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "fbad098df12dc8d691a6dc8bf50d3af6c72024a99b4530fbe1d8b91a7a72319f", +"TT_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "97c376d72143d7e7bb6d7f1379c58f883180e19dc84297f023cfed4f992d0a79", +"TT_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "901a3458b7cea12906c1515caeb340f4202871f8d4776bdb2013bf44f656f318", +"TT_de_bitcoin-test_zcash.py::test_external_presigned": "569ea24f3776a2d34ebcc12a9ea86611ec615680cf126ea8b54f5d9a79d7a28f", +"TT_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3b1bb01a6caf4752f58d7f33b25a77aabbbafbedf96ae37f28b85e64cf1ed455", +"TT_de_bitcoin-test_zcash.py::test_spend_old_versions": "69698462339d37f5c8ca6d7d13022ac3b84eea744157a1cd90e7b53db5dc5c5f", +"TT_de_bitcoin-test_zcash.py::test_v3_not_supported": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_bitcoin-test_zcash.py::test_version_group_id_missing": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "d7525672796f2e7fa66e211b1bd7f5ef7681edfcbaf78ceb31c5f75fed6c8897", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "4a478b683e2075a816499e362854614847e749ed0644b2fb8fe7fa2bc3718265", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "6eeea36af15c87bcbe92aa884c0cfa546e84a145581ec1464f77ae89f4c6561b", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "22cce5b0da8a7a9a852f839be0025a03fbe074400529cc40cd983b9d3d28d34c", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "60e7e0bfa1c1bbcbf08618f8ae34d7764cde23a21d6aa3de44e9c0dda6cd0eda", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d525ec204524094f7357734e894d423f5b8b9e66ed32f182ff7ecde77d5a4960", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "93ecc4900cc90be1a0d6f2a478e5e87f09536241f7df1dd4d3586350c1db7ade", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "9709e2b65c7223315df2e5e764598931a5c7fd9236d25f9773b2d4dc9977a11c", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "3892333bd65abe1d7b3e171f840bfb07e0904d425a113abfe86e122613445f6e", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "20cbc65868c5d304b9c36b405c3f8febb4d2cc64a646d0e2c68004d53dfbefb1", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "2dba28e6a3b068530b0af98492533bbc610730ba193060a99694cbf439fc38fa", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "f57b098688309526ae7b17543b9f7db160aab0af60ed6809037e458344cb2648", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "ed3b43c08748c6dbd6a55171e8f8cc2ea3150460397ef26479e040e35655c861", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "9cf81241f38a2549e4db2d900b51533f245d73534333ac5a008709460e042991", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "105137f79916b5b1bad9f621e2a180cb99b688aa51599649dcecef2a39f20c98", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "341631f79e31b69d5077492e461199a3f493bc7904f02b0be226b0836277108c", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "164d3727b4059c11d1b028104e953071b77ac760f106e87be4f7afa70fec6a34", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "0c0cf283325a27ecdb0423fd73f5618b6d89f4adc30f773c33851eca1b570987", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "5e6de6efed43e2c23cede97edbb77f64481bca2e32628d5a3e7ed802d3051632", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "fa56ed665e063d2adf221d8a4ad02952f600cb89c78c3ae033f6c785e1e8794c", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "dcdad3274c6a46e66b2cff736cfb3af0b71f9ca80a2af94fe96f2f33ed9d3a44", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "586e147e69a8a5fbaa55d7d24503f381e2b4f1e9b1bc8184a3b79b5351e5c759", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "a93f6ff6e7e3d131969c5e0d1d927a5a1865d314b80281cc7cddd6400d4551eb", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "08e9816c3dc8b9cf51cece18083cddc6a31ca5224ee1f2289e44566b9dede961", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "4bee126422d3ee7946961e70ecc5e5958add1adb5f76851a3d1dc843209d4e32", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "a1f8769c71d3f5fc866a86655f67340e084cd2b23394f9930e1b418a42cb929a", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "053c8ef7f693abde4c050c891c2dde422b45a6f96507f9324fe7885a9d85458a", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "120968a5e8dea3c447a025a8be3b8eaffe13e47c1d69f4fbf5ba9901eb3cae31", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "1247de5928b6da08b7616b24ee4450f69b45c473bc31126fd8ae4b6307f27b71", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "f6ed4c3e266869842696e013a84003d8b8f6456128891d93e0e89e05ee3620bc", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "ab19699aef2b5dfb0d0e3b3660c9b63a420c5dd25f5f1870c9e22583b4e78aab", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "cb49b12d99b2f73043a39efad71daf88db8c149e440f757ca27f8edf42fda376", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "5cfcc8b0647e5857e92aafc4539140be9af599ff847e4c99143013a8b0229614", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "aaa2bcf0114500ccc80f0524b4e023cf4fcdec79a1f198a49ff066b6e3ccfa1e", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "62f472b801139d43377e3d0cc0f1bb5c4a05b45df986de5b3c6aec5a5c653236", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "aad40e2f213cd9dbe9a818572808c9ffb4f82ca3f88274e43758755d830b2d1f", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d7cf0f26acb0fa8fe53dfde0e72c6e620f18d9ab78a97c5ba3767cd9a8828b9e", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "390b2fd0bf54f305b07141ac5606af43e44866a87ecbd95a11279bdeaa532826", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "fa98ad64b323730b1c559dc9427a93be60b2c2fa5b52907abacd48db2d88867a", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "97bc9f293c8b8c9c1f32d8ed87281d8246b992fb649985c9b61c9ed2b9cc9ff8", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "b9a9dd7687c7e81612ff6685b1cb890d68a47cc8c2c2d1239ba31013487d3fe2", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "9544c850e3437caed74ca11f3dd14235838f47aa047a25cbe826436a8bc49a7e", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "bbb97e5705d979290a08877c0ffcabf09dd91631dcb469b25219d7c4ea854aef", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "c3017519a34e5942ca194312aca953582bf369707d5cbe40952e0b2e2c9f9148", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "8b59627ccfc3b9e0fd4a6427b9cecdb96cb5fc28c048aa6907f6c54ea7b70f46", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "60f03f5e0aa2f060bf76f29003d641751f50484ebbe111c202b4b2f12587ce31", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "71da0e958658d2bf14b533cd0e2931e751c5521e81cb99684418ae002b2acf4e", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "ad271e828c4d66b5be7407dc2b06143441d11afc9af1ac31c4b7354592c6e4c3", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "5c4b52075ddbf0667a9308078a521769ee0c68b85a2883eedead698b6ce85bb4", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "8bfe01b9fbcf853892aae4ade1df0fb2bff0476792861c27c0ca5a47518c8366", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "95ec8c16ecf98b8aa3e37fb1415b2ed4af619cdab65b0b6be3982c457cf94fdb", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f8421602acd19bbf083de8b2ca436af39331c3ca05536866ef31b293c07d2920", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "171fdda8906e3cee74366af5544f80062b803e85d7d425bc4a6a9513f5bccda5", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "0b0500453ac8a449b585e07d7cf36f59c067f8b759e620119a7eeaf6551b69ef", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "0a9297b3ec12be688cfba1724d0cd4354cd4c51ed25d966598e58540af9ed718", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "3596036bb712bfc5c85dde65c52ca4ca5a41d564c296c3309e7357ba85c7b2ed", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "4b0765f3c717bf23342a2688947def1cd2311d603a03653ccfb7c926117d0edf", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "7417d6f5500471f0bdcada0915b3b90fb77eec7b5c498c6a6861c1ca9a05e326", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "a92582ad4e1677babe9ad6c5f52e4630f9d118db26a412e9aea2dc293dcc4e7b", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "381426180507fdc6133320fcc477e1fd760514e405a705ab72a9f046379058fa", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b1cf67fe2b387e257f2f94370963989fd87b8c1a9f26ae6e515a6cb41467be5a", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "fc695b8e5790f540afabd7baa4f1e489fc86b987182ca9cb4d118861c1db79af", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "cd80d2f8e1a63dedfbd2e7e29e38426ad85961429690a53d41ec58990723ae28", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "9c704ed2ebf531993f704f4136cdec1b02a80154c1fd0317453769c303875d74", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "3e41bf49c24ab18f0172e5daad38a6a5a10da4af5caa22c481dc87eeae5c625e", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "a27d99bce7bd9dbe2635c6d0a4dee536dc0b8cdcdbd89da19ffdac638b6a63c0", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "40aa88cb15ea2bc1441d2553ab6c70329681d86f19801bf2469109ebea60459b", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "72516b4f0cb170f00b8dcd42a7bce8a2600e1c15ff2d892d20ccbff413511f72", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "1eeddd0a4aac6ff9a41ea83668a87b3f80a7f11a4b5082266bca14d05cac3fb3", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "5f37dfc3ac877a27afb48d294b5ec6450222591aba97971e0e16c1210b311121", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "0f279ffcffb23e4332ad8bded11899169065f16611720c53315dd28f82b177b1", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "bde20639fb9042da19646c34e0646a964097456eb444aed83636934a040ff7c9", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "aa3f6a8b36822af756604bd2097f991190f5e5f407a1fd86043cd55c619e6ad2", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "5c45774ecb91b33a8ac45ff49a233b37de412f93752bbfaac1d8b0d85b4a2ecd", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "1aa771a1845cd3911eead843dd3b3e40832c95825d65a1cf7b2aef3448ec23b8", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "12da3dc9cf55feb8fc59182fcbc970e9f86cc126696ac21640d830128b405630", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "00f717d7ef5f6a5eb5fbabd2dc6c699084dd5e2990a24c0de30dc9c1b9f892f3", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "2b103fef5340ed7fe630a94b9377116f0d0e53edacc512e3f1a37bc530bc93c3", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "39d1ea0ec3dd9e3c366b3d15211107f11a5380393abd6f4df60df40821efee4e", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "430f055a7791d14b4f1452e6c4941f6ad80af7766cfdfc241bae542445622fc9", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "dbb8a7fe4adfc1edf7ea3ad5596d6048b1928aa2024ee71d535caf27dd469290", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a559d05ddf9b2f4124098cf902bf267167f89bf36bc4e14e6aaa84956b5b37d0", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "44f56ecd140fceb0dfe982c88d70dc47c92074e92d9fa2229bbeea06fbeafc36", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "52f29a4b210da718f26b45f76f0498b393fe6abac220de020e1331872a0481a6", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "7a9d02eca3e6796671324e462e9e540fa77b85953ea3b8674310235f2552d820", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "0d9588af78b5019a9b1aabc7c736d6e795aefcd772e69a7ce17c2132ea8c2c0a", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "a5943f9c56cf8443adbe183d3aab38baa319833a54675e2f52de4292e2b6c550", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "833f0b90af337b2450371b34585e9d04e85bf4e2fb60c49455c4f80a03f7929f", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9e3d72b3a8218d100d0dd7c85d47880dec7b0ee93354ebaf4bd298523bebdb20", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "bf66abeaa14b682e35df9a6ce79ba3846ba725a636523d66874dfbd6d299f8d9", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "7d2cfc387fc1dfad3740beb80966915f19eb5ef3b67e522c3914118055dd07be", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1412adfa1b5ca1cb2404f76ec77cd605855cdfa77c2fa776da9cba07dfab996e", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "68107a672fce6c078ec3ac2a2ac980e3c55ed8573da85475533b8353bfd16ab6", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "2b45ddef0e16bc1fed60e8cf2335f3489f0d7fc830a8c7275f89bbd31357de3f", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "1a00337d9aa0f2c1265d115d37b52021dee707e2e059bae7361ef2880729b221", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "5ffc98456ebd5223fc89d41fbfb9d0ac31899c5001809a55a601e150bc55ce66", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "5bfeea31186ff6202792df776e33c9ac6bd62c99d7cbd73bda5aec973c7e7ef5", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "080ae7f55bbc0164bce2a69d2ba198b70e0b2b2944b97c3f67adf31738c07273", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "47a0ff5d4dcf6b1b5d87357ef0ea3fac3863b0269352015eb82f2e6ddd64b523", +"TT_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "d153aa87107ed2d11a437573edb550694d314c67328cb44325ca8edda154ce4a", +"TT_de_cardano-test_derivations.py::test_bad_session": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_cardano-test_derivations.py::test_ledger_available_always": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "af27e133b39eb30c1bdcd359ec1a3eeed2b7bd1263847c7e1a32c5998062e3dc", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "be3e7c5fc1b73b27f17c29618f9992ed54b9a50ba5384ff596d0b9d5cfca45ab", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "65555ad18c596efa54097a1666483f30a059a120516d5bb56e742b856e39c11b", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "b17a67855cbb08249d48a572c4489cfd833ff6b0fcbb2943b8507c70d01e6351", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "f84373a072722e9b50db3bc28461d1b8fa8610a5ff2646e85a57a0290bfff56b", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "7cf8c8ac6eb8430f3fb8d9467648d6210fe5a7885e93149f3c33a9b479d255bc", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "e8f49d90bb4031accfabd32b9c353a172ff34ad150a2275d105fdf62e30e00d7", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "7cb59e9b55121cda2c2003b09880b9a4f8ccbb327f45f2ba7286a00fceeedf77", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "352725da36c4cdaeb1a2d9b899b7768298a384cae84ae4926f1f51c48651ea03", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "9d280abf61de5f535eefd93437e4c802ad62115b58b6e0b76f41a5690a9270db", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "def1a82ca1e4e9e940a305a827c01b7cd45ecf216923ba33042cb13044cc7053", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "54817db603cbaa02c2c4d93e6b8e7331728b801ab344e5df8d2c436b7ca7fa59", +"TT_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "de80bfda674b19b4f44a1b41613b818ba02f058a0c0ffdd2d4915b389ac0b54a", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "746b39d7dc2c40d32b00667c9f613c2eaf461f7ce5bb006364668059055f7b24", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "55be0765ca2cf3b68832b42dbedbc8f66e28587e096a974c8090df4708778870", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "cf31199caf668afbce4ae176f4c39b8b3a16c1d1b42f745dceb0583859b5986d", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "f827c4df3e809a9b2f086f5eff49596d5c7f94fbc5098d1ecefe6a4c47e7e5e0", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "f827c4df3e809a9b2f086f5eff49596d5c7f94fbc5098d1ecefe6a4c47e7e5e0", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "71a586c03bc229f5720e9524ec13eadc88a1948b8b0816016d3144bd692a7a88", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "a9267f1c96493d62598d4be9ab31266d4fb4558f2c914c0b8f8086ae3872dd1f", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "39ba04f97482054259db1f9c73dfe9a039bd04ce0e6bde7907f23af366508b78", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "06a4091edc91f27117d1662b28e55983db83e61cb75b4c6c06b0b8bd6e2139a1", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "0594b916e2a27aecd3cde6c44735bf37cc3bda3c44928a951dee062b459e7878", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "4a2c8d7c497431f111d4523bb75bd81916d4ff10d62f9ab62921809b0264e461", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "9365014098657ce0a7b2f4e061fd30f6f4cab75d76152dc55b78505788fd8a72", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "6a590aa5138ecf98c17acde88b2318a0a60bdf958ba48ea9c2ed7960909d22ac", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "f6a86c6bb14bb4778e55dca835daef129a20599a1704b452a0157a25e8e722d5", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "f6a86c6bb14bb4778e55dca835daef129a20599a1704b452a0157a25e8e722d5", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "3a4a6dd90109a48ab38729b68a80946f27fe719abbf1a7d3ef04785051eb2471", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c47684de516c20b7db4aca900036961bd1a79c2dcf37560715253836433d10d5", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "103da50228f509825361b93a75d624b1cea5955f8f968d2e532cb78da13922d8", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "ac61b2e779a65a0c6500b7352784f0f0a37a3ccc004f5990f048a56f2450a44c", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "9af42f16b6e9a8ee670934de8cba615431630e9955dc5186476474e6180e855b", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "1acbe1333dc7b26d4f0f717351204788326842b16e6349651d4aa858712b3eba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "8e6e715de68d1eb64abc58e7d921fcae14962982137bb6d1b9ee499f855fb1ac", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "52f59d3fac4a553f7e0a89dde4d8d001c0fb17a74a017a6e6ede92fd5a3ecfbf", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "f827c4df3e809a9b2f086f5eff49596d5c7f94fbc5098d1ecefe6a4c47e7e5e0", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a607e73818ac43da7664fceb035e45b60312096660e9100d8114016ddc84b2fe", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "ac61b2e779a65a0c6500b7352784f0f0a37a3ccc004f5990f048a56f2450a44c", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "4a47bfbb9ce8dba612c12f35f94d05824891b0720d6ddc23ab3f741b5cc68601", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "1acbe1333dc7b26d4f0f717351204788326842b16e6349651d4aa858712b3eba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "8e6e715de68d1eb64abc58e7d921fcae14962982137bb6d1b9ee499f855fb1ac", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "87f37ebc4d34abcc5ac36966d9f42bec2106d7dc907e7e9ab1b500974e214c59", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "ac61b2e779a65a0c6500b7352784f0f0a37a3ccc004f5990f048a56f2450a44c", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "764004f0286ecffb63f5df7ad700f26f995941502f99005095a21b0ea41ccc26", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "e69fc0bc521788978a31020d4d308df10371c9f1c562f95e5d65ff143cd53654", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "e3b7cbb359eeabf529f7b14c343d544dd7d667c1ad29cedca435d6e1d428fa5f", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "7419f4cbba5d888613621e85aea5a91730353549bb0f045e4504ac5e021bf761", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "fa7ed0bdee06c46ffaa9e23ba14e6700c26b609205cd69f52f5af6fa2f1683f4", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "922a579f275ee2d4bceac6de686f8e4c410e2d3476a6ea8dda815b92021ff6d9", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "3c9f0778b0b077a0ebcbd700a22d3ed2de702cbe1ccbb1c8a9c74924fe8e4e38", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a05e4918b49bc1bbcef1102bf1a9bc5f8ac24cb027fb2ca6d994f59f03ed5f0d", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0b02d8e1c7b17952792e61c5958d728f4098251d4fbbc7d597c6026c32b50140", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "d390017bc77e82198bf4b3b8df4b940edbd44a0f35eac030755a6983b8be4937", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "99f8268da1cdc676bdea21ede6f031018f1eae1e2affc57842fd621f967836d3", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "6149cf729dac356140ad4324026efad76ae4d62ba8a349f1a3a6cdb290a45798", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "1e1a653e9ffe8b51b15327f5abc636753f05418270451dc0fe2608e1c26af0ff", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "0256bdb6b64b127b906d4a730800059772aadb6e02ff2112df99944a2640c0f4", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "54292da535a3c2cdde15e4e80ff7ac0fe56dfa1956037cc06d211a12154c4715", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "5c0caedafaa758c13c175a0f9ce773f30651172ab74d7ea1994aec5725ce7b2f", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "0a6f764881ebc76fce84dc59551100cb25e1cee430b306dffafacd26f7bfc58e", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "9f16055e61f53202d64e17d1059c6ecdc4a3ac6415feb0e38e47963deaf0290b", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "58c5178756b00f2fe61df58a1d9bb5bd7dc115c328e4df28d7e3c23659db58c5", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "f717e5b005bbe76b582791df15b8166e98523edad74a3fa867d829fcca935a89", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "c29d44581a69d4bcd0e2806b73551e24c6a7f834401eabd7685118d0e7ddf102", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9131bd711ccf7e903e45157c1532ceb8a820beb4286cfc6125767af25d3a80ed", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9131bd711ccf7e903e45157c1532ceb8a820beb4286cfc6125767af25d3a80ed", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "347e84549ffbdab40cf55c799eb04d4df3098d5423283f8033303b6aa254caff", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "fe11a8c4ad39c408fdb5d0b10c6aad50cb11f035e657d4288ef4488c1c42496b", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "6bb13cebe683cceed6a4b383b22b3428b0120036623bcb4a944b62c885e5bb9d", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6ed4838809eb5ec41967babaa0f95bfad4399814f8d3d34440cd99bdf7a5b13e", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "6071c288e9adf6ddd686c1b771b6ca20af284a4fbb2537ce6f37edc74e05076d", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "33849182ace45c21837f9971a9a73e8da73babe7673085978d46f48a5c822dd5", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "99487f7d1efdddc9964733e343c5fdfeda778a78d714c592bca7961f203e230f", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "3460e326eb2cedd5aea58db6a6e6ee841222b60da4c9758fb40582697ed3e7f2", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "ac61b2e779a65a0c6500b7352784f0f0a37a3ccc004f5990f048a56f2450a44c", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "e1a9c230e3da60e8da5829ebecb824578712ec9457514d9d126098b5f1a3bb42", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "51a996d50e75cdd65300cb7add61735ca4f4836918b5c1ce3c19a70636ee7ee9", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "7208f66c5997710ce52d37210e0e833d1ec11902049ea6486e90a190e3211964", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "046100fc8a615eceaae5a5b03ea4cd0e13cc4003e5d7a784052c9490e687aa8e", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "eeaf744b15e398772786012ecad5db644e356205e0b90d73f1c47401760959eb", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0ce4966faf6cff740177c1b3e8fa69e123eedec1ee36557bbe684eed708e2cfb", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b11e26653e3ac940cb36f964a8ff1a9980918f9d38ac474b73f60114cf8452fd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ac61b2e779a65a0c6500b7352784f0f0a37a3ccc004f5990f048a56f2450a44c", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "ebcde68de52924d1be8b77425a2db68f91082489286827877e6d562cccea95c2", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "90c31f5feb19b65d20b3f8802f455924e3dd51a776f1b2a34ca2c92c5c16a2be", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "c56770a28397fb38e67b9a99d2539e27b0228facb699014b142c0f62add1aa5d", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "a61a1f4ef800a8e7cbb93bd6965e8f3863fb3f520783b6491e9c29a52c87e46a", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "2495ba5e4d839487c7c92f82264c556e90e35731ca13f8580beda863cadd0267", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "71f99f91f386a971e163a51deccebb7059d0aec9d61a85b2fc0e8a22ecf852e9", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "00a5e09f5201f8395eae99a730123cc9e959668a22c426162f5b5c42e88896df", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "5e83caccb23872fbe995cdfe7c0787729e54b46b21acf7d57653f8c7a95d300b", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dc6b071733c05513292fa02c54c88146a43d7c5f0f99577a6e68a2abc0f3e587", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "40b01899b109b0abd76b80900f21a5aa5c2690623a0c6dba14dae20fb1125d54", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "40b01899b109b0abd76b80900f21a5aa5c2690623a0c6dba14dae20fb1125d54", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "b7390f31337e0895809cb4afb902cf8e335524af70b7eb95b23477ba455e1c43", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "823560795903f429064c4b016d97402034cf90a8709819996d250e8d28ad324d", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "da51cd9be9f5367448507481449aff3811e2829000debe54143f152eac9a5bfa", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "ec0fdd60d57e6a62e473649de635081f0e69015e2598b815f13c8a44f8453785", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "851ff89e5984ddd4c54c298981da0cf21a6374a947114cb0713d087ee5fea220", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "66ee0fa2d48922ff0f951f80dabb10b010188cbdcb5e047a90c8b6f14b000d4e", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "f827c4df3e809a9b2f086f5eff49596d5c7f94fbc5098d1ecefe6a4c47e7e5e0", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "f827c4df3e809a9b2f086f5eff49596d5c7f94fbc5098d1ecefe6a4c47e7e5e0", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "86ea90a89aa9f34b9c9ceddf9947ae8382bf8515abf9a96ef73f8aa4b4927213", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "fd20035c76dc6e653b401cb37dafa24f7ebb594fa3b0cf33be6d7427f0e30b16", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "a962b9fb5b8eb76aafc286baeb69b5db136721a629f085d402f2784d29823dbf", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "746b39d7dc2c40d32b00667c9f613c2eaf461f7ce5bb006364668059055f7b24", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "06a4091edc91f27117d1662b28e55983db83e61cb75b4c6c06b0b8bd6e2139a1", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "ccf9b41d2698d6c64a81cc8f936dd53be12d7d7c4f18d35b5d2448a52cca3aae", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "38b526820ce719d9d2875ac60136e02f6c45c8eb6cd9169b28ef3704e088965b", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "38b526820ce719d9d2875ac60136e02f6c45c8eb6cd9169b28ef3704e088965b", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "bb70178b310c862d4c3fb16ff192d420c422358779eef53ffeaa38e8a0943048", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "d00e00ab81a6e7c7d949bf0401141dcbe060a6f11d6855bb1e52b1058fdfdea8", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "8b7b9bbf1f6cb361aa43ed7bee4c86634377bdd4d642980f5b4bbed4d27413da", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "ac61b2e779a65a0c6500b7352784f0f0a37a3ccc004f5990f048a56f2450a44c", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "bb70178b310c862d4c3fb16ff192d420c422358779eef53ffeaa38e8a0943048", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "bb70178b310c862d4c3fb16ff192d420c422358779eef53ffeaa38e8a0943048", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "d506d055431a6b5921ae62e17f4a34266d418dd8aea1c5f4953047652317d993", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "dff464325b5a0773ca2eaeb0171fb7c977a62a711d9a6e8d9ccef8c741ef85c6", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "0e2905fb5f15605ff97221b14e009f1c154ed8c5d3fa13a23cc542dd772b6672", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "0b487ee686f8df0c75584b6c3d35a766037d8e39aff1766b1207d974a2bd38fd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "a2be549981f4cbcf3f6765c58a19dc7a990dd90a5ba15ea87c18cd7ec184fee1", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "d15fc72d7474c89bb7eec17d652b471c18a6af0c46188b62ae14fd7ac48ac343", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "d15fc72d7474c89bb7eec17d652b471c18a6af0c46188b62ae14fd7ac48ac343", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "d15fc72d7474c89bb7eec17d652b471c18a6af0c46188b62ae14fd7ac48ac343", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "d15fc72d7474c89bb7eec17d652b471c18a6af0c46188b62ae14fd7ac48ac343", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "d15fc72d7474c89bb7eec17d652b471c18a6af0c46188b62ae14fd7ac48ac343", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "d15fc72d7474c89bb7eec17d652b471c18a6af0c46188b62ae14fd7ac48ac343", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "a2be549981f4cbcf3f6765c58a19dc7a990dd90a5ba15ea87c18cd7ec184fee1", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "a2be549981f4cbcf3f6765c58a19dc7a990dd90a5ba15ea87c18cd7ec184fee1", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "a2be549981f4cbcf3f6765c58a19dc7a990dd90a5ba15ea87c18cd7ec184fee1", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "dff464325b5a0773ca2eaeb0171fb7c977a62a711d9a6e8d9ccef8c741ef85c6", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "e7091f82b373208020e5a69bcbc254bb2f2721f167d9597386ddc561d11e8f5c", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "d3102d5609915bc3ffaa7c9da83068f57a6ffabd68b2fa6feb5b9824dbf01245", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "13716ff54cecfb6d457f278d7954f7a84b248ca218bafa6b30affcc64caaf61d", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "e3d8300675fd2752b5bb12a1f063c684a4ddc964db6c357927fd0a65eb530648", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "a06676af56bf4d110731e8b3e258c006f893e0f8dc7ef3bea04504164dbf3826", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "2550b5324748755eb502b1042ffecff3576a4193ba5f8b1120607cf2c07cff26", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "18eb64682a056be1455f7ca9b0ac22cf56bf06550db2847fb220a9ca44e22cf1", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "bb70178b310c862d4c3fb16ff192d420c422358779eef53ffeaa38e8a0943048", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "bb70178b310c862d4c3fb16ff192d420c422358779eef53ffeaa38e8a0943048", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "b28943db6e44eb6f45c7f492d0b8419d35ec50eab3e161bfa25368e2459b8e06", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "c28925d07274d98246e2b456e7e346354e6c41caddddf34aac3750ffd6d3c985", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "564b22675ea955dea951cd7db3b8b343e538332bf91790731b02fb42d87052eb", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "94b988a106740735341b9bf0b3dbe3b5bba0d5107d3cc3b0ea74e68da672a5a3", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "38b526820ce719d9d2875ac60136e02f6c45c8eb6cd9169b28ef3704e088965b", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9131bd711ccf7e903e45157c1532ceb8a820beb4286cfc6125767af25d3a80ed", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "9131bd711ccf7e903e45157c1532ceb8a820beb4286cfc6125767af25d3a80ed", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "cf8defe87e4369f0225c8c80c261ce13acb3944ca459983bd064c91ec6afd3cf", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "9131bd711ccf7e903e45157c1532ceb8a820beb4286cfc6125767af25d3a80ed", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "bb70178b310c862d4c3fb16ff192d420c422358779eef53ffeaa38e8a0943048", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "bb70178b310c862d4c3fb16ff192d420c422358779eef53ffeaa38e8a0943048", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "a1b56d1a47ee6a7c9fc740ae81968564fafe1b007917f4cef8b4ccbff920032d", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "887dff25be031b7eef05129ad051d73893b39bc149dff8e1b2c7ebf3cc2eadde", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "aa9c684ae9207ed3e0c9a70ea3843c20ab9515f1fb8c7cb35912ce1964ed4c45", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0338ac2b07160b6f398c310f965495bde4e14b48ce70d1688086216219049ce2", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "27d1796b2523dd8f7e408ed570328dd632b1ea667b5e1659a096a004310b3869", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "d15fc72d7474c89bb7eec17d652b471c18a6af0c46188b62ae14fd7ac48ac343", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "04127b5d12066781d3cd82cde9e13c3f810216f566f5bf397b89076fed6dd3bd", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "871ba2307ffbbe0046bfd69a9950362c613193952b90cbdf533bb35ff44cd804", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "6a1d217e0c502d289845fd133d77720ff5850e9b1723afbd540c76b5b73263ba", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "333e49f50cc08098fb296f3b069b5bedc99096fb2a1a28fdf8a7ec4c712b800d", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "c7cbeca78021e56a9a501063583ed9b9aa188d879c10da1afb61db2fe0b2baf1", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "eb0dc0db97a90341e72fd6746ef7cd26a929b8616e1bad87394e14ffcfaa6f91", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "0eb6314ba2a9946f007d938d3a4fc8e12348ab077577be196af407ad9c704239", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "d819eacfdd42a4101dbd894c9460456c96ce016508eaeeccd4f0a1be71298ff1", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "51e95ee11945f9620544a5972ba0c9605cb1554082f098a9ba8bad3f92030389", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "676b323108dfd7cef9d3d8f000bfa1e92e22c8e7f7786c73323687f8598045d2", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "25924b93b112c98de3f1becacabd0b536c40e3f8122f452ae97342f8d66f4ac1", +"TT_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "58daf7b81400bbea381128d479359f4b9b4c2ba452206dc9bf348ccfddfb4dae", +"TT_de_eos-test_get_public_key.py::test_eos_get_public_key": "e006fe4ab14503dcf95f0a11720f66e634bb3f15e22ec295a2ecb753c710e97b", +"TT_de_eos-test_signtx.py::test_eos_signtx_buyram": "ccab76b4345b526c169095836254892e43977c0ee7efcb2fb93cc672b7b74ead", +"TT_de_eos-test_signtx.py::test_eos_signtx_buyrambytes": "8bba437e2e28c5f17135b9d2056435bda6dcd0cf59ff28d67e9760fbaa2572c5", +"TT_de_eos-test_signtx.py::test_eos_signtx_delegate": "432de33f064693bb9f08403145e4351f929153d833eadd8f854bc7a80b7b372d", +"TT_de_eos-test_signtx.py::test_eos_signtx_deleteauth": "57c09423aabaaa7cfa004c1586fa4f56ba3d3920fc74ffbc744449d4669f176d", +"TT_de_eos-test_signtx.py::test_eos_signtx_linkauth": "a7daef365e696c1ddc761d7e4a2de6d71a9fb8fb15121ae6f348876a13e240a1", +"TT_de_eos-test_signtx.py::test_eos_signtx_newaccount": "23ef394ecf8d19904b56d4cddf018e1aecdb11b0c42eba9979435d4edc5e521c", +"TT_de_eos-test_signtx.py::test_eos_signtx_refund": "7e0a98bcc97e61973d5d99161a14a9c250ed6bb5be37eeed21c757b3262016e4", +"TT_de_eos-test_signtx.py::test_eos_signtx_sellram": "ba25d41c4f764ff271d03c234a7aba8a480e0744928c764b0b507aee7b7d3943", +"TT_de_eos-test_signtx.py::test_eos_signtx_setcontract": "0fa0c2e297a4f47afe90bc65c2ebe03caa1376d01f5b5c16ed1c03c92238169b", +"TT_de_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "86791587804cbc66fc78d533ae0328b90ee119bdf1de5081682ed28cccc7b78c", +"TT_de_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "86791587804cbc66fc78d533ae0328b90ee119bdf1de5081682ed28cccc7b78c", +"TT_de_eos-test_signtx.py::test_eos_signtx_undelegate": "03b08a6a2d82f3abe85fe7d74a036981b4c55ec55a247b9db5f923a4efdbb9ae", +"TT_de_eos-test_signtx.py::test_eos_signtx_unknown": "95d81e22435508b6bf4ca503944ffabb3d570828645e5d7a7660008148262d4b", +"TT_de_eos-test_signtx.py::test_eos_signtx_unlinkauth": "b2bcb3d9bf4c48a1f23fd6b0a1e969b46ab705787110cb822d6d9b6873164238", +"TT_de_eos-test_signtx.py::test_eos_signtx_updateauth": "cd7a9acb47aa42509501ce4f5deaeca9da3a3191463199d0aa32cf1f2c94b5bd", +"TT_de_eos-test_signtx.py::test_eos_signtx_vote": "9ee3900f8206821fd48804d11cba374a1d666827deba0ab6af72e62e2b023059", +"TT_de_eos-test_signtx.py::test_eos_signtx_vote_proxy": "0d1bf4318c6e3791cde4decb1c2de7a4c8d3e7d2264e2de4a10ad163da6fc9e8", +"TT_de_ethereum-test_definitions.py::test_builtin": "a9911f93a7d4eec6be64ae4b34238213e61351a82eb2449f01a1783a14369fae", +"TT_de_ethereum-test_definitions.py::test_builtin_token": "c42f6c268ecba70cba7aa8f124733cff0f39ec73a4d0dda16f233855199a3c13", +"TT_de_ethereum-test_definitions.py::test_chain_id_allowed": "28a038c7c64bab968fcc77965e30baa1b6b0836b44054854ea3ccb47704f6eed", +"TT_de_ethereum-test_definitions.py::test_chain_id_mismatch": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "c6a05a0f32e70520051c455d0b33afb5f02343edf741c5c5610f5f7c4c1258cc", +"TT_de_ethereum-test_definitions.py::test_external_chain_token_ok": "649933fc092d30217bb65fba260a046dd6bb72e7b7b6c49575fd206b65ff0578", +"TT_de_ethereum-test_definitions.py::test_external_chain_without_token": "f9007e7b767ad9b93070a308b8991414e6d33ee46ee5ff5189c8820a45259f7f", +"TT_de_ethereum-test_definitions.py::test_external_token": "0d0a14cc909d2adeddb7df7a10066e70f87a28fa340439c41faee8a0c9d9a8b9", +"TT_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "327db8fb908b47f085e7d5d6da1392982a6ca8069fabd7ded32bb5e59647847c", +"TT_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "bbcc180b3a09c9905bca574b89431dbf27984120426f9ab5dd35f0996dde8384", +"TT_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "185aacc3ebd848f5162f48d53c7e2787c04906a07e14588a3a7030a5ef91decd", +"TT_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "ac308fbb4d3d50b330c972ec6e6e1add37651b581d7631430d00196e179d5dfe", +"TT_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_slip44_disallowed": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions.py::test_slip44_external": "bed92e2a240231bc545a672bcd53406974f221cd6592f3ce94fa29f5f72a5ee9", +"TT_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_bad_prefix": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_bad_proof": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_bad_type": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_mangled_payload": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_mangled_signature": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_missing_signature": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_outdated": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_short_message": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "30bfe0fc9a688d7c99026b20d660c54c20a3f07ec2981a543e1c2db6447bbc6d", +"TT_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "997c9fad362ee69a111b7bd57449bf644a687cbbdf010a210c150ee2948f94ac", +"TT_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "3e07cc94dd8a063e8dc228fbb48c5a2b1686778c0b5f64c463b860b19a4ce220", +"TT_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "1b4946434b6165cf3bc4807a4de726a80e1766c0c7cf5e6eae3e133bf22d26d8", +"TT_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "34f4ef0503b851e5255a55a078e9bd3c1fad9c21e57a26dea6d8730be7f82600", +"TT_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "85bc4e88342e676a31f86342c53db7e34637e843c444886a4dd0e1d208f72934", +"TT_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "315408d8dcd086ee907adf8f6fb70e69e51bc9761f99f67e137e857d253c4273", +"TT_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6eaaa5004bbd6306224a1c96d871f1447b9e36526573fbafd536c701be3ddbbe", +"TT_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "be32c92b8c1b1e099dcddd665656754cfc581b7c7d98bb6d9078b8988df951a5", +"TT_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a5fa694ef5e44d4d2fde4065e45afd678e55898bd7257ecd3dd3a17e27bb7ba7", +"TT_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "aacb332cf1d3b7bbd7a7f25747dea95bbb64b086c35768d378f713b50302e5b0", +"TT_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "ce3df9de8f856c3f97c316a62da79a399711b0fced85d2b857332cb9265a30c3", +"TT_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "be495d8fb60b5e6e6caa2ad29af6f10371f38f202fd24d5c728ffe6960b09065", +"TT_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "be495d8fb60b5e6e6caa2ad29af6f10371f38f202fd24d5c728ffe6960b09065", +"TT_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "be495d8fb60b5e6e6caa2ad29af6f10371f38f202fd24d5c728ffe6960b09065", +"TT_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "be495d8fb60b5e6e6caa2ad29af6f10371f38f202fd24d5c728ffe6960b09065", +"TT_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e34ec9b7d8e5dfacf46c34653e53b20003b1e76fb1259f89f51a102fa68448ee", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "f12bb5fe7116c3f8478470c09a1419524cb78cd655a93c54d96578f604b9c24d", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "6d37b12359c560c05492c5a89b5ff438e804ebc3fbc67988225e26b5297cbf16", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "562fb8d3d14ec911fd9cc3f4ad1e3d83fb818a2ec5e8085d92bd4a88640ea853", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "ad66f5289e75fce45b79596852feabfd204dfd9e0fbd7a9ccdd39c48fbdacc5f", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "826fdd09e1bd9586bccc2651baec3e985357948c4be465d78c59c869f40d8088", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "6d37b12359c560c05492c5a89b5ff438e804ebc3fbc67988225e26b5297cbf16", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "6d37b12359c560c05492c5a89b5ff438e804ebc3fbc67988225e26b5297cbf16", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "6d37b12359c560c05492c5a89b5ff438e804ebc3fbc67988225e26b5297cbf16", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "28f81647de5fb9a876057bb9219046ac6e87f9b5eb1ec0fc2f6602e0fab5234c", +"TT_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "475554205af3a010e771754dbf57acf0c2dff154c66afb198eeb5b21b4e23b1b", +"TT_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "5d6589349f9df89b3825837d7b985a781cc02e839d7e45cc08db97a22220af37", +"TT_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "da214dc580eeaa288b03f99c37ddfc3da85d16b260e4bd20dc516bfbcc2e2c35", +"TT_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "02fb22beb4990dd2298468c3dcc8b12bc84080ee6d6b203ac9be1f6818d810fd", +"TT_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "838978d6001b0c3e2353c827e583e0412aae670ad3c4731d1fe2a86cc0810246", +"TT_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "0c0b78ed9cae788326da977d5bb5dc9e75909bcfdc691076f66744e157a528f2", +"TT_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6b3a35bca41e82978f880b507e5228154b8d32c19c1529c1fbfdaa128a055f3e", +"TT_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "d1c68066cda7bde6c6985eef42ce0d18ed5515ab14953885b07d7398b825afb8", +"TT_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "534986eaaff2411613fa1cd6e3bd77800f89b161b92e2dfd96e8a218b83574ad", +"TT_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "4782b8035e415ff587c69dd50d52caa76420f4413fd053af8d8072a66a92382b", +"TT_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "1f4c605ba41fa76de26b26751b37e43842bbe15595f5bbcffa77b63628f579fb", +"TT_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "792c295c8b0dfb867c6815889dc3ec39a210788b53195603e51ac575d82598cb", +"TT_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "0d70259eb0e7b9e5e2e645c1fde6ac4f1d4877a2a40661aa8fc02d3c65228d21", +"TT_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "297f61af0a8cf1a75c21100c8c17997584fcbdedfd7248888a99eaf60ffd704f", +"TT_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "80b10a057be8efc5b8c31d3db6edf8a3eec60a9ccbc35737dfab496f48294472", +"TT_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "e019d39027b98e48e7f293777e11efa32becf8edc3d17eae7eaedc2026a7a069", +"TT_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "7fc544d2ff7edc67726b057803250c6f5e4ba72476c36668af6097f906317ef4", +"TT_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "6e1d2d3233b09121c9f6dfdf9bd0cffb1f2f7eda187bf219915ae778ad30956b", +"TT_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "1f4c605ba41fa76de26b26751b37e43842bbe15595f5bbcffa77b63628f579fb", +"TT_de_ethereum-test_signtx.py::test_data_streaming": "d96bde2ebc600c76b8a21a66066d1753f3973a7f5b3b722e9f2b93da63a407f6", +"TT_de_ethereum-test_signtx.py::test_sanity_checks": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "c745a6cda3c37d6f530374ad30e27da64fc56f376b81bf972d524de5692e4e39", +"TT_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "775acf5848a22f76f81ea2b4a6c97738c4bd5f4b629d7abfb1a51dab25b8547c", +"TT_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "85adde3c594ed7651146afd6e117e463674f6aa365d3568e5072546b11e57b75", +"TT_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "5162b76ea6d58acd1eafcfb0164a47a95f139720be81d6c27fae64dcad895c80", +"TT_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "85adde3c594ed7651146afd6e117e463674f6aa365d3568e5072546b11e57b75", +"TT_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "c745a6cda3c37d6f530374ad30e27da64fc56f376b81bf972d524de5692e4e39", +"TT_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "c745a6cda3c37d6f530374ad30e27da64fc56f376b81bf972d524de5692e4e39", +"TT_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "4c868ef18e3e60065543f7f47a895b9217d454f7962a9c25bc7cd5c972825771", +"TT_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "4c868ef18e3e60065543f7f47a895b9217d454f7962a9c25bc7cd5c972825771", +"TT_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "c745a6cda3c37d6f530374ad30e27da64fc56f376b81bf972d524de5692e4e39", +"TT_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "c745a6cda3c37d6f530374ad30e27da64fc56f376b81bf972d524de5692e4e39", +"TT_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "d8663769ef59d881859fe380ce5483ee30cb1e563a10611480a087f03b7cb875", +"TT_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "f16e2a0eb874d59db97f7eb5400b5b9fce629dc0ab961fc5d091db89e59754be", +"TT_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "41eb934d2f9a7a989b9f53cf35923a5464e08f94c3c89b48272aa5ce7f74e5c2", +"TT_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "c745a6cda3c37d6f530374ad30e27da64fc56f376b81bf972d524de5692e4e39", +"TT_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "c745a6cda3c37d6f530374ad30e27da64fc56f376b81bf972d524de5692e4e39", +"TT_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "c745a6cda3c37d6f530374ad30e27da64fc56f376b81bf972d524de5692e4e39", +"TT_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "6110d733403d232a82ba40445b87458779279a2f6aa605992548a97cb0d28337", +"TT_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "942f953be0f45af08cd4f580d2f00544652563849a02293c82cedb9710547d54", +"TT_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "b1ad0b2f2c1b922ddacac95f0cb00a6af51cf4cbcbd584bab27136dc83a37bd0", +"TT_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "15c11a85009eda2d9248e9c2568e9c64382cdf13c5b2da779c10c46dccdf03b2", +"TT_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "4012fda647b9ac08834090948008626a61026d66c7323a713d4eef0cb7e9753c", +"TT_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "103197c8e0d18f27da96fb7b78bb2da2e3057b5e6a7029d21ab64f9b6230ad29", +"TT_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "3f13c25a82da2ca423590c9d101f834ccce2bdd2a7a9e67fe846c64e44db49d2", +"TT_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "35a34b9780498904b3cde8f57401c17d08a936595780b0cff2c2eed0b5c76e31", +"TT_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "3f13c25a82da2ca423590c9d101f834ccce2bdd2a7a9e67fe846c64e44db49d2", +"TT_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "4012fda647b9ac08834090948008626a61026d66c7323a713d4eef0cb7e9753c", +"TT_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "4012fda647b9ac08834090948008626a61026d66c7323a713d4eef0cb7e9753c", +"TT_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "d68f35139d970d185b6899e7e1d0e42d0cf0bbc9104bc98b11b6efc0581b23b7", +"TT_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "d68f35139d970d185b6899e7e1d0e42d0cf0bbc9104bc98b11b6efc0581b23b7", +"TT_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "4012fda647b9ac08834090948008626a61026d66c7323a713d4eef0cb7e9753c", +"TT_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "4012fda647b9ac08834090948008626a61026d66c7323a713d4eef0cb7e9753c", +"TT_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "2ee77af2e8fe55718c8f3bcdeea0000f689e4195c7a2efbe878c6a1f6bfdbf42", +"TT_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "7326bbef29c71d8c91ca267dbe582a6f187f7e92fc236c993ef620936380f45f", +"TT_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "cba464f1214ab879bf8e41144296a41374a7adea494a5ea986265a3423a4f129", +"TT_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "4012fda647b9ac08834090948008626a61026d66c7323a713d4eef0cb7e9753c", +"TT_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "4012fda647b9ac08834090948008626a61026d66c7323a713d4eef0cb7e9753c", +"TT_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "4012fda647b9ac08834090948008626a61026d66c7323a713d4eef0cb7e9753c", +"TT_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "6110d733403d232a82ba40445b87458779279a2f6aa605992548a97cb0d28337", +"TT_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e29f5f627c6aa8331605ea159d0ad32eaaf30f5bd29df60d7bd2662e4710dc2f", +"TT_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "35e45906e0914614d8a1f4ba13d66fed4c3f07cf29ddf54a44bd9352331a66cf", +"TT_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "752e7ca341b904acf558610af0ee76e0964c87b2a1f34160cd70376291ea0df7", +"TT_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "a333b01211f11fc77a3838ea0ab3daf07e644daba96db045aab3ba930150f927", +"TT_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "c7840d7a822e4a060ad3cc2bad0b838e34d7875b1d4f0b034dee1b4e1375e606", +"TT_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "c9a859505b0e41d3aae17ed13a73d6ce0c21907172a1172a0c13f98cba46a98b", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "942f953be0f45af08cd4f580d2f00544652563849a02293c82cedb9710547d54", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d8663769ef59d881859fe380ce5483ee30cb1e563a10611480a087f03b7cb875", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "23482fa00ac9ad0f165d69a0dd5b4e95a4c660a98e919801cce1b53d5281f59d", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "41eb934d2f9a7a989b9f53cf35923a5464e08f94c3c89b48272aa5ce7f74e5c2", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "9970b894778a741625dfd8a3af1571f4013998a04e08fba37741c3368afe03da", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "8343841b63a950bdcd625ba4afb8526665680d7bb83a7c85897756e1ad9ba2d8", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "942f953be0f45af08cd4f580d2f00544652563849a02293c82cedb9710547d54", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "e29f5f627c6aa8331605ea159d0ad32eaaf30f5bd29df60d7bd2662e4710dc2f", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "2ee77af2e8fe55718c8f3bcdeea0000f689e4195c7a2efbe878c6a1f6bfdbf42", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "62499e5804a428aea7c7d60cd9992d3bf633beed09518a575d71ea08e241946c", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "cba464f1214ab879bf8e41144296a41374a7adea494a5ea986265a3423a4f129", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "c46d3677692f7cd0ec487c0ddce371c5233d6a3617a170daa8876c6fffca4b65", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "35062912e5773f47dd247af436bb55206f6c2770f5d4959f4a514c1e50a474ca", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "e29f5f627c6aa8331605ea159d0ad32eaaf30f5bd29df60d7bd2662e4710dc2f", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "81a9c2ec7649defc4774fd4b0da3fac7c0df5578598b0d26226d5bd8dba348c8", +"TT_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "81a9c2ec7649defc4774fd4b0da3fac7c0df5578598b0d26226d5bd8dba348c8", +"TT_de_ethereum-test_signtx.py::test_signtx_fee_info": "355d0d1e36c10c43565dd1edb3e23305da2958f832ada8702c97ea2c1247ea66", +"TT_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "3cf2a85bb6d4cb7fecec5ef396760c457974c89711e92ee309e37d3efc98dbc0", +"TT_de_misc-test_cosi.py::test_cosi_different_key": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_misc-test_cosi.py::test_cosi_nonce": "ff5867ed4ca9aeeda42ec4ab98afb6b5c85e0b6aa5d1ba00c4cd08ec6e798f78", +"TT_de_misc-test_cosi.py::test_cosi_pubkey": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_misc-test_cosi.py::test_cosi_sign1": "ff5867ed4ca9aeeda42ec4ab98afb6b5c85e0b6aa5d1ba00c4cd08ec6e798f78", +"TT_de_misc-test_cosi.py::test_cosi_sign2": "f76c8bbdd054e56b727d121dfa8649d8010ff3e1791efac2b3cd9fa1101df5f0", +"TT_de_misc-test_cosi.py::test_cosi_sign3": "32ffd2f6e3b4acc98703572d904df03abd21389e2dfb1e5aed654cac0d5fe3ab", +"TT_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_misc-test_cosi.py::test_invalid_path[m-1]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_misc-test_cosi.py::test_slip26_paths[42-0]": "d743b6d1e7c884e5f8ec934731ce15b1a4f951b7e116c05441abe9122a791f38", +"TT_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "d319e6f6c6e92deb2ba2e3c32117bec76c79e10a14eefc9a919e0d5b795d02b2", +"TT_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "29b32c1ee2380e894a6079588da0b0de785fe29e2a115bf880496136146bf03a", +"TT_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b3403a89f1d1d896e807a50992ce249edbb9f0708fef5a458ca6a4f2be940648", +"TT_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "5fed33bed37703ceeb87706e5a6f27e52028ecf476442a81fbf4de931ee91966", +"TT_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "7ad23f47def7198e57c2f46352079091095ebc7fcadda8629591855e97512793", +"TT_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "30edf9894db8ebf288ed49c553e8d8122f6cd045063f24ad39556971d3f3cdbb", +"TT_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "e4b365fc5e62775a5547bbe86455d46b033b4f3386d5d1e0751e2b595852bdff", +"TT_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "fcd94602e080432b15f941177c33ea052a4de70b7c85afe43b66183f5c916105", +"TT_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "336eea99242e37a6931c4898f12992613a741723d6e331d60c4a2c041dd3cdc0", +"TT_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "5cf059f51df179f00a9a3ff2cfc478154dc8cd0930018897465e3eb48b3b8b48", +"TT_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "e6f67f3681d3757a9eba0609ee6fa9a3237f649cf183942c14d151c4f8ceabdd", +"TT_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a4e43e9146d2ba5603da11ace817d8627ba848ae42f362ffab8a16c85bd806c3", +"TT_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "baa2d0706fc713f3dcb86e6cc4bd5ef361b987edcb6fb316bbeac465eca97b3b", +"TT_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "db27174fc9227a6f4ca2e8c2ca4c164c0b8a11e80efe985a7d04f1a5c17d906b", +"TT_de_misc-test_msg_getentropy.py::test_entropy[128]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[129]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[16]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[17]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[1]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[20]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[21]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[256]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[257]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[32]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[33]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[3]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[4]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[512]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[513]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[5]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[64]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[65]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[8]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_getentropy.py::test_entropy[9]": "2806c7f1a87027808b718e296160ddae29136418054d31d4c74da1566af973dd", +"TT_de_misc-test_msg_signidentity.py::test_sign": "4a21a3f1703f759b97aa9f49491396f75dff1726681b3068badef2d2e592adf5", +"TT_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "6a735e28eae47e811f33657e6c1c24226054d3659cb5dfcb1248704e198cc77b", +"TT_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "b7c5ed0ff96e9f075451bf679f5a24bec9be342f7d566935360745924004aa04", +"TT_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "cd570b115295e9adebea943f533df5427f178f3075903685af0f0ef424473b57", +"TT_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "5ba92992dfe30929ac2276b17b909aed14c0159d8272b34f375940560d600855", +"TT_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "1080bd1ba895e89b32da0a5b98ee9b75debb4690ef99de325d8c68477c7f18d7", +"TT_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "54969ffd746effc51cc6dc4d02ec2ad87915cc2d14d742ebfa2f928410d6fdfa", +"TT_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "51d8d8365b514436a6b03ab6c5d3bd7cda64d1e449fa3e37c55261500f5d01f8", +"TT_de_nem-test_getaddress.py::test_nem_getaddress[False]": "edd0496d6203b444171ba8dd529589c0c97b994e4b5c2c93888aaa2398ebbd9f", +"TT_de_nem-test_getaddress.py::test_nem_getaddress[True]": "c0b769b9550b3af92c2802fda919ce8995f0ab6a853dd27c755c388eb49574d4", +"TT_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "32367dae37088e6231668e579af673a11abe18397dfce467ec7e25bef9eb5ec5", +"TT_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "f9546bf347a610d4da5b7ead72ac40315c88bbb0692bafeef878b6140e6fcf1b", +"TT_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "e8db92069c0381379dd993298ff5890f47e116ff2aea8091d8507e724385d9d8", +"TT_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "57e72d4b1daf1ec93964f059636b2fe05b07d72914d1baf20105330cb7b0e202", +"TT_de_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "a4b057ca6638a2b7bc2e261625a9876716c561f17e96066ba41f0db9578143fb", +"TT_de_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "4c2dc5006e442c8eed7d08e7bce8afa4e84413c1689a1ad7e91ee82b2de733f4", +"TT_de_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "a193cb16548e20fe227f223e6dda05470ed8e7d18d1db77b7b84f52125440fb8", +"TT_de_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "788f4ff6345c472636e7cb79f131d9bd24644265b62768e72911b28799d66a1c", +"TT_de_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "6173c7b4ff81c5b2209e49a469863948e894192d047594ef4cdae57143985642", +"TT_de_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "0b95139083c0aaaf0157879d78a0c41f17a223c690ffa5141ccdda248d383639", +"TT_de_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "c220cd170e139c63ff0c0bb535ac15edf5f2c0e57959b5ff46a6bf86e21d4adc", +"TT_de_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "dcdea64ff86f9c370048e6dff6e3fd8be68f710f3a99ced0dcd1efd66d5980d8", +"TT_de_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "8a8ac8b3b7dab6e04e1ea38700a9427d35d78c95c04de4fd15a2164601ba8f78", +"TT_de_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "352bfb58f99e005109f0e49dfa27a36cc4238f24d5067e2c437bdb92d0290487", +"TT_de_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "e6dd52f6775a1725f6ddc0a4c607830558daf72d859d7c0a3e1c6395dffff1b1", +"TT_de_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "8219ceaf1c4a9891bb20da761def0f1996d63613efb3baf7797e03e444066c0a", +"TT_de_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "a8441cc065abeb58356293e505437ec307864202a747e57eaafc2a7d944d027f", +"TT_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "a9b23432f0a134ca0b315f3b02988f6a0453a3a23adaf314de24d697c58a3206", +"TT_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "fe9e3105436cd107795a644b00c8fea14123ff8312b77fb36f223057c96e50c9", +"TT_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "f9f975010d62a7c1dad177a344fc388b5705e88059715181f55a71a8a6c9354c", +"TT_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"TT_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "79b832c1956d6dbc4923985a5630d1354f6132473a0b2cbdef50464078bf192d", +"TT_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "85857f61f63ecf65ec9753e0adb9e8697b6055ad1ee2e23769d0d42f3ec8b9d3", +"TT_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "20176f8ba20de12b6500261d974bc41ba7a2165602abb244c0be209d452f085f", +"TT_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "88ea900f33e18986503c0ba67e17d51dd633e60c467f6971c74ffdd07f61cc7b", +"TT_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "10decdff5f53568c9daaba840edb994e36af573a7df115e4b335f68d15604735", +"TT_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "6740c578843315515e6ee4ec5e7c751eca148ba2fad1288964ec42d1d970a4a9", +"TT_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1480ac14764fb6c5ee8f648803dbd94ea23102b0aec86846b0676b13540030b9", +"TT_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5864bd488db041dc55d14977b3968489e1df374fa78fd017f43dbbc81b2d4f56", +"TT_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "41388baef365583585354171c1c3da6cf1cedf02a5df6d28e363f1180bb2477d", +"TT_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "ab604295133cc48ac7d7cb0611f976257b666bc75313a86e4d912c954031853b", +"TT_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "24a04da99d81bd5d89db8e35383e6b081fe253dcc3c92341936a2cebaca8260c", +"TT_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "c659f51eedbe0456f2723291aa247459ed72c6300a8aa6c7c61856bffe70fe70", +"TT_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "93d23f1101f96ec49d3d226118dcbc289841b69f80b258a83ce6910845439d97", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "913a062bbfa46dde6e2500893155cce8a9830887829101ecbf67323fa516ecb0", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "20176f8ba20de12b6500261d974bc41ba7a2165602abb244c0be209d452f085f", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7fae58f34ecf4f14d0e983f24506589e9fd1d3391315e18595366934b4fcc70f", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "26ee960c24206c505b8ee1345d371e4af28e3452ac698940e0f43cd264679c6e", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "ad1126e74dcd5bbb648d725053410f4e849a032b23df309fcf2b5dcc11112def", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0230cd97b5498b8abca4cad636ccb9407156219f04fc2158c86f89f2e4bb6e65", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "8664df419cc8777e033e8fc622b3d6d13cd836c8726bc6ebd16a5a7ecedcdfe4", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "58804d7390d806a4bb51a3bae20398b7b803ceab16f96969a420f60458a990b5", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "4e9098b117262599b0780d0a75c2a1691ac4bde8b3e457ea15cd87bac9f3be67", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4e3b6e4726aeeab4c1e2d7595d9b3a905450c4e378e0ea917bdee27d40b6ecad", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3f6765ff61de0bde30c6eeb0ccf7abf5fc97f7070c4e254f1df1e2cc5a6de652", +"TT_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "cd7149c61a6720986274e59670b05578633b20c7ae7642ae95065e7c16a2fbe3", +"TT_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "8fa40c96cb3699c5dcc8ffa94cefbf4f612909251f582f4e52b682bafedfa9f4", +"TT_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "18f7ed84f902d0d34ffe26bc0477c451f377f432250b431598e179f7ce7e6817", +"TT_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f51fbb5743470b7193d77c4f6ae432c1ea45e658e00d7d07d4bc9ec983c3b4e2", +"TT_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "7465762058ff8c2ccfba1c30bbf99ea6e4204b481c6225726febf3823a3b174a", +"TT_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "024cfe39ee7832b74518b8736200c1ea3b34d79944cb11d90ea3617cddc4e74f", +"TT_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "2b3e140ecde9847e2587fa865c694bff7599c22493709f8c73a18e4c14da9f3e", +"TT_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "9dfd6008bbcc002132961dd2eac1c9dc7b93cd4d1a508a637839608202c6fd1c", +"TT_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "96b3c96af5fe43c44c6136d8a41cb1ea57c98c06ac78542fa69f5f09af7e647d", +"TT_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a69596cb826e5ffe62cd6df9019e96e0cd8023c7ef0aadafef5062976ada21e5", +"TT_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "cbe58d4a4db19e068f065c11156bc57902f74322b0d43bfc8cc02eca0e612d0b", +"TT_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "64d5657d1438f691d133e37a119f929e1f88ead743f86a308147b1dd2c7c7fa2", +"TT_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "3c82b32c1eec11e6a6d03af0433643b599a5618ad97e78cda8e5ad5d4c132276", +"TT_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "5c075fd28a535a2646aad8ceb3aa52681246ed2f7ede8ea6e9953467a39bb688", +"TT_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "007111806e9ab399e024066ba16713c7ef7601c8ceea0abe4d42c439e256bebe", +"TT_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d97f147bdf315e953e54d90d73fc4e577a0d1844b303b4fc0d37d1df1c6526f0", +"TT_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3dff9c1ee39f8e05c9bbd03d95195e228c1f989cfdd382a245ee0b87b3f01457", +"TT_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b5cc64b974e034ba295c14bc6afd35d7625c4e55f2754e84e6e5d8eb689834e8", +"TT_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "43b156fe5e1dae24b42635f0dcd4c0dca44faf9c0d6bd6c9283b5a3b2061c833", +"TT_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f48543162bc19a68ef33ce16c2caf9067740ab6188617320eeada7aaf0be9b52", +"TT_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "ef6de3aee3f8121d1a8c03e783f15e9dd48ad86a07d5477f4ed3fcb6e910b21f", +"TT_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "f6b2ef6996e5a803c9a34ffcfd4c3ff4f920ea671181b1d7731b68301e40d364", +"TT_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "0ae8f3bc3ecd0f29a3b629f80fa5a5175157ee4aeff2b3dc249fdb7793831d3a", +"TT_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "6eabde017d19843a32c6b51327cc35a5feddedf9893780b1d58f39a1238cbed4", +"TT_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "1abed853bbc347ffeedf743d0919e8e2b353e25a4f6cc93b318a208695b6007a", +"TT_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "098c130d57c17a385f0249d1ee6aadb59476c8b16083e9e2e2960ce43290785e", +"TT_de_ripple-test_get_address.py::test_ripple_get_address_other": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "f97fb86018e9e3a45a91bff7a93c033fe5d89f1954eef6680abe07a8fd28a0ab", +"TT_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "b6264a35fc59e4d45993d1a084988dd76997a20f520e02b7836d183d5736b6ba", +"TT_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "2ab095f6165dfb5b2e10e59092c4f75f2ebe312ea6f3278cab8af6ba3430fd9a", +"TT_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "dd81c3e941cbed7a648485178148c4017491fd7f4efc7cda0d9b86417639fa5a", +"TT_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "c06d205be59d157ecb1e2e43b509a730d576efb64dc13bf6fb47b0f8cb906cd4", +"TT_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "c095a123ade6d965d84efbf0bf67de59d0bd4446cc1887772dfb2239f4c50021", +"TT_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "e8c3a90489d278c737ba2fd77705fa6982817b90273f7edf803e4af29c75c518", +"TT_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "76c6c01d8db304892f5c08b0d4896a53243975e4ea1d8c98053db7b2761bbede", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "943080201cd7e9631e0b71fda85316759be0022b408037a8578532ec5861a4d8", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "f87fb3543d89c2c669ebd61b8f64d666491faa04d841f893e4ccd99ef40b9711", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "bcb51215a81b53f5a9062180bb7cf9a2ef224e1d81a2393ded6c1bcda6ddd7c6", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "96797d6630b8ba86df3b3cc6c8ab5a1f4446dc986558c58f157ac1a7f251c1ec", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "c257a5584b5c62cf467e33b4384f8b4ad602393e2de4c8bcf17835bda3034417", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "1a60bd9c62620e8e719942151f37fb01b8f1a8548ed0ea8c56005b1290169472", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "6ebe08c05b0186d03515698affbbc45f62fc50c7af4d8991f4041d97b311456c", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "247403aadcfd624564f4b5bb1e5d457557db31c9c02ed97c3430da8889688fea", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "42968c58d3cc05ca1a31a0bc8cac82237b2a762db0bb9cd98b1420d90c16acca", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "f1b76958d654c11c77041d710976fccd4664e719ba3d9fa26c72552814b56d01", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "ed2e1ac81ef9feaffed50548f026f4f38745a2d379177307f218959dbe79dfcc", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "9301ed58f8bacf454bed7b56e0a20c309e6ef6dc26955b1d85bb35641d0d0683", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "8e36752f0763644f6aace5f2cafaa31200a5bcbc36faff440f9d7ac4fbd78bf9", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "0cc6aa4367c34b7e198e7d5e5a212f3dd878c77274d2431809666a45098cf37b", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "4f215962416b3682932be5bfa11686d3098eb727fea3ab118086d66d6b5141d9", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "6161c90441ff38a7e491c02ee75b5c7fc61b4a78ea8204cfda6a323ff0d7ceb3", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "1f8796cceeee9f70accd653ce80f748baddc9f8fefec528555de30fdabc86601", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "4a4e84d83a4e140d4aa1f2d4c2d6760f90aeb6aa80f27abaceeda2b15b7fc8a3", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "3bc728de37a5c18c461c75c4903453f0bccdc994e61ac94a331371cadfdeb3b1", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "f09aba4e9aeccb8d1cf48f0ccba05b20efc30233250f5f012d6414a5cd88b5e2", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "c52eb129d140e967932b99ab7865dd660af99282c6a6eb5e5f69ede7a82c5419", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "82d38f67faf1df6ab8d7d8de59f58fbca25ecfa18f82d0318c00ee19b0b8ae5e", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "6d299e05ed3da0f7bb27384a7d4b07abba6223ab0136af652749229cb343194c", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "bfa13f74fc8cc2dc025d1d649bfc5689d1b262744313442bd7de92cc9e83c176", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "46cbfa2e373e949a8d8582dd17e2bf66235dce02221f12bea253c1acdb24065c", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "b3d6f0dc647e415656e375548dece4e2614cabf2555fb696fdd510375466dc2e", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "0402ddc91ffccdae8e3377b4d4f9aaa12ac21708335bcddf5a1edd6dcdd5d441", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "dd8c7b46ec4855ac7484ef52fb44f9c2998b0a7825c536e56c8f9f48a574047f", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "7a28942730e77a693fbbfc56d6cbdb2d63373d65038c544337fd687ae612f16d", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "a7f3f0390c6f7a7d810ddcbf943c49dfc3554ebe9a6cb1125ca9955822ab0717", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5599e29fb2215e8f149e072b3699e004ea923c54177dfdc4683a52ea54d4544a", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "71c06c3e8ff3eb05c7f56229d80b6d10fa4aa2dddc9171514b337dcb2a946b2c", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "7c13da2cd8487bfadd0e6dd1bde122620620f93f78d8b86195a6a0a970cfade1", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "10537c0865cfa697d7ae45a75d6b33ab5491bf92c07a7826c5de266734372995", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "45e08722c832c3864b05c6c1e3e5e2766e1e1e91d551d8825656dd0346d68ce6", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "a4229da68c0c971961b03bacd48c79a6313ef3823b7a8ffe5c4f7d26e5b7acd2", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "f53e2fed07fc3064e709152a3e0d8effdffc9b39637a629ee4504e870b64d5c2", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "54b8c99c5eb2797e093c55eee8b67b80554da8eb5f70c8693d86a34a3a760228", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "a4ab2c1aab58effd65b0dbb16833c47c86fb54c25a1ba84e13d6d39935cac985", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "df8e0cbcd9da0649dd10cadecedf23ec1e93a84f8438490071f27207f9475e08", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "96b6114f2f9c427f68063fcf5bfc9b45bd1ee20be6865af465014e295abca587", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "c1587386307524ba84ed889fcdea95135b33f8c6447ef97f459ec56057ea6ab2", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "d9ead03acb425d52a5aea366bff6f2c3bb316946d168bf045ad4c4173a5fa6af", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "e1764e3b303b7dc560d7947c20dd0b10492c32f8ff1896b95f03418113c9240b", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "aee23c3a86176995b00bd49c5077a75adc848c4944ebb80280f319f61663b89d", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "b44fc3fbc795096e134766839362adade2d7ebdc3773c05ebb82cc888adbd561", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "291b3f1bfb286d6c9e6b1764f416b58195401cd7f41f40953b9e2df537556952", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "bacc3e188f30ca1dea613cff85c131a3da028232e7ccf166e87ba981018a6241", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "0f5d803ab25ddf13e7985ecf4fcfeff9b813920cb038aa9e5edc4da09f74a8b3", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "7479e0d4af973e719d89030223729885e4da1478c7c2c06ec4a48f97ab1cdea7", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "4e427e4469ec5789b69eb141940d54495f7188179c6244ddc8acee30e18fe389", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "161f21a4021dd78677afee054a4b7d0b9f4f8f6aa3c5a876647df7c2cb0bef40", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "b770f9630aad071e740172a0a6c00f18249cc2fe34c518c8f21c747edeeccf5c", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "dc6cec118f918d8a7dc80b7ab7853baad128c6bf69d75e54658d3260868ec163", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "87816d3659c2983dc0bc99374a826cdaa11d58e33d9dcf3719b29a3e026f6f4d", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "ed42e2e35cee996471ff29ea2f602d0d8fbf4fcbe4343122d301cd3fe1588149", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "a7bc602e1f10f6aeb3c35d745f15000b98086d0e883122aa99d7025a81c5fc25", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "b96f74a55680a3d7ae806c95b1690add9ef7e971881f3226fbb3f6b5864ef78f", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "bfa13f74fc8cc2dc025d1d649bfc5689d1b262744313442bd7de92cc9e83c176", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8387fe6bbf34c6bd49da1ef8e43453de1601ed10f12ab4da1a6946a09c089837", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "86470212d6070ce90ef38fa39136fcae1dba7062909a8403eca1c6cdc6268a4a", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "c4e4a353e7d59c5de0c282508d3d24437019e418bdf23504205fd9747126587e", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "f22136f1404e8458fe169444015f546afb90f052fd023b1a022ff9e2a226649e", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "f7c067b1f4fe1a2c45e8473b17f622297de0a596007993318ba04bab65d6d344", +"TT_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "083c127bbc2369478ea7d71d884e5746f5ab4ce1c039f277580d45753c3fbfa4", +"TT_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7fcbe1723319f7ea411bba92dbb23c7680266dd6c651aab63f2fcaad5235a72b", +"TT_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "0c23f313a4892556e2f5464d4a22d4f49d1494bb62a78294c3797bd004dd1590", +"TT_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "310b3843a8112afe2a097c8e19bf1eba009cff1c60abd830eae6165150248dbc", +"TT_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "ec481bc8774423bbb3dea9f4f1f8bb257a159974e6a319e0244cd34079fa4554", +"TT_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "e576dd682bb9b6d03f1d2d8021d273163e4190321114466d0dfe2746b5635834", +"TT_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "32ce7822a4682e168566e444a0cac1b9fd11ab1661f0009ba4cd9d318ab0e1bd", +"TT_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "2505f3bfd9869df03b9f05329d12e46891073b9e793e7555772532767fbbd4e6", +"TT_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "4e4c27015a91fc31f895a54b5dc8a15f328cb052f06c3826c459b028bebedae1", +"TT_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "bf6a7162acb05e4c66c39ff71b1bb4d63e1efdb771c98be910f56d940bae7b3b", +"TT_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "1eebf3606ef6dac0047a4e92ad323403bbbd2feff53a2fc0077f9deb5d57e95f", +"TT_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "ea13a8fd53fabd89594e0e3fa96ebf155ed92563a56b31b1d96e1f7962f01be0", +"TT_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0a87f49ac94051bb11a6c404a494c6325504942eecd7ce570d53801ae978e84e", +"TT_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "5f40b4bf7d3c9af50cd728b0f60b1dc6f38c866583100876c52cb2d0335c8ff2", +"TT_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "bc2217b813cb664059053f074ff674da69b0b413c7e7227efa3363f82f436acd", +"TT_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "7dcfa31c6637004c6f19c0c064d5dec96fe77e9c4e3e698c796d022f2dcfa3f6", +"TT_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "67f284cd19534e446a5f230e3ae4313b3b248b192a09bfbcfe907203d0450ec9", +"TT_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "45ce71046636c84688e1b165dcdbc5b057b8fdcc0d5284c662f945d17644df57", +"TT_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "86b75961ea153bf0e6f6792988676212effa0cdeb6c26caee5fc6ad6594868f7", +"TT_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "391b484e8fc7b60e5d4b04dc8ae9cb10ad1a0c9b3aaadee5655ea732c0d2c0b4", +"TT_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "b76886df873c58824bb0b1821fc773d2ba2801918eefd5b6a962d13e375301b8", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "d5e2597f90b6b8329752bf46544695391136a6e33057c4fcdf4534d5776fc959", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "9bd5b1e34214479ee39c40353f6091609271d3132c1908128ba6b0f58c20ee54", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "4f537738e29b9141b0b5f303696ce64cdf5794a69434f395f653912cdccede17", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "e70d6f7dae67af5f6c1cb07df23363b53c53587554cdffc5b27e75e62eab5938", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "09f5a24f49e84c42d3a1a5e189d777a954b0911737586515c409b8713d36cc6e", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "c90b47b82c8e314f55dc978aafa6810e642e6337a689ebe259cb18dd86ac8687", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "60374647b64fa85e7cc354ac7c54fe1c157092c7fac324921d4183e0c114d23b", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "aaab9b47aec492c840eff15a9abd7797a664838681235fe153362406be47bd80", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "c717cfb9ada8c2440f99cd2b2f2a892e301440246d165ebc96cd5cc5a906463b", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "7f07c5182f8d637d86c1e9a9ab6860dd2f1ae7db6e44694e891e40dfa62eedb5", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "8ff9f88957092e632ce4f54abff2cd7b3b8f67abd15127ac4aefc20010c6cd0d", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "cbfcf3bb3728468dbdf82d332bcabd2a83bc2a1beee736ca2fa703d58008d7b0", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "42a171732735c9e8cd46aa3a859acdae77a6abde7ec7ac1e6021bfd59279313a", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "4fccb7774b324f07efd61e954ec1f601606a4e023502095aaad828572b50c781", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "abbdae96c73a4baff77c841d6a03201f21995d5681c3fd93ccdf033591e1c14c", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "073f63eeec56da7d53a36044cd4a1dad5b0f4729adb1577db1b4d5c4e11a9941", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "db49d7404023e3ae7c4b72da9cbf30bb4eca028963dbe62465efdc4e0aac9655", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "09af2d57cf58d199f5e0a339845b398a9eb44f5787cdd9eed957cabdbd76d969", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "e5b2623fcbd17f59d61a9738a96e2b46455ee011225a93efaabde09eadc12fbe", +"TT_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "59def57e407fc9b2849bd83992c0bc40bac38e0d0164170669f5f9968d5ef018", +"TT_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "f51f41d0c55e0da7a74a110f04ebf4f549833a573fb6d0a9ec9adc04074fb8d3", +"TT_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "e366b28f86ecc6d316ee1573cbae52626190f8facfe3c0a5f0968300bf11b6b7", +"TT_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "934e054156f50dd073217e3759e2de263eb1df4aaa8905622feeb011cbfa2f08", +"TT_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "c671b60119eb3c8816ceaaaefd53fbb99eefd725952739d8b49b529ab4879016", +"TT_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "993ec5cadd8133896c2371520f6d952f924334a5c9592ce5a0a99954b0ff03d7", +"TT_de_stellar-test_stellar.py::test_sign_tx[source_account]": "a34c47f3d1e55bcf6b6ea0b3d0f3b85e499d176066c6dcc94b0a1c92e5d20f18", +"TT_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "df7714028f4a48b0ac33f4c9df2b19bb499bddcea4235aaffac8385fcaa21013", +"TT_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "faa15d52272c3f9848faf390098f86df700e0007748971ca71133c460c11be97", +"TT_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "4c44d98eecccb32faa1235fd1623854f913783887d98ab14e943a2c8855e4d20", +"TT_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "db49d7404023e3ae7c4b72da9cbf30bb4eca028963dbe62465efdc4e0aac9655", +"TT_de_test_autolock.py::test_apply_auto_lock_delay": "5d0f6849fcae52c817c4de7345d71cc435a4e2022a9ce533970744c229148d4b", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "f40a0768c7e64af857704229e978426bef1f65a065ac58ac3623e13302b3ae66", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "f40a0768c7e64af857704229e978426bef1f65a065ac58ac3623e13302b3ae66", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "f40a0768c7e64af857704229e978426bef1f65a065ac58ac3623e13302b3ae66", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "f40a0768c7e64af857704229e978426bef1f65a065ac58ac3623e13302b3ae66", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "f40a0768c7e64af857704229e978426bef1f65a065ac58ac3623e13302b3ae66", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "916130d9a08963537ad9dccb65aa2b857c05ed942c868ccc986b209cfe1d7c23", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "33ea7e456be3d0faeb20608c1f63349fd113998366a50ca1ed016161925db832", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "59bfc48779bfb51f6c8da8e7ddbce1a3e2474d4e4ca049d5173ac0c60e46c4bc", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "19b59eb8daedb9c70434e515c54edcf40ba0c27d0ee2f2ef71c474bf8183eb0d", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "325378d4912084527eac4169694c39d2fab3e6ef287c7bc49ce054cbf5098976", +"TT_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "53ea68a2c400f38fa4ac68689ba83f50eefa04a286c6fd1ad348fb8a3b28691d", +"TT_de_test_autolock.py::test_autolock_cancels_ui": "a34657a5125ce1758eac0bb4b905119fef686069133f5b809ab9585c92525438", +"TT_de_test_autolock.py::test_autolock_default_value": "73d00230b4ee74747030d13fb54c152250b5551bb538466de2202579f2826f86", +"TT_de_test_autolock.py::test_autolock_ignores_getaddress": "996510e204fe4e937c1981ab9a679ec61c656edef13d389883a5e65b695b8b5f", +"TT_de_test_autolock.py::test_autolock_ignores_initialize": "996510e204fe4e937c1981ab9a679ec61c656edef13d389883a5e65b695b8b5f", +"TT_de_test_basic.py::test_device_id_different": "d15e25cda1050c29ca50dcf689ab2b60d33818025a74af28e2ff467f44cf2f7a", +"TT_de_test_basic.py::test_device_id_same": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_basic.py::test_features": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_basic.py::test_ping": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_busy_state.py::test_busy_expiry": "5d1645fc2d7ef8d49dc67f7fa9673c2ca73f267b6fcf6657ad6311ebfb15c717", +"TT_de_test_busy_state.py::test_busy_state": "c83938929b556fc4ec2b2e517109915455d890379abe89a59bc169a05f6d47dd", +"TT_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "3ff57a5f8c15e8fc30fe77b7c5ef34cabae8a1bc9abb9b057bbcac0577019e36", +"TT_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "3ff57a5f8c15e8fc30fe77b7c5ef34cabae8a1bc9abb9b057bbcac0577019e36", +"TT_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "3ff57a5f8c15e8fc30fe77b7c5ef34cabae8a1bc9abb9b057bbcac0577019e36", +"TT_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "3ff57a5f8c15e8fc30fe77b7c5ef34cabae8a1bc9abb9b057bbcac0577019e36", +"TT_de_test_cancel.py::test_cancel_on_paginated": "5f4d962ecdafe0f39fdeef4637ee16f3f68d904aa8598748b5c4511f554352a7", +"TT_de_test_debuglink.py::test_softlock_instability": "1aee3b128eff08c318a250d484634dabce16efbadd3d8970772aedef91896e7a", +"TT_de_test_firmware_hash.py::test_firmware_hash_emu": "f54c51888fdc1c4e270c7a24d66ac75d55282cec7ac6cf0c3b82ce22e2203d39", +"TT_de_test_firmware_hash.py::test_firmware_hash_hw": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_language.py::test_change_language_errors": "f7d72ea14ef97283c3781385e6d1a1ceae44a73a650e4bbe817023fb80be4ed2", +"TT_de_test_language.py::test_full_language_change[cs]": "028851ce2f88e4dbd325bfd81f47c1cad37529d8d92c9ab507107655eb62ee9e", +"TT_de_test_language.py::test_full_language_change[de]": "e61252a73177e8a23828ac9846f0303fdd5844179fe3e1ddb121496dec03bbac", +"TT_de_test_language.py::test_full_language_change[en]": "0beb4322a3655cc3111a11a284b4e6b7e90ed66e46d1ec3ebebfe0d53c7620f5", +"TT_de_test_language.py::test_full_language_change[es]": "c51bcd884d08ba2166f034be2cc513161639b046d70547718614946a012ca49d", +"TT_de_test_language.py::test_full_language_change[fr]": "a361017a7c7ddbeeec5c4bd3eaa9465172b6979ffb428c3e9ddefef15fafff45", +"TT_de_test_language.py::test_language_is_removed_after_wipe": "76d1f1ba63f6451c8eccaa69a3f36e734bfd7e4896d65f8e68c65bb2f13e14c8", +"TT_de_test_language.py::test_translations_renders_on_screen": "3217127260e87aa02547f4ab22bc78363610661450f101726ac1b077ca277929", +"TT_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "fcbe2385e5d701c8395339abb70441323b29752de34ff151050ebfd4174d907d", +"TT_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "f40a0768c7e64af857704229e978426bef1f65a065ac58ac3623e13302b3ae66", +"TT_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "f40a0768c7e64af857704229e978426bef1f65a065ac58ac3623e13302b3ae66", +"TT_de_test_msg_applysettings.py::test_apply_homescreen_toif": "f40a0768c7e64af857704229e978426bef1f65a065ac58ac3623e13302b3ae66", +"TT_de_test_msg_applysettings.py::test_apply_settings": "4523daa6724e4bd05e409775fb93dcedd0eb0fbc4e6f45dc1f813846df204064", +"TT_de_test_msg_applysettings.py::test_apply_settings_passphrase": "dc352934c19ce28d0c72f2e1a95513fed50ac06b00b9e798aec4c329e4c0a2fa", +"TT_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4858eb5e451bd4ef7939f0dca7ab63a9cac05141370c3637b02ddda5323b34d5", +"TT_de_test_msg_applysettings.py::test_apply_settings_rotation": "ffe96e7f4d30bf8d21ce9dbd6855246d12d17c6dddc7c819018e65cc371d8e45", +"TT_de_test_msg_applysettings.py::test_experimental_features": "03568a7e8ae9750b05ebfc2c49363bb70f17b568a04d70d947aff05fa3ddeea8", +"TT_de_test_msg_applysettings.py::test_label_too_long": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_msg_applysettings.py::test_safety_checks": "3e863f9c30860a13fffe0079d714b02332401b49db3e284a5480d25f406f2f46", +"TT_de_test_msg_backup_device.py::test_backup_bip39": "32e401200ed5c11ec7708a4715aeb765b7de6feffe6abc040b5c86bf464e8f81", +"TT_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4f092c9bfc8f0d894f5654ed4de8bbbd445f03c77fc811dbaa8e80eeddf89844", +"TT_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "17acd095008bd75cb105dba2c3bfc451923d249da7ac114b751226bbf917b47c", +"TT_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "3146c24e2e9a199502bcbdaebaff4dcd59781bf2877a35fcf229f5fd8bc2cb21", +"TT_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "6216fffbed189d5d016f046324ea716622dcc8455557be82ed41e7a049268859", +"TT_de_test_msg_backup_device.py::test_interrupt_backup_fails": "3d5dd31f1909af19c108b2614984151a705cae2be17253365c28e5290bff6430", +"TT_de_test_msg_backup_device.py::test_no_backup_fails": "6cdb796622c4019fcfa131a746866e7b5d5bd39f02f08352ba42e7ad7389c8c9", +"TT_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"TT_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c32e039a5172f090951640851410553861f957883b77418ffac2a2b9757df0c9", +"TT_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "1080d3f93433655bfdc79776a2669bc0460a4aabd669950c605f3d04dfb0b05a", +"TT_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "0839d330c249c4ba21401e6efa64fd0201719c4bd382fbb10cbcd514eaeb5e99", +"TT_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "beaa557c3fe46070b78c46734dd6722259c3c692dae36cd792dc3218d5c28c11", +"TT_de_test_msg_changepin_t2.py::test_change_failed": "4b3d66d1d7d0444201978086e09f5e8bd4122cf2bd890b53906a743153dd4a62", +"TT_de_test_msg_changepin_t2.py::test_change_invalid_current": "27b60819859ec99d8969ebc554ccd7b594414b0965a4c849e90993280458d702", +"TT_de_test_msg_changepin_t2.py::test_change_pin": "fa3d4f2c02c9fdea5e2e848e98587e5a7290598a24c53014f45e7632bd80cb8a", +"TT_de_test_msg_changepin_t2.py::test_remove_pin": "9bce9da58acfeb262359a318e0eb530bec96620143afdd8af0dfd2588a08ad58", +"TT_de_test_msg_changepin_t2.py::test_set_failed": "71fafa4617668278d9c52d0556660074f89de737dc5a9ce7d1ce816b51c037ee", +"TT_de_test_msg_changepin_t2.py::test_set_pin": "60ea44954447e6673998f7c22e78a8b6a6408279fdb5800a6744307e0f6c6eaa", +"TT_de_test_msg_loaddevice.py::test_load_device_1": "94479c433220dd5d7f6c745c5faf072f1915c549b6cdf31f827378d0e952a6cc", +"TT_de_test_msg_loaddevice.py::test_load_device_2": "d6ec59cd72b7eda43ad70779afc2bb9a7a622c3d28d5c6077459e421770357ad", +"TT_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "94479c433220dd5d7f6c745c5faf072f1915c549b6cdf31f827378d0e952a6cc", +"TT_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "94479c433220dd5d7f6c745c5faf072f1915c549b6cdf31f827378d0e952a6cc", +"TT_de_test_msg_loaddevice.py::test_load_device_utf": "3dbe197c83ca2290c3874a945246f56e307f06ea20244070144a5223eaee3f02", +"TT_de_test_msg_ping.py::test_ping": "5bdf3114eea811b6782d7700443a71b51bb62036d4aab8a132cec2ac12e7b016", +"TT_de_test_msg_sd_protect.py::test_enable_disable": "e31165d0f1f854d578ac0598f951559fb716ecf5d407d6e161a7f84f31e52510", +"TT_de_test_msg_sd_protect.py::test_refresh": "c0ffc9848a2a69f000ddec9476773a6d78781e99712caeec96a272a98f4aa391", +"TT_de_test_msg_sd_protect.py::test_wipe": "cf8c4b0839ffad3811bc7eb7ab79ac5c9679449ab3efaccb958cc2fd3ee9ec8d", +"TT_de_test_msg_wipedevice.py::test_autolock_not_retained": "710e431bd8e00961e4ca6b383c5cb2d66507614cfc7987254cb214f7f3c4697d", +"TT_de_test_msg_wipedevice.py::test_wipe_device": "d15e25cda1050c29ca50dcf689ab2b60d33818025a74af28e2ff467f44cf2f7a", +"TT_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "46ad34a19e203701b1c7a9294c6367847b42343ea2118dfb34622429ffcb7442", +"TT_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "46ad34a19e203701b1c7a9294c6367847b42343ea2118dfb34622429ffcb7442", +"TT_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ca58ed164f952aae462b1f029f2f5cabbb5ab8b4963ad72b8d7513812fd0611a", +"TT_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ca58ed164f952aae462b1f029f2f5cabbb5ab8b4963ad72b8d7513812fd0611a", +"TT_de_test_pin.py::test_correct_pin": "f40a0768c7e64af857704229e978426bef1f65a065ac58ac3623e13302b3ae66", +"TT_de_test_pin.py::test_exponential_backoff_t2": "35f0ce04360b62a6b1b34cd30dd8aec29344e64c1361bba84e68e427afecdec3", +"TT_de_test_pin.py::test_incorrect_pin_t2": "b6b4fc886086940a27ce18abc7ff4e2e197af633be1a1fb564bb90da42e5dd25", +"TT_de_test_pin.py::test_no_protection": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_protection_levels.py::test_apply_settings": "67f6c5bbb94d2b6efbe658bbc0e82577ef00d2390ad7b11c85c49ee6e086e996", +"TT_de_test_protection_levels.py::test_change_pin_t2": "9dd5aadf28d8941386a1a8df0478e667c216fa194caa2647eb7a2b79bc834927", +"TT_de_test_protection_levels.py::test_get_address": "2996508d09e91b900844917174545653b49859db7c16df92ceae5c0f97faf5e1", +"TT_de_test_protection_levels.py::test_get_entropy": "4412f32bae2fec4df172cc8a19595df2418eab2d4d2e66d27dfbfac9c71e1b1e", +"TT_de_test_protection_levels.py::test_get_public_key": "2996508d09e91b900844917174545653b49859db7c16df92ceae5c0f97faf5e1", +"TT_de_test_protection_levels.py::test_initialize": "40df00a40fb7729a98209a610db6cc1d9399b6e26b7a1865f79e86670aa91ee1", +"TT_de_test_protection_levels.py::test_passphrase_cached": "3cd371a591edd52b2e32baa728faa41258a1bf65c4284199bd01a613cb7c5eb7", +"TT_de_test_protection_levels.py::test_passphrase_reporting[False]": "c63fc40e0992f9c21c389c9c87c100efa806bd3b9a3af8bb25a87ebe0d1829f3", +"TT_de_test_protection_levels.py::test_passphrase_reporting[True]": "d506ae766418a13dc4d8336c2dd1c1f1f3f9819554ee02f55dd9b1a44cb7c973", +"TT_de_test_protection_levels.py::test_ping": "5bdf3114eea811b6782d7700443a71b51bb62036d4aab8a132cec2ac12e7b016", +"TT_de_test_protection_levels.py::test_sign_message": "547ab933c09b4d97f03615fe4be91cc2382e3c0d29567871c01c45bcd4b2d66f", +"TT_de_test_protection_levels.py::test_signtx": "ea864f48c6b5aaee38045312a8ccee59b3e56130934a57dc047f043acec419b8", +"TT_de_test_protection_levels.py::test_unlocked": "9cf9cd85c97e08846ffdeb38200878a3f6d1dd94dd810af21ecd2038e894c6ff", +"TT_de_test_protection_levels.py::test_verify_message_t2": "165341a81665e5bad69d9e260f8fa3370c0873c2ad6145c867a84e71e7e81c67", +"TT_de_test_protection_levels.py::test_wipe_device": "827a887dbd0accbea66621ba5003efdcffb350c5df8d0bc6f29b338605851005", +"TT_de_test_sdcard.py::test_sd_format": "eba155beaefd90f79481fb64732a97d0a7ba78046c05f9c29b6ad148f4d9bbc3", +"TT_de_test_sdcard.py::test_sd_no_format": "dae43a32852f1109ad3990fd2c4a61c95c542bf8f2b3762888eed9e43fa89269", +"TT_de_test_sdcard.py::test_sd_protect_unlock": "a6d947c57ba6f06a3ecc35783f69198696bd80e0d29623b942e7095a1fc3a3ed", +"TT_de_test_session.py::test_cannot_resume_ended_session": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_session.py::test_clear_session": "3783636b4c79fd690a1f96ae354d4359961002d219df280707938840f19e62c4", +"TT_de_test_session.py::test_derive_cardano_empty_session": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_session.py::test_derive_cardano_running_session": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_session.py::test_end_session": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_session.py::test_end_session_only_current": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_session.py::test_session_recycling": "ca58ed164f952aae462b1f029f2f5cabbb5ab8b4963ad72b8d7513812fd0611a", +"TT_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "50e0314e9c14b7919f7db27aef730e5721017c97547ac433cd6c3967b6441b11", +"TT_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "84fdeff9038889634dde3f60ac77fb9a3a152df49e9db972bc8ad164e909bb15", +"TT_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "0973babc1ff2c7d54c74d86d39e3e3e31e83c9f531e38950563bed69387cbd82", +"TT_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "793a33753e4e01dd0e22caf4aa55432fa23881931260fab07f730b9eda5ca991", +"TT_de_test_session_id_and_passphrase.py::test_multiple_sessions": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "be495d8fb60b5e6e6caa2ad29af6f10371f38f202fd24d5c728ffe6960b09065", +"TT_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "fe88f0e22c8de5b10b1ccbacdfb83850d2cd09aa00b32ed44db01e68e8c4c3b6", +"TT_de_test_session_id_and_passphrase.py::test_passphrase_length": "2dc4e79a185c57534e18f1037a3f0112ba93906e2bf783d4b3db2ab15520f021", +"TT_de_test_session_id_and_passphrase.py::test_passphrase_missing": "3cd371a591edd52b2e32baa728faa41258a1bf65c4284199bd01a613cb7c5eb7", +"TT_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "6521a6d741a4643a4621676a2594029eca2ca6c63cf987ffb382d34afe1604cf", +"TT_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "7f4ce54576b16a9385e62944f09c8fd72beee3c07fbd0a8539515ee251978886", +"TT_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "2343d718cb77207a2af019ca653bfd213e2ba82c008a5de81447b971e2527654", +"TT_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "f626803eb2bc8e882196934502af1d6b960b10b61417049d30e07778c57857d5", +"TT_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "e069d4a3feac1f347a503eab32ccd572a00e138fb5fc45b233608a0bd28e4558", +"TT_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "ec9b512d013aaecc158e9d1b7561d9d0957553b72d1532eef2cc898b758bf522", +"TT_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "06081a4990e92b6882cae3ae2faa9953a981f986197a2c2bbb0ca432d794464d", +"TT_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "07f91e1bcc40eeeaac52a6d88df476089f8a33531439c70731b78352c4d5a604", +"TT_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "3c7c367241cbd1b0d3bfc470ab2af56310201b37c56fbb09460eca43d789bd36", +"TT_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "8c8a1e0683c397f1b117bf0fde9b1df69e4aadf5b14a76d34013c76ae9e0e31f", +"TT_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "39f978c1593a206ecea4c18cb6408b010b0e02021ec61ce14f67fc5f27cd612a", +"TT_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "b19272dd79ff39d8867dbc12145eb9c0b092ad18f8547737c412115a66989064", +"TT_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "dbc728b97afbb44300f1a1a745202858aee6bdc651ad8d8fbb807df7622ddc63", +"TT_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "db603b6a463f4638de3ba22a2327ea0f1beffc9cbcf5a7eb387ec1dab710b45f", +"TT_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "4459b1f5d92255858ef63d0427094642aae3e9cbf9e018ba60358521cab59c08", +"TT_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "59ce3a8ccaaf0cee16396d2b0556db628064ce7752d22e1ab94ddf5856d50281", +"TT_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "62916be4581ad09dc4c37c0ad12d71b145b98b9e551e7babd15c3970d0d03689", +"TT_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "55ad46a2d0ba533b91529c1521f726445c1edd9ef0b18c8aecfd4ed042a9d479", +"TT_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "3e846499033be7866f4cd706da484857361b2586ea677b833d0ae4156cdfa5e1", +"TT_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "c9b06875f94662e82886b74f39616880de079fa168fbfa774cde72eb03fece58", +"TT_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "393a3c8a2c4c3bcb5fd7102e3ea05f73be2e9323f15ab1cba84529b05ba886dc", +"TT_de_webauthn-test_msg_webauthn.py::test_add_remove": "3a2d0c14ec9873ceab75795c3eeadb98e08efa73da19979edce6e7d55ec86855", +"TT_de_webauthn-test_u2f_counter.py::test_u2f_counter": "2e8e2311d1a3dfb0e540cb7dffd7bf4d972f93cc01a454df43289847864b5410", +"TT_de_zcash-test_sign_tx.py::test_external_presigned": "569ea24f3776a2d34ebcc12a9ea86611ec615680cf126ea8b54f5d9a79d7a28f", +"TT_de_zcash-test_sign_tx.py::test_one_two": "a9bc425e8ee783604cbee4c9a9550f58b01d23ccb83dc6ea9604a2b9bcd79f40", +"TT_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "e16c65cee052266653b30770d0ebe09abae9c4b2080eb493292743ba97dcf404", +"TT_de_zcash-test_sign_tx.py::test_send_to_multisig": "2560a238bcffad89f22f76bb7042d6012acc0b59f0abbf24837274b25525a878", +"TT_de_zcash-test_sign_tx.py::test_spend_multisig": "ca92fd811fa3689b39a2fb2b2a9c7906d6c542c1f6429ff1c4990b5464ea8cc9", +"TT_de_zcash-test_sign_tx.py::test_spend_v4_input": "bd9ad1fce63250beeafd5c0cf97501a94a1faf0766f36b81bc73bfb5d2e0cccd", +"TT_de_zcash-test_sign_tx.py::test_spend_v5_input": "6b25cfa59685894ffb469163e1b63d5ada0f688ea74b134bb6b3b212d5b3592c", +"TT_de_zcash-test_sign_tx.py::test_unified_address": "c580f204ef64e0accf1ae0ad3e02d57025e3666706c121839d17ac43e7c445c8", +"TT_de_zcash-test_sign_tx.py::test_version_group_id_missing": "314629c7150fd79b3360c6b746e66d65a78669a1d1f37c7eaff505d9b1f18c3e", +"TT_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "fa3d667e1439c9c2a475fff22d94e330c14697ff8dda4bcdded775492cb40a90", +"TT_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "ceac9a64c9aff8a4226e40f068ce412556eb582d909a9f8d401e83ca10433d77", +"TT_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "9836e9ae0814d1d42cf3957fc6ac6b17dc2503e5c0bb3a27fd1209ebf57c03d1", +"TT_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7c2943551ba1616bf057ecdeced1f603a90d60768dbd072573a60dbfdf4933b9", +"TT_en_binance-test_get_public_key.py::test_binance_get_public_key": "3d0517133c0cef58b6d8627527f3960f10706094d0d7113bc622453dd5cc9d8c", +"TT_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "28fde0e964521cf59b97a78c62d0c9655cfc8b0c8b1bdda7f75efb6a6c705a01", +"TT_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "5c0a4acdd90581b30266f1d97b811a3ad40cc39d2059d14f0a938c9a71016729", +"TT_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fc22ef1bf651f8c8475674f3699a47c2ea951f9cc93ca60a4c9b2e8ab3c124cf", +"TT_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "28fde0e964521cf59b97a78c62d0c9655cfc8b0c8b1bdda7f75efb6a6c705a01", +"TT_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "5c0a4acdd90581b30266f1d97b811a3ad40cc39d2059d14f0a938c9a71016729", +"TT_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fc22ef1bf651f8c8475674f3699a47c2ea951f9cc93ca60a4c9b2e8ab3c124cf", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "1779de46a1d6549caf369e488c4045f92484327696e212ff679d6ae8b51a01b2", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "f4de0499dac628067619c6081d4ebdba0ad196af7bf9662c5387386eba9e9729", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "38a7eac0cf0be45770fb28da9c2f74bac6404e85f2a3801acdd4b0107d99f2ff", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "d39b3290ddfecd5a3ceaf249543eaccb2b71c21eb2dbeabef94fe866ad7ce6a8", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "00f8d6cc8ad60877dc4629295e438f29912456f0767997ce3ba9277d1e1bbf22", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "00f8d6cc8ad60877dc4629295e438f29912456f0767997ce3ba9277d1e1bbf22", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "312fca890a6e93da6c3705e3b3c97ba38dd336374634dbed9134362420273380", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a0757616e39b5883ccfba01af3b386d1fc2d4a00517b2c3d79519ce0f60bc5cd", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "b8ca0b72adfb0cfa1ff653c83a0995517b71f8bfc217753e16aab49dd82a3a65", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4ec28178d68afd83019583d2f70dfc1a66a42f946a801d6a9d210ecb7d700951", +"TT_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4ec28178d68afd83019583d2f70dfc1a66a42f946a801d6a9d210ecb7d700951", +"TT_en_bitcoin-test_bcash.py::test_attack_change_input": "5a2732a973bf39bb25bd06180cfdfbc7fe494015c07df9461d15e189851b811d", +"TT_en_bitcoin-test_bcash.py::test_send_bch_change": "5a2732a973bf39bb25bd06180cfdfbc7fe494015c07df9461d15e189851b811d", +"TT_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "0ebad19508c4746198a6728449e4ac0d1cfdf169db907e4ff1acf1ef7f37a400", +"TT_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "4e9225e760a416bdef0b2eb1ac07489a7fc216b6a682f4edfd0a99dc7a0364c3", +"TT_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "3350934f73adc12375536ecc125f42631d0f17f37d5a72c3a6a1a062e9e9e565", +"TT_en_bitcoin-test_bcash.py::test_send_bch_nochange": "1b7584ac7451c9449962322655770d6d46eb8bd073e13b3aa605b4da5bae2327", +"TT_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c7102bac98a0a09a46bbbeac4c980b4219bb63ac8ad6b1d80797bf9cd991cfd", +"TT_en_bitcoin-test_bgold.py::test_attack_change_input": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0", +"TT_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0", +"TT_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "8cbb24c33d0801c03ae2b009cca0b6ade37c5ff437eaa64d8ba640a3da8a3002", +"TT_en_bitcoin-test_bgold.py::test_send_btg_external_presigned": "22a3e3baf7afcecc5b457ec9f9063e4d729879f79151bc43e1f0738595207b35", +"TT_en_bitcoin-test_bgold.py::test_send_btg_multisig_change": "f3e442202d95479ca14b053ab801b8002f752be016aba1a6057201d74503b9a3", +"TT_en_bitcoin-test_bgold.py::test_send_mixed_inputs": "8e93f1dc099203ca34177de6bf7370faa7e846ecedc630b8a16194fe7819d4c8", +"TT_en_bitcoin-test_bgold.py::test_send_multisig_1": "8066b6a823c1d5e646934754e74ac85652285ad9fdb23a74bd34c9597f6e5618", +"TT_en_bitcoin-test_bgold.py::test_send_p2sh": "f4b11a171cf48210e50e7e45acf9020a92cec3ac854921de0c133f60e3d0a5a0", +"TT_en_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "9360c9e41a40282f5ecf6d2ee91fad8e2c10ee3be6634a7eead946eed23f94c7", +"TT_en_bitcoin-test_dash.py::test_send_dash": "557a45f80747ccb6622001a7540273589a9cfcbbea18ba4a23fb92e94346ccf3", +"TT_en_bitcoin-test_dash.py::test_send_dash_dip2_input": "a0b3ed97530eb7d1a0af8fb7069deeaf73bc5624dee58be0c1ddddbac85e04d8", +"TT_en_bitcoin-test_decred.py::test_decred_multisig_change": "f4d8513acbbf3531fafb8092b5a62ca03f789f31e695500a71364b2fd7976159", +"TT_en_bitcoin-test_decred.py::test_purchase_ticket_decred": "a33a6aa291e4af679e38d21b2222ff16844e6bfebf51f98c766556f520911ed9", +"TT_en_bitcoin-test_decred.py::test_send_decred": "7e8b1532772cf7695fbcf3460d179d08f22c410687c057ff128882e32d923c92", +"TT_en_bitcoin-test_decred.py::test_send_decred_change": "d28de2959972fb3ef29bb267fa8bf6b96ac9c7d9ef4550538db5235a5b45307d", +"TT_en_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "d4657fa66b4d9e90d99de7bf5ad3123d74fec9c528a819f691bc565b521257f3", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "75cf40b6d916ab5107d5241143ba1edd408d359076edcfdfd6ebef4f6202598f", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e8628d184603bceaad9c5ae5b9f51460054e7b5622ea9c1a3dc84f84034808bc", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "d9e035a4407e3fbbeaad3726c1c19c32d45a788a943187e909b0f2787aad7486", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "a8f46662c3d14e2defdd5aa2ff4486aeac3f566facf086916da7ddc7e0185130", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "013171ff086e4565db1bc4f8a0d466a0fa7c6449ee58a3d27b27f073bfb74d63", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "3941cd14f74e1d7ea919cb32cbd7c5954c412d845305e4f0e495378c7701a53b", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "2b38959aba5f6a57365ebee67831eaeb9fd3276f9ca0d6c6d99e6b46e97998bc", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "9db02ff67c8b507a62ab3bca79b4a6d5cd3f3da7136f7bc0b237fde382b50739", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "6ac0059ce935707618eefe9c23d403ff30807df3c3ec23b8615a50b648bbba75", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b8e44bea2eb0d3ac672a41ebf83683adbb0e02a622cbafe2fb02283117bd4c4a", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "eae032ac90ebf7d44b84eb6f06c43f67140de7adef88906d98c1759ffd4995cd", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "4795ab245421deef1f7ebdb6568165a64c7066054747a84c4e30a78085c71e22", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "284b98fb9d745aae6f552999e1652300d84d4863c3b29452615ae5b691d7b266", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "660130572e80e9161d733f3ebc465a5f2a9859a79eecd7201c7ebf955173df23", +"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "35e60de9968a7c5bb296dc554970a16878165e062bb8480a5c8428f73a3cf921", +"TT_en_bitcoin-test_firo.py::test_spend_lelantus": "213ced04e2b337576abe1861c11ef69352eb5542f2bef720e50d54cea031f9db", +"TT_en_bitcoin-test_fujicoin.py::test_send_p2tr": "6104cd021625791fc9141ca802c3c18fb50815459acae06b2eeb05da432352f7", +"TT_en_bitcoin-test_getaddress.py::test_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_bch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_bch_multisig": "ef8a33a6700d369cbb842ef4bc0a853c10a06ddcff7abde6a1d84e7d55a0361f", +"TT_en_bitcoin-test_getaddress.py::test_btc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_crw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_elements": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_grs": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_invalid_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_ltc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_multisig": "f2ba49011a093ad530f0f3c3f60e1386add863c76ff5e3587ac90262a9f4676f", +"TT_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "0fe493c41775e7992c88e1bace001577f6d8737500005399cfd73522c7459b0d", +"TT_en_bitcoin-test_getaddress.py::test_public_ckd": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_tbtc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_tgrs": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress.py::test_unknown_path": "1dae1e1f3127cb2112f58e75e5b6eab871da0abadcac14235b3dadbfe0d1da81", +"TT_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "cbf5dd38da807d68f93cd9e276f8f0b7a92826e3e3bdc40bdbb30f4a63bcd4fd", +"TT_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "a704cd1bed4d13c243f86af77390bf15d8287ab33ad0457eca6697ce68f5121e", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "40f2d6e630bc753de21cf7739dc290dcf809337d5e692378699c98572474afba", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "9cf15bac5348807d5c50a8c622e92df0dbb630ba9db0b8423cd7225d2f4b620c", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "64d62a9f4b02896b84d56c3453877f439fc56594b2832d14031d45732817f7ab", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "077a15a5492dea40d65896e4a1d1a17a175e4d85d41c66f44293872594663ff5", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "d5e4cbb3c97f8d8312002a2dd7ed070a1c293dfca4ac195854fb296c1c1112fe", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "277f41432b63286e5b3898080a5245b4c57045b51dde6be49467a1863207448a", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "466e961281fc0e074f0edd4c6d7c04af6032d92aeb33511a8a39af20fdd18541", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "d4a50e221264e268a437ff4b6e5477de74729b1171cb7f1854bece821a46c62c", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "f5420ee7d27a19162d284b685a34fdc3ac296fdcfcd9855d7c9c00476611893a", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "af0a9051d5b974cda12d13f1175f6a870de418708c3aa05266ae2f516ef0fea6", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "30f3f630eb68aeb9c9c8d67811e5101ca3e301cc8ce0ff7069b3e687532fca8b", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ace7260e65a375a577b0cf58c7c19e73c861a5e705336d772e4d8328796b46ec", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "a74c4afb2a87e09dd2562bc7650caeaf059552db544872b7704af9e51f26103d", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "6eb641ea4acd345143540a9985e16cf8569e957f830ac4ada79a949629aaf310", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f9c524eae89e19091508c9fc40e18a2c2f167a15f28bfd59ff4aad7bd80fa016", +"TT_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "e9e1685bed4796972fdf044a84d24c95981bea00df672614cad8c2ab1b2c8e74", +"TT_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "3a15c7626541011177bc88967c72c278fc229ad8ac131cf606c8dc1f48b5df2c", +"TT_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "cbbf158f803cec0218cef4482be16b1fbce5a33c27d22089bd562cb8991f697f", +"TT_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "0478aa33fb21365c1d114cad7bfb3c0270b20ffc3573d1eb70821101004e30dc", +"TT_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "af9af600df851cfbd070139fdd4db6588e6ce4a116b45ca19a0068ce9d678f51", +"TT_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "94d22e1a493fa8f3c3e15a65333ef0691fcab1594ee0e767773a3a90db6814b6", +"TT_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "faa98c7c2c581c303a2b72f0a2f93bfb6c1ed504cecda4b483af17315b569e78", +"TT_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "faa98c7c2c581c303a2b72f0a2f93bfb6c1ed504cecda4b483af17315b569e78", +"TT_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "96ea93c13ca429954e84685b85df2eafa7e9f25afbc8ca77a88eb909bd3f7c8d", +"TT_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a93a88119c9ee255e09a87ff1e9c078a61e1e7ec61a26a4ecbccf294a70269cf", +"TT_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "46b56e80439b320688feac9bd0ceb440ff83cf5d1da51a6425aeb97aaf097393", +"TT_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "17a274a917e5ff853a429561ef4dbceb12c41520c18714f3c3f037d008e5527e", +"TT_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "2640940dac7119c208074f263482b66323ee2ab0769c2cda32b75e91bfe9f2a3", +"TT_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "cbe6b393e10f5e4fc0b780255b19d46f53cf60706a2f2361a658a82b0b659825", +"TT_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ba1c1f8dab1121f7fdba73f9a481145ff65e383763a24a1e66d25b2b4681c58f", +"TT_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "62c493f4310b90d0082281c38acc314cfd059bbbbfe18a150a5d7236cf9e56f1", +"TT_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "8ccb2c2222cbc695f5d49543e637f03eb69d60ea654636e0e8b97a0c04a21e52", +"TT_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "cd5a286c516dd0bd7eb107081356863504947e9498a9d6b490760265c055c870", +"TT_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a5f25a795619e2adcc3bedc07c6b12dfa605a9369705a013f276428a5a4f78d0", +"TT_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "508a69027cc9b71d218f65a015d963f13fffe4bc9ad435f8fb12894ee3ae298e", +"TT_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5f4e0c17cb3258af3901c7508968af36632f3e9826f6f63068b8521a4fbb36c2", +"TT_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "9a31966c5665d23cb1ec01529d09cc3034116a28330a52608d9c12a96bdabe90", +"TT_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "76dff54ff9086f92cd401fc9f7fdc7bb784e6c097d2d7afc0c423c8589488a70", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "bae7f0b63e3fee8ece96e59e5fe45fb50b9110e6af0cb431bc42a3f965ff3752", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "9b215d4fccdecb67001721ff27073e2cf7f57674713b086163a400315a0a3715", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "7e60836a928c98fe074421708bd25561ef46d644f4cdd6867b9bc5d79c020f3a", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "ba55e3d330f207e211264d150ab42394ca033cf8505e1e02f5243c3d4cae3ca2", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "f2c6c4c91fe5fb8309cb980779a6f7254124c296bd232ec33bfc35d448df2789", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "27a5b6815c3b8d444c4fd323a69782f40759e99f582c8f0131835d00fa251eea", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "77c39f9196a1ad8cd7972169854f7cb5f15d93d96c3eb43645c980d3dcd0e771", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", +"TT_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "28df2e38996c9cdbf83b98a886c5fa3fb7a685d9e269d55b07035115ff8cd903", +"TT_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey.py::test_slip25_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_grs.py::test_legacy": "a806ef300fa0e8ff74828a364b2fee979a4c616b3b21111b150cd4dc92770674", +"TT_en_bitcoin-test_grs.py::test_legacy_change": "39af05ab65895d138ed4a080393f3de3c15072980637d72a58c0659fb4b31032", +"TT_en_bitcoin-test_grs.py::test_send_p2tr": "8d7cbc9e1e1c2c7e06561563b5ad775bf281eb516c50b61e9fe44293694110be", +"TT_en_bitcoin-test_grs.py::test_send_segwit_native": "fe926c9eea3e2184a8d54beee1b148faa2c778aa418e26e29089dd4284f87e87", +"TT_en_bitcoin-test_grs.py::test_send_segwit_native_change": "d8ef8d8a6b9c94c3b25a45015a996a7ba31687024e68f91609ff0cd587b0ff1b", +"TT_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "c52b96573ff1d0f1a49369298a69c1828e96149f91ff406cdcb43e61245f4449", +"TT_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "f60bafecfdc71ade91c375e95d0789878f7dc72e29319e257525719e55299cfc", +"TT_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "7656cdff1d59f868ac6918f84908be975adc26d2a98ee9c9706d845dc8a2ef84", +"TT_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "c2fd77b0242d173cd9b95e75c3ca94de10d8d8d2908420241bca24acaba5a010", +"TT_en_bitcoin-test_multisig.py::test_15_of_15": "d5938400d691e30dc969e06c21939cafe10dc82bb529f8c11019a2af738aac29", +"TT_en_bitcoin-test_multisig.py::test_2_of_3[False]": "99c3eb14a9297b4d9caf1142f562bdab6d68a779ea4a17a1349d0ac40314bcbe", +"TT_en_bitcoin-test_multisig.py::test_2_of_3[True]": "6b7c2edc4fb52dfd5d132286dd8f9b3ca84136a522c653116be6f194646bbede", +"TT_en_bitcoin-test_multisig.py::test_attack_change_input": "0f230d5c6845daf73081e406e4dd5a0252ffb97a65c6196d3c856ece18372b85", +"TT_en_bitcoin-test_multisig.py::test_missing_pubkey": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_multisig_change.py::test_external_external": "c4d64521e603d5b9e3f86881f464be11334877e16923cc7868b4584996144de9", +"TT_en_bitcoin-test_multisig_change.py::test_external_internal": "0470c5fa7c26b622c9407e4f957658baa0b8e462aa255b30514495ac4e4a29a6", +"TT_en_bitcoin-test_multisig_change.py::test_internal_external": "34916d218a88982a0e031d3da676ba794357a43c13448cdf6ee064669fdfc9da", +"TT_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "4f4a1630b3435b1755d1d724012be607006fe2c7f04e2a5edfe0fa4aa846165c", +"TT_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "44d8941b9161ad7f12cb2e8f231509faf2e65dda2fba38504acb39b96311935b", +"TT_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "fec43fa5690a40668ed2bba6d713cfec07ebc8c38bc686f82d9954f7e417c8d3", +"TT_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "fccfaa06091bd0f574e4c78d6b6f89ab1842a33cc873ed60cf484bf33db3b451", +"TT_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "f3202ea515b4c5935c8ac5eb377cdc68106fe5f05968b99234954ad4aec25e6f", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "31755b656cad58d7d32dcebbf939797e416b37156a07e887b55c83f815e8968c", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "70933a9dad255906242bebbeaa13246fe08feee20f6a4a2149541a967a0ff550", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "686e0a918898f62a77ae2fcc2ca3b9438b441416169d327a3518c5e917036fcd", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "aab1f46581f519c7d3d81aeab5d6ed8e35a8d492e95dddc918ca0431b6e8fd54", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "0d2fd0b06a57c3c275bdef3eb31327935fd4990443e40f40ab5684dbda4a768f", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "92d41acbaa6d69fa4512de55c3004b77701d699bdde982861740a25fe785d910", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ec02c7840205c63d6bfb9a7a5ddd103c45009ee61c6ee0cfccaf343e920227c1", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "d212479a0542d5f2fcad9876987db10f6e1c52b9ee13411b72fa8062ea5f73c6", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "f3f8cf5e56808b1ab3697a84911976d49d37fbe0c6652dc20c2ab11ef4177b61", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "af8a4f016ec79439685f33edeb4ec8e228bd72ff6eed4c07d7885eb44fdeab09", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "1f12bb3af8bcf6a6b9afafbdf6ceba9674c0d2ef159fd75be949a60748316caa", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "0c47cd2c13f94d818545f493b5c85788024a0667ea8682add50e474347df3d48", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "5b5e013a4b98ba8ec3dd2b44c9653c2eaaa7b5b1a949f9058d3f8da6500b16fe", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "90c5c863c822b85e807f1f971c707bef2c32afeb763d6898f0c9b9c33f26b5ab", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "8b4e69d84b57dc00839900e7cae25b1b9f4baee8cf2649833e467145b254ecc1", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ff12de01723a4a3cf4bb8c011bd81d45b9f43254ec7cb0ea43556975f5fd1fb7", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "4c53a681a7e094c59a52c8bd2536aae2fc192a3ca93546ce348b601383447135", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "112c66c98a7c85210d619c610e0943fc83677878116565b2e2a875f130f09e0b", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "c8dcc2856fc3e7a31e8033caa42a134de2aa05d3144a8eceb0edd3af041f03d9", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f68f1130cf830aa8e6632901d834e23693ec5ed111619c83eae12ef72f2a3609", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ac684c8ef0dd6f8456ccd70c955290720abe863fecb994a50c6f548111178f06", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "2f95be5d0472b94ffe051d5753b9ca68f95b245633d8f76289f2768470f47319", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "73857c4de7ca4572bc7f9f428eb23be495569d938fabd35baf4e5bd04dcc31e3", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "0ffdf6683c3dace1725827bee5e0da3c489276bcc0f3cff411a4a848bb7a2ec8", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c608ac3b16eb3b1a9e294a809b692c5633ba2c83681bf55c85b4c137bbde5810", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "fa9fb399b0fd4f08e344e7581419e1b56d34995650a818f4e637afe8e3f9b3e8", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7d925ab9aec530d3c863f97174a5c837e32f6044c023f1365cbae7bc75cfb7c9", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "56108f83b7413d2a4b22048caccecf55911c13b5f1d946c40b97ee60c8bbc429", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "0fa3a45f6b8d31955b0e9aaa68d79f5948a7597901cfed56aec1a35ce57aed3b", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "83a6b8ff9609f07a0e10d5c46357a0c3647fac6671eace084f0568f84ff6d5d7", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "dabd2e4161c862f8b45e5793523c0496a765b247e64f23e202fd2432a1a0e94d", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", +"TT_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b62ab2c91fa20d09ea8e79a18904f3ae4465665b4643a1490cf6c0112876d2b7", +"TT_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_op_return.py::test_opreturn": "b4f764f46970686537dedf7acc634675ce8a92e98fe99d2b19d766c546726069", +"TT_en_bitcoin-test_op_return.py::test_opreturn_address": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_peercoin.py::test_timestamp_included": "638313d3b73353020ea06a2c34c4b14ae87e864d7c027a882d6a55330030c6c0", +"TT_en_bitcoin-test_peercoin.py::test_timestamp_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "f524a9f7ee2fa91105477e0d673e3e5c5e1c1a13222d20d46ae2e375f9921c3d", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "3c538fad2bd6a1fd6eb3c088d9571142e194e25c53b7f19abff1ef7e03040bb3", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "bec877a114f2b28638caf4993e6ac8f83a19ec523b09a210dc0b817b1acf1a26", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[decred]": "f5d7fddf8c0dfc802b58e565e826cde2d9dcf035c5d07539d16dc01e2c9732c6", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "d9e1788e58374fdd27b7fbfc014b8dee59948938dcfed47169a5b2acbe380e02", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "55f230ea818b01962d5f545f49e893776fa5d6c6b2bb95c78dec22b7e040b4ee", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "103ebfb2f9506a61f3ee1f25de8345048318af26666c0cfd98b25898efe6125d", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "7fff8e2f1f1471c82d2029ce0fd26dba010fa29eb074025f14ecf154348b6442", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "8004f64bdd53564afec8f5f290617fcfbd2a71274a84116b0837bc079601cdc1", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "8004f64bdd53564afec8f5f290617fcfbd2a71274a84116b0837bc079601cdc1", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "f38bed10be867b76b284c718033e7d6de592925bb0211e04afcd31247c334f3d", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "e500416265ceda3522cfcc85e5640197e53d5eb2679bd1cf3708f62ef4af1abc", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "6bc4d61dd9a8134b8c821c800e91cfcf15559a03e9b03e1e9144debb5fc720d1", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "6bc4d61dd9a8134b8c821c800e91cfcf15559a03e9b03e1e9144debb5fc720d1", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "30e5354089ce5519ed95646fffc9f3468587482a19b81163b719d253421e3645", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "20d6ed18dd6584879fae23768026fc50d70874a5a68c595251a256d320334e56", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "cf9e2197fe85422b3db5110db75bca948cda95d40917ea0c5dc4cb442d0afb98", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "cf9e2197fe85422b3db5110db75bca948cda95d40917ea0c5dc4cb442d0afb98", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "cb14f397c92ea679413d31b088e6ac149f3ac2406f28d5c07ac939531e1c3f7f", +"TT_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "0c706c1b116ead8623b6b667e57bed1bd2a43abd4b4eed510d025085a66a3e4c", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "933d9466accabf431929e82499f29c29b37eb39b0cccd1b6a4a9b022ed6328ba", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "3961de777b7578dfd5e500285177284462b03c260f2a46f5827bbad906880b5a", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "2b83146021fc6d4e870ecba9b79eeff057e51f1b92e8f6119afef4c7f1a090b4", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "863ed334a92063c27233556e2ebe71c658d99d4a454ea2a7328d97200b4b65af", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b25d95a6546962059efc4b3f7749546a1b938c6084bd52a2a62322cfb4e522cf", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "382511a667f1cb2695c1fd140c3e1960f64d034c2cf94f39c017627bfc2d12ff", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "85a84af1b63221a1d0aa66e59a6323e67fcc25bc0f9599eeb4848f602720c3cb", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "d45d875ec1ae14bb86f68673f5e5fd0597ff48cb3f225daeab7bd0ab069edc05", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "d45d875ec1ae14bb86f68673f5e5fd0597ff48cb3f225daeab7bd0ab069edc05", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "10a6cdf39c7d1c4f90cb7b741429c13cab6cb6fd0ec082a82f22220bab185756", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "ba43a9c316206f12559022c1a6170842b5abc1e4b9b31c41cd183ef71670f785", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8a50b6cc3eb28bbb186c4e113201425392ac8ebb1bb8f03e817b96b8246a9bd3", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8a50b6cc3eb28bbb186c4e113201425392ac8ebb1bb8f03e817b96b8246a9bd3", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "ec4a77e34885849a9302779fc47e260c4d943a2ed4f8e6f962769a538261ebd3", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6fa6739fafc24cde1d9c820bb5dc6abd94a11283fbf40b5967a29c34bb60149e", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "9221745002c1e2d346d9822e358a13081db57c6a4a459eafbe6e83ee3a037d23", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "9221745002c1e2d346d9822e358a13081db57c6a4a459eafbe6e83ee3a037d23", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "d9d3cd25802f3d429d665f1c987d4f895bdd03ab86f13820282b4667991b9285", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "236dba354336b318a77a8de3ef74abf6fc703b6e044630884b581d72ea6d0963", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "1333ffd148cb092b927ee65ab020151a0da3ee7cb4e8166f097b1bbb2e7bea4c", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "590a9899c3a3ed23041ed483df877c61e73a4040849c28d9a3dd29db76a1f162", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "8738ce1102d51b8ba5ee0323b89804d1706473051fa0cc2c9c34c62d8c1cc2ac", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "c69fa09b4dab1bafbbe38237d72d5ebc8449c9e188e6d4880136338c31a1431f", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6ef0e5fe5f520320520fc33df8d91d2fcad0f8863c48d71aa9428ba482156cfe", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "d7944e2882a1c71850f6bc087479976e7be548f01c4d7907776fd98b6707a0fd", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "01658c7ef419d543d2117053de5ab97e6886c8957a3623be5a52c5b1d66d8829", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "0da2f2b6bd625bc5c8f9982ebd83f604748059a77bc1a49e857a07fd24968a0f", +"TT_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "705b683563a06d8eaad242a794e5c8683d41d560a9642761d183e79d85510bd7", +"TT_en_bitcoin-test_signtx.py::test_attack_change_input_address": "406e9f0bf3be42d1f41176b0d1f97b7286e834e1d15b5397904f981cea9fc5e0", +"TT_en_bitcoin-test_signtx.py::test_attack_change_outputs": "24ac4be4d6bcb7cdfd372bb3441f10563e13fd684ed3fdcc79c0c8e97830326b", +"TT_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", +"TT_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", +"TT_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "eb0077831dee4dcb6d6395d01ebf1a4eb78e05f6864cc3247e5c05b936656053", +"TT_en_bitcoin-test_signtx.py::test_fee_high_warning": "ad4a82fa012b89ce6a027b88b3170504f5372b93da947517078edbc647b56bad", +"TT_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx.py::test_information": "44e044c3f8b299aeed155f0aec66f60510aa7dcd3986d340c76ef128de6a428a", +"TT_en_bitcoin-test_signtx.py::test_information_cancel": "d242ec98f96d0db41ebcd7a44ce31bac38637ebd1103727445a068118c51956b", +"TT_en_bitcoin-test_signtx.py::test_information_mixed": "c76e1d787c589090bd950101fda86f62dff83e70d4f879ea1fb0519158c1e95a", +"TT_en_bitcoin-test_signtx.py::test_information_replacement": "ffce40135620e220930713ec3ec9554e6ae801aea34235ed0ff89dbb805c891c", +"TT_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "924ed54c06fd791910d8a43e0b7c6f39852b3406167045211dca4e495dc69b05", +"TT_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", +"TT_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", +"TT_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", +"TT_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", +"TT_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "2dcdbdf6c4c2770d05b751e1ca1f1e33646c3f83227e298778ce5bc1fb919bd7", +"TT_en_bitcoin-test_signtx.py::test_lots_of_change": "e66b43aa7930e28285bcaa14d8ce3a1787a67648c17e55115722a2f90d375af8", +"TT_en_bitcoin-test_signtx.py::test_lots_of_inputs": "4210ca2bfc63d054923e03cd9e12a643e0f18a37df2045749911037e262fedf3", +"TT_en_bitcoin-test_signtx.py::test_lots_of_outputs": "4a3b8660ac30c4c91f5dbc9b58d02bc8d60a160ae255bafd3f56e4c697afa183", +"TT_en_bitcoin-test_signtx.py::test_not_enough_funds": "6b48450b917351d6f25753b29b9df6663c1e6dcdf6a795aae5986992f002b30a", +"TT_en_bitcoin-test_signtx.py::test_not_enough_vouts": "e198a73b60c1938810862a5e479806ac4d768f42c76e410e842cd89b66e63093", +"TT_en_bitcoin-test_signtx.py::test_one_one_fee": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", +"TT_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "033c92c6af972e9e31cee0daf55e76f82015b960459b91cab58535b27711909d", +"TT_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "3516df019ae876386583e8176957310b57a2a37af3b7eed728fe4c7708c69e2c", +"TT_en_bitcoin-test_signtx.py::test_one_two_fee": "51d00c0953cfac7ff286cb5117e56dae83e9ade576e77f3be8671ba7d9f8321a", +"TT_en_bitcoin-test_signtx.py::test_p2sh": "6b705686dc78bf72f8e9ae125b0bb775f814c2f517052cffd2cd3badc9d0dc3f", +"TT_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", +"TT_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", +"TT_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", +"TT_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", +"TT_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", +"TT_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_signtx.py::test_spend_coinbase": "05d642a9018b50279e386b000ca5591732677370d5fdf1685469ae2406b3bd4b", +"TT_en_bitcoin-test_signtx.py::test_testnet_big_amount": "85fe2a297d335bfba11b3e9e01a2ec2c9a30730ea06b967983ed4f4502323698", +"TT_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "2007e7cbdb14fe7db3c745a20157103855ec65cb932ac3f0c613de26e3f7dd4b", +"TT_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", +"TT_en_bitcoin-test_signtx.py::test_two_changes": "a5b47af1fb057b9384194dbf35c9f8de47c793eb26511028b405be06f09aebae", +"TT_en_bitcoin-test_signtx.py::test_two_two": "bd1e6e9b2f4704e1baf777a41e6f1e576be4cdeafd718e454cad973de1f0a9c8", +"TT_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", +"TT_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "73c15b8ad493c3d7b1d9885fb1dc5a56c68bb6a3d4ec9a3792c03be26795c182", +"TT_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c74d09789466f3e48fa92ed5bda1e1dbcf7d9afc9d16df6061fa82395c8e89a5", +"TT_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "f09a0f6c8c10df04da3ceb63bb4d054fbba4fc6275ee92a376b53d133ca648e8", +"TT_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", +"TT_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", +"TT_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6ac68aeb33f8e70ed439b3be24f1bc29beeace17a0a5bf2fa1ca89852d1576e7", +"TT_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "d975014bdaf34bbb6e48553bed41c3544529e907a02cebce1dd730f1ba38fa3d", +"TT_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "cb88988daa8afa19885d5eb9f051a1420a3a667b429417e1d0d0a6db6b5684ee", +"TT_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", +"TT_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "5faa3de360408600bb51e48b59c9be7910340c2697af97ec7b97d64613024d2c", +"TT_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "8a025c4a07a30fd24274bb200091cb847810b07db961c8f73e4f5ea79da9cc9d", +"TT_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "7c861af51673abc3516f25cf2f494951cfb26422886b5359b6c0123ba83b4e4a", +"TT_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "bc76b3b033eab274e39d8f56846d4eb1a6a3cbc97b2bb4218af62840a0d294f9", +"TT_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "e630e07f6ca5724a6aa53b31b7b17ffe347d637be3f54f3a51e05bab8cffef6e", +"TT_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "651b9abda274123014f55118ddfcbf0fb08ff52377c0079e5a4cf6b7c13d5225", +"TT_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "191c9bff9eecd6ebeeba1d3e1b1701d9a6750f1bc9770f0a886936e19f6a689e", +"TT_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "b0b065fea6ca2acea50cd30b4637a4776688448ff0d86411dc6957de652162b8", +"TT_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5386d21e156629cf7df3cdfd98074357d93e025b113f74e89f271f4f847298cb", +"TT_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "950ba42994f18ee1b96786c8d49e33449b674ffff4715319889c9fb5f34a234f", +"TT_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "4c3cfdccd4f2dacb291d0b3c6d87baa7cdc8f9afe4cc605d9091f9ded9ef00b0", +"TT_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "b3f3c1221160e0d9bac89bd44fe10cb587735585628ef6c652213ccf2d92d60f", +"TT_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", +"TT_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", +"TT_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", +"TT_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "3278de4acec9009035c80f1a9cc4dad11570582fa2eaab30aa7c034d4f8d4371", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9b9fb6db5b35261355f3e335057b7086dae18adb09d94c446294004bc4016876", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "da892ff4e7de75f6b3c1fde48c915b4cfd9da2c3f0052552ce0b873c85a539e7", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "768b6294843581c691d590202a8ef11c0040fff3189a9b0cde91b1a49d6df87e", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "23e3f995af215af80d9dcdb00189a0545a77a40bfe55e195566ccfe41f78d2e1", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "da48ca03cffd80b81d5d17cc8f967af2ea82784357ea894f20bf49d559916feb", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "21aac16e5415731c271adb2e145ec9cf6313bb1205612b74f885a839fdb26c74", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "de1b8868c3ef6abd31805540f4bb73b3693bc2ded0acea39ee2e9aa44c131a82", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "66e15e830579ed547e8c28908fcdbcb2483658fbb22ae138764a594c82f60053", +"TT_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "fb9f7cd2571c2c72c56968c57fd0ec16b83d3ab9f0f5be9548d055f37e3f2bb0", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", +"TT_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", +"TT_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "1b0378c2a799b0b890f1bc8652035d7284126009223f976e5623fdd0a8fb006b", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "4d157fa6e9c1da33a59735186b756adb7e02189efc642b7732b373b2c7e0bc64", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "bd53e379f2e16c5b75b2cc6521ffba666e474f18bae90205aa773d3b6ceecc3f", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "bd53e379f2e16c5b75b2cc6521ffba666e474f18bae90205aa773d3b6ceecc3f", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "c0f93b453f71ae7f9bd28a27cb50dfa6a99d1131126777d0f7957b194ef2bde6", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "bfb6c422e7a8aa05e5e71501ba640b4f6008684816efd86337b46afe6f75057c", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "557523aee043cdfaebe92f63dfbf89d0c7d4e65ad583471c18b91e66a067377f", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "c0f93b453f71ae7f9bd28a27cb50dfa6a99d1131126777d0f7957b194ef2bde6", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "9362fd8a2a4db51618a4be853623a75e73541aef5d329b2f34729831a3c13bd1", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "685ae658aa7b6d7d0e450798dfa88212241f89dce943e2dc7733e9ba0f32578a", +"TT_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", +"TT_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "a50dbcdcf5dd7f0b4db8534d67f3fa4c079f37087ab71bc9541a652514acd35f", +"TT_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "6ab1dc24fa8dbc1c88a9937882069b33f0d5f0766e99faa7c3cd83709839a98b", +"TT_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "9023903d91c453cfa696777db99334016385832fa47af3756a1aed58d097ae77", +"TT_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "f170d79bdc23af7161682637840abd2d271cb73dfcae575f0fc8704904fcf604", +"TT_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "602ae135d5f67b9821d28c3dee2e55c0b30cb6cdbcc9fd7970d8e02f06cd6b7f", +"TT_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "9aefcc92153b1053449dccdf9ef3abfe1c9cf82b777f22340b434ecccb564695", +"TT_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c4d99122211e001a4dc6c421147dd9673f3400af44b26900e4ce1ed49ebefb54", +"TT_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "27aaadf7e3dcb1077651274046e4a4e53bcb708e3a140af0c3c4f92006d4ba98", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "1bca15e6a93a162199bdf9155e12a23c34fb7611d395ee1093735332b3741a5e", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "72b94474858fd569d20de2a3324f5d7b04dacad3829c4a4499e7c26bfeab49a5", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "11d1bfd3051ea6389577abd22bb5700eda61da7749af3a3732df17f24b3027dc", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "2b4f72fd6274d1b3d51b7e4de1801b4a1cc55ce7e2b7bef9be152347a1e39ee1", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b62b6fde11bd95904270d2be7127728beaf9813cfb3ec94a1e128fbd19540a16", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "ed223eb647b50559e2bb0fdf1a2027d735f9db79683dbc53df567996a0d8b180", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "16d836480b99974630adf2a6afeca600cd9dec2343b686a20e3c2b5d854ad8b1", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2f6a9c1392ba334cfc9987f68687d32c12558d08985e52ad71d0424014238c06", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5647cf2836afd54d618f9da5820ef73071247fea8e50c87b5c2c91c733902321", +"TT_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "d5fc037cf71574e69859ba782ec1a03279acd26eaac25b934a4d913230931de8", +"TT_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "06ea8319a958a624a9febc0d79de37e3034753924b2ee015f2cf0ec3995cb669", +"TT_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "1c2e5c70e7a94d1009315e2dcd147612d848e320ccfa2eeb747becb4af796c47", +"TT_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6abb97c5b7d3488b7d30018bf970507ada2f597b6b9b62ee0d9beb5d422e254c", +"TT_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "2d6f85827d80251c7759b5ab75ca65640d415d40877ea5d64a677190b8715f69", +"TT_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "fb46ca21976ae67dfbe73f5057ff0304bda4f4000c341fcc8bf856d23c2d177f", +"TT_en_bitcoin-test_verifymessage.py::test_message_grs": "0117f15331639fd915916dc9fc33df1e5fb6ff419d7835c4fbfa63f0f448d5c6", +"TT_en_bitcoin-test_verifymessage.py::test_message_long": "fe2bb23c5a4f45d8abfaa91872c6a5615f03e6352d8700ca8b9c9cb4825b47ec", +"TT_en_bitcoin-test_verifymessage.py::test_message_testnet": "888422306be9265dbff77da9f74faef242c77304f3dc29b874a7e382497f7799", +"TT_en_bitcoin-test_verifymessage.py::test_message_verify": "0482e74cc56113072a40fe0fc9c77266f824e5bbd40f5e0456ea2e8c05045c89", +"TT_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "cf22932a05a0db1f4113bfa793d507009d90a48a8deda2b057b35a8bab2e56c3", +"TT_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "3e2a3c1a7b7be9a3cce9cf94d10361bc12bef0c63b1ff8e9d08202d8e876dceb", +"TT_en_bitcoin-test_verifymessage.py::test_verify_utf": "ae1867d920f8e18e277e03794d0566bcf1255f55ecbd8ef02bd7cbf8f14e1239", +"TT_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "6960accf077f4a754bd318b210a10b7d00a5f9406bddca832ba9e2c91f98e7ab", +"TT_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "b1f9f1864b9f327518c1ba3a1770072bea7d40c5bde442202206e2fce52171e2", +"TT_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "e600dd4ab19d4c55169cfbe73998fd3294a1fab45a1323289478b6a17b7f152c", +"TT_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "ad1e3b8a0d1738020f002bb24824b529fa8ccdcf52cfcea354fbfc9c88b9961f", +"TT_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "f37fb86060db61d5d356d0cb2d4e2ea5e39172b6f314a63fc3d4f530f5c99beb", +"TT_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "93bf717a8b4d4371af323d07f0f4538539a5199f8c811d402445a4f08789abef", +"TT_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ead03a1ab9def68c0c41471fc02f346d6dee943c9479bfe24d88a22e897bee63", +"TT_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "0a7562efc888c57ced1fbcdbea8255bf604ef167098969b313e9a5531203670a", +"TT_en_bitcoin-test_zcash.py::test_external_presigned": "58ca129cf30e1cfb9a4b393967b859094cf7b7a3095bb1962f9199b52fac8245", +"TT_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5b0b0f76aa1fb8eace9848f3dc9fe6e3e4730a85de184192fec9dce364bbec36", +"TT_en_bitcoin-test_zcash.py::test_spend_old_versions": "921df31d90290b36c1c650451c4979a85637bbe3e2e918d09d826e63db9eb597", +"TT_en_bitcoin-test_zcash.py::test_v3_not_supported": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_bitcoin-test_zcash.py::test_version_group_id_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a793235b055146b364dab3842f1364f1d73a0622fbb6f2688463b1eeb46155c7", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "b7325f5034455301c16ed0ee5799bbc26669eff127139198c4199bb94968a385", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "28383f6ff4094be8d3ce786556bd40fc97c3ad0b4c5879328824084ab4317b86", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8deed6efec61f0237dcc1e5048492e01d55c7bd833f2c70e4e8fed46e836ad61", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8ed36af60e84e1e43cf6d4e5c3fd3fff0125005ecb86f4a78e240f7837e777ea", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "92b06620086f0cb3b61937db9c942d5eee357efa3fbbd2f86781732f2f692f89", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "e02e6bcb1f9f6ea287ea5282600f622d52522aa463b48cdbb4ca107201e33d2d", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "115d5b4e020583299b990d80068cf91c7cb3a66a9911d75ea1b6edff41e18a46", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "5eebe2c33a6cd56cd926da5a8b525d862997df17846ac49ff137947a5034ef83", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f7d576e9ee746008a36d2a19ec7832cb2d107193e77303e5865ad4e811ee52ef", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "23670f641c3901310bfb3624875ed6188b04376169062062ad580108e4d85052", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "5c193e247cda7df8cf60fc1b9a132bbe4f75145023aea5c48fa0318b84f3f5c6", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b3f09e86d3eae98f8aa2800a78171e19a3edd0f49aeca1dfdc9aa6a5e08fdf5d", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "5e926670cd17c32366a14ce859c41a8d7b803991b7680ea2ce2f2aa480a17821", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "a51ca1c7df82ca4094847a4d1ce3a7fb675bd52e105e07d2f494631d5c6ca11c", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "530b5b42f2d947a67c7439b9af31393ab42e70b73ce7334dd35b0d4f7fc6680c", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "90dc52fee3fda8a08ca0b5ec6927c56bfaec144474df3c3184acf9f327d4aea7", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "894a23c78b4f72dd299f07e7fbb21d1fa3669ac5921acc2267eb6f40c8321b96", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "86a2724d90a4b32bda758216b1fb9b1b609df37d32031af08e91bfb3be40d61d", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8ad632a79decdd304a270a9d0275ab43433afc24f08415c0e2c6570230af2a88", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f68ecca4dc2ed146c83220e67db6bdf2d684c54c73a243da05fdd1efedcafedb", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b841eff7ee1d641a7796cf1e99dd260f0c176343ef0bd8c7bf697769430e0d51", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "6176161d5744d832e208199e964b6452bc37d782654ba55d361ffeb4f0fb2dbe", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "edb0279a09e1c36eda30a3d48f0de6f547bc6213fa588fded78c03c7b1cb5630", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "432be76a7cedfbd3ac00de037cc9074332105770318c7b399749c7551b0b24ea", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "5438e6f171f6a376e8832f50fdddb5b9f584e55018b85fcee8dea962b152ca1e", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "79c1a4892f1f5c60274e3622a58b0479a678c3104d3677d4251c56056629db12", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "911f9906068aba634eaed98136bb4e98c4a7b1bf3aa4fe1390a872f1547edbb8", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "e429457e523144e8ea90645bf6dec8ee105e02d18eee3c4ba414c311e1ea9c5b", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "42dfa0cac9ac525a24d7a1770f66d1790352b1900d614a50faa24fc7a07d9f9a", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "92a896d7018181dadd4c49d4d01639d8fb454403066afff75355d59888c07b02", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "aa7b2e537a9c7b9510f8298543161407ef4596088fc9c67c57f9a014b97c000a", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "4ea97f8df29eb686bd4a2ac101aa6ccdf4f124ab1e2dc8b913b36e56a7950d43", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "a3259e596d5f8c4ca8e9ba4de2f14fe30d269a4c3d011778b84f73ae4a4c80f0", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7fabc235b262cbb2fa45e42aeb900bbc1cdd8a684d2ad5e08b51fdb147657990", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "c40565fd4fdcf558c29c67b25e2aaf88e1e41c3d35735c344ee09ec672cc1266", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0053e85ac2f8d5659d098f1d878fa7e37d712c79d3bed8a596bb639fdfc720e3", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "37afe319cc51bfd117eb04d350e1d2a174030d0f21723eef23ccec7eeb887bfe", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5a9e1aedd3047e3f741f88549fb2497e2e9216ee326553efd146ae078449a5bd", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4b9aa38bea642c08c31c946baf12ce209b5106a5d8894939def0d899c580a4af", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "5dd80af476ecb417881167555c48b0e267d575ce29f952dba73158861de802b6", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3acdf363fd73843b24bcc482bbffafc0f38eee9a29e1b46a2d101e19851b77bb", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fe53efd4fb003b92c0ec7c73e4f5bdb4e37cda1b42bd86c319328d127e4074ed", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "e8f224fe8adedfeba19c84716af802720cb4df5bb2e346f58b7e9daaefc1a129", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "dca5729b439904a756b21e18660a933446881f9d4fa47b2b579717b9d6a72e52", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "9bcff6602d53b7ab987fa11da5e47a6dd4c1ce458af332acf93e8699709cd3fd", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "151fb9e8eb4eb78c1433de17883440f658661137667733b78ce46027e29f856a", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b75c9f7cd0741200af7dadb268f07cf29bb80d1b6b3ee5d7b640c31b5544f41d", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "d0aa6f83db15be9e81e663daed4ab2d08c7c4f50fe3947a95607ace47e33dfdf", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "0f2826893d63d9044ccade5681fc1c1e1bb132fa18df0536be1809333bdd5eef", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d42e55cc3b2d396128b774a28fdc7e02a9f38497e5df33ba8bc544752e331766", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f538030a0b25cb9b2a555f52d1e63fd66dedfce7eb0544838270f1afe3feb8f5", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "96c6fa4c4dc664ef49a515f2ad2a01639a20d25d28a7d93bea76e1974e171d15", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "1b48eab06b558cd524f5741db98497d0eb9843f3d216f24e73c904b6ccbfc0e0", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cd625eb49e2df164c9118ac74c8de1926c722b72c6139e3c5984f5ccceafcc55", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "321abb9c816c43d6ec44ad22188bb835505c706df4f9f37ea131e82dbe83451c", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1e53c7f2c73c425437435cfc4b02b4240fb1e230a221ecfec39ab09d8f4161c2", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "2849e68d49e69c8244813885f59021cb993c2f2f29110d3f2e129f4610827ae0", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "44acac35409ee4a055229367bfc80d745e4847fdb631edf7621d47d7fde7d34d", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "462b2be9aa31806ba6e30ec00b8542ab263b518c9871aeae10506b6b07a96b98", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "45137352430b89fee0dc777574b3c3c12b807979a00f277bb2e21bff2ad1c8bb", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c8a2b7c44515e1faaa8269ac4c60f1f6c3d22827b924fbd564fba3c8b63b0db8", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "487484df2758c739067062dc2b9e3080a5e04f8aa5c68ae9277060dccd1eec36", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "7937e85284cd08917b7db06c4feea5da46f923907a6240a86362031547841b43", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "faee9b0ccb1ee2b76b8fad5e4da9d6d3d8a6476128a0df91d0d47f5dcef89320", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "0644211c8a04a5ef6bea4867fa7f4d008786bcadbd4a22a2a32a8203ded4053c", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "e03d2e13242ccb5964145a256cff5f0d8ecb902ac8f040b6d5dae575be18d262", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "691b3ccd065e0ed3fb665ddb6e1a6cffe67d7fe74c859f677819efd8030fea60", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "dff434abdc2e025c5de3a4bdd0a8614f58c27d3778e6062e951244c9d4c5f2d0", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "97e8a0674c484269b3755a87380859a3d0cebefb95c4678be5acd7e4b6373795", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "0d572466e8578b2bd6152e3b20ce33aa9ba69abd7da0e1ccb522108484ca53e4", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "361e677305d13f75bf0a71155f8f384cc7a85a53d27d92b662671354deba1756", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "a954b7609d2c5a898ad54f1a15c2d7f190d4e2fb5eb828a1d7a2ac107b87f10d", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "abd332668db3bf105d3a8e55fa1ccf90b4f1acb62e5d1c2860f7ee2599b80534", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2994c65408ded3a3a389cb1d3fb7fffd72f6e24aab6b26f6eba08315c09e9444", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "288e4e13bb3a3a7948e925dcbad8c61cc7245c52409818bd2178b49f0c230c23", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "614cc13a64f35ac3247b83440cdea22a18257afef165fc54d41917500cdd409f", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "1c4bf364e403371d1b4570a6d7a2b8f9ac231851cbf67f56f64fe350e0edadd1", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "a9958771b2394aa3d6488f5d28d0516fb2632997be4ef3cfe272d8468b475e70", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8281c20dcf6ccadd0e0a0db53adb4641706dbcb48bf685762173f5645abfa39b", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5dafbc14364b371d938a5dbf2dd1696958dd68fd2f10702dd512f5bd7df02602", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a882c9e5ffbaca9ec0e7f0fcc275270268fa9ef3c9ed135e543ce39af912cbe5", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "d3c1b530540a57f50020e62cd9acfe8c2d64d8c1ecad74226e9419876ae73f16", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "262022e068ac3dcbba07b3451e9b670187bce739b85cd87835b18c544ab66b10", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "dd731124e63c9856d1b3ca05f5b11d922b33bd82db7535f7fa8b135213f648cb", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "969a01934c3f20e57c1ef3bcccf14499c15621489b67f8e9831dd7365ae3c130", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1b397226957de70e91fe48344b86beed80d3c21fc5bd2b6c2b38c1ec6d6a35f3", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "99898cc1734fd63bf4d7906f30087e77138857371109b4c58fcb0aa8d312476f", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "bd9d8a62ed8e4bb8dfe479f6c14d026b41a8b5f8d9a65c21784306dc208f4cdf", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "93a3099eba0179a1ac48e751a7140dedf77cfc572fcc90e8fa6c9f110ceb2b8c", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "027943246f0638357411b1195bd35a2f0d9a976449a7efd3d8dbf26b8205410e", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "6173e8a3a2165a0f54bc124bc505a7ce9aeefecb07cb0803fa22c7d9e2487d0a", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "dde7f3743ec2e9bd7d441b2f6970ccda38c47242fd64440126ded6f61825f756", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "eab03e524c6cfe6f04d0dcf1a7010faef85d62720f9d8722e6e137e7f05abc33", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "9859e1419d1a4aa46be81171ec835e137184d834d5f57ef37e918061b485ca8e", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e48073cb63f1bcac2d7e5f8dcf59e3dc65edce7205eb0f410f70133d28779130", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "0942bab8dc494e8527d4ddfb9411e43c43d5960feb16018cb45c5ee2c6f57770", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "eb01dea0983af584be8ebedacc140c9e5d295204c7f43f604122abae3ffe8f82", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "4ec3428cbcc79e37db158ec1769f751044b5d3936bd057215c2076ddc2487e21", +"TT_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5598cb3d539a85ee72edbfb70583b43b236e4638662de28bfb642bdd93a6fe59", +"TT_en_cardano-test_derivations.py::test_bad_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_cardano-test_derivations.py::test_ledger_available_always": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "bd5251d6b4525252b16983691a028174d6c083b2c062bb076d6e2f242e470812", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "211a2ca1fc8feadf49d0212d66c4017a12f6860e479cc9da494d3a2db9ee4a40", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4e93343b9e86999504bb3b8e423c5620eb53c86a9fc82f47af142e18d70a457e", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "a175d8c11f1e81eeafe332387e79b3f4bb056e4b1243daa734ea2e9a484a449e", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "aa80e685410e23559d8273af3e08e53c499326759206e52fa45556b02f4abeaa", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e754f01cc31ef7efb83621473556fc0a2d81743594ef62cdfadb2e8233c12ca7", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "3c6c11eeddec4f0438c5180ce4cdcbf69ef1cf04470e5f0dd38a53e17fd68203", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "81005c114bdbe998054d6e94b60bad71d98e7d38715f07a38fb64ce0719bd9b7", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "d4cb9b8254b7f5d42b6440d6c1d8c7ab4802850c0e3d906b4489302da43e9981", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "714fa46f0617fc163cb8b7fd2f947f3db9e2e7f43202e77a39eaf612eb3b057d", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "48a066f73096f96a685337d3942ada9493abe686f5bf70a2a224a999ba5dab3c", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "c3af0c697cfff8e404e6671e5f77f3b556386fbacd25eab158d866c21c6148f6", +"TT_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9343101c53fe8b7360ecd5a102b3e507aabf29f37eeb253df3c88f6deecacb7b", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "8b67edca40129904893563b0c85d2c86398a078cb740a3ca6e23d6489afc1813", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3e13929eb81c8077e946779e4ab3b1d3b5a461bf5a4cf3a886d6ac0a1d5297d4", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cfc2ff70d16e4b00becc081367494ef3ea66f2702b318752077ea1002e6aa972", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "b37e039e74b17959b0d2f13d60bac840956b655b93d8395b9dceba54b4e0e504", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "7572d0edd262f438a53b71eb79f311c0219cc472613492fbc72797d879f5c1be", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d9c57a802003857f97ffb5eae4a42f93d745c6d574dcad17ef5408bde9d54b36", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "960cfc6d88ed3325ec564aa9365fb20f489ad0da15acfa2d9567860e798acbbc", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0d1f0bcc4aa3fb97b6b2cf9748a0129fc2e45c234243da40b5fc19c34f093ea0", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "31541c99c75d9ba3cc057dac8649890544313ee4dfa8040187238ca3383dfd62", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "cf660c71ddea5035946153c57114466d6ff0ae5d4e0af7d14516f9c26f61b517", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "cf660c71ddea5035946153c57114466d6ff0ae5d4e0af7d14516f9c26f61b517", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2395691691124886700515d814ac9839732a849cf5d96b8db9acb196c5289d6e", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "f73a3e9d253d92d0be75e8d9670f57cb6306abb2b89d5cdf043adb7e1b4889f2", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "b930f013a193eca96f7692223256eb858c060e6b15029df322c7d8d9b6c02422", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "fa3cb8592caa01cd3f4121dd8a1870f0fbfb2280ef5bd30224bbcff6e98473cf", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "fed09cf963c18cf146e4b76e45a76ab8517e92bbe937f6eba6faefddd45169d1", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "46ca1f5850ea62e465758494f42d2970607ab9c34e36fece093d50f901c9bd69", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "9269b9465b1581f0629cd8b317ccf57b69b9607a926f01d982d6f6947f59fa90", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a6ef1c68694d404faae26fd10c501debf48d56df64449ebbcb4dd43a5826a210", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "3c045328c328729ae658fe885d9aa49bf39af763febeb0e7826e8cd18cb4b5e0", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "fed09cf963c18cf146e4b76e45a76ab8517e92bbe937f6eba6faefddd45169d1", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "46ca1f5850ea62e465758494f42d2970607ab9c34e36fece093d50f901c9bd69", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "585cd801813486920555fdad9184439b3b9802f8eac82f7d95354f6a34fd6969", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "48436be0688c36b7a7b372339eed6eedd367b42b2429c2410d7dd85b28072323", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "5a20fc3692a0f398948ac869026d8ae313577495ad804ab3bd09638e0b5974b8", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "a4ec018180fb251666cca02e2525d98e97fc510313e2aa44baa13fdf373f33bb", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "97c3bdfe30e901bd5b4938e4dc19ebfb788ef2b4166fd77aab99d1af1e6d102f", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "6497a875d1d188bcbf0293e303c9cea13d26f88b12cd1422239b99aa0f2ed3ed", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "31ab7ddf5da2bdd7da4f20c39ae566f0fffd3e84cfa7dbdbe7ae2916482809fc", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "a1389ced8400ae5464f921d39bd388ee855de605343c71235097dd0731820db7", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "42eed639788adda40cb3b5134b97f02974db0fdc27b87a686d7855b5feaa80fc", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d3bab830b543745d67656d0913f62f073e315293dffe54382024e4c9fda96b71", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "641709e3e10fa91ce21803ba5a52cfc434cdd3578bcd962164bcb99d3a43d6da", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "178e9ba04a5ccbce4326a33bd11fe80b2c8d9e2d16287829a8c48ef8570def7e", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "dbc002eddbb6d4a5f71eb0ca8da65903837b2da73201ec1714e3124ed2c3e064", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dcc12f084e836ace643b6f503e60b003c88c419d27f483a11737a9e9c6250d17", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "8c7a81bc9e9e95cd987b6e61036c95f64818b7c1f77c684aabf78297ca2a5ee0", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2c4a8063b68f4d1c6b1b39f16cb39c9adc7f0b2176d39ed4e56c12b7129c21eb", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "5c53c3396091ddf0f8a716f471e6c2740c1385a0a04085163299c1ceeeb89092", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a4114ed4ac01babea79a34adfbcc0a74b85f4b713af6ee8cff6cc8397c57e59e", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "b69e40793e7ee2df7db1cede931da022fcf9aac5dc71774732c542745ed86450", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "38bc1a59a58e5d66e4fcfd0ec815765445ece013a158997778042417dcf236e7", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "94178bb10492c182aa49e0f3c9defa06da9a4a9029bfc500438d2505a2ff29d8", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "3dcc07313a80489e31e0615944cc196d0fcc8970578476b562b91c367e282b09", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "7f0b5327a83fa2f80c83beb131182000c2d20bbc18a563ea2e2bb4783f583119", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "6ec6c8869de3eb9cd36e821a4b8509331ac4b4f49263b2cb5d99730682ed713e", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "f79ab687372b56b3a554af84ae69fdd56c4835cbdba79793b80e54a16de27798", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "b588d1972aba821545fcf4b60c308fe945fa907f087e2db280433b0419156b22", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "231ea4e3ead93f6785985688a996772e6d9d73e008b16ad08aa2e077ef59af52", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "b775180796400c7e96abc5c8d07a937adc0b1506e21154fa8a6d2a1288df30e2", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "742d2ec5dd248038f744bc22a63246b06e810e88490d162dc8afb2c3a17a518b", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "27eb9884ece8027dc01e64b3367c5ae79021ff0b05277d772869ea1607a7f111", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "10f5a3304c468fe5eca232d508e427023d9276ff5f8576c1c5df5e263599bd20", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "f722a2a9d9a92911063f262e8122896ef129b15b6e3e7bfbd7d1773eaeaf5890", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1df3cf734d6342f74cde5b48d78e3a260be7dafd895c57cdf88154c9b6899d33", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "eb632b495afa606d4eb03d0cd449859a659c5d40ad8f6ada7b33fd59ef163708", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4312df9c0b61cbf8e29efae866efdb58df2a339adeffde75ea72e01259a4b4bb", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "137fff528553be9c8c12b08865441f954d7423b96b5fe5b5850cf3fbb86e2aa8", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "28ed27584c289daba9ebcb0b5cfa37434fa7482877b87dd5b17e971bb0c22db5", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "399d21207fd15392b2b1fb698eb1ca23330e14cc400910e8169780dbcec22b67", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fdc2b395cbaf01587842304f4554246eb8cf6f39cb3960d34c8aec9a382f5328", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d7ff337c6fd0c7cba6f1d9f66fed32eba55bd4416178b14ba14de11352b9e3e7", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "326faa34ad4e0e092a8a446d3603b06963852e0c3baefa7fdd20d3a1c78fa1aa", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c83aa4ac945a5e425d585a041594324c8b11d28d34a86dc51d9a77ce9a35a51", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "bd44276fddeaf4511fb7241a65fad11012088c168d26ebe314fc1e0c204edf1a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dde4b7c2ea73199f674943b01e3cc9e1acec55f7a9ca28ab8c859ca91640a772", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "b182539ac4d8a70556e2eb004723bc07d8ed218e7239a6e45f482e65b8b8a426", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "8d45248ed4f81d0e42054e39041a1fcc00863a006144147c9b0d9842476ce7c3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0f0095ba797fc8998b0d45ae32d88feecdbef4b99041e9f68ec85c0a172fdaf9", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "0dc14651ad672280f3dcacb5a406444e5e1c706568fd390a54fd81f25e081197", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f5d2d5e4b29e094268b485cfc59d6faecbf09b72bc2252e14325d7e4a53beda6", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "08872494c7b3422048efd15aa0fb136fbc9742a3229b5d129a023add1bc0751c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "8433673d18ec3f32bdafa4df6e8936a03831354ee91b597cbabf0cecbb7eab91", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "abb29879f4bfc730eb3c1273082f5b9abe106f9eae3b3d3e363a0061410a24cb", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "d6b60d525662db4f50820dd2aadbf1751d74640262ea5d36c59f7a291b64ec14", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "da0e65e13123933d146e70d198b5514b6222ac170939d4fbbbba84a06f5256b5", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "64e61dae2757cf9f237493e454ae527c77a0a108a1fe9d92cdcc561367a7be06", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "db6f5d282c4eefb95b236cd1a08cb59c94167d9604337982ea5a97a306b9502a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8595d86f024902af417cf61d79752361f991e83dcaa06653ccc3e3a5bfe1b03e", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d408b986aa66f53990851d09d2c1db4ca8714640301c35aa8d96c3552f956d41", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "83f4c429914599c039dc8cc49ec9810670868a585fc968de9dfb1efb5c5927cf", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "04ae909cb1220b008e46f25b0f3131dd27ee97defab647744f412ac6e1c4d3c4", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d408b986aa66f53990851d09d2c1db4ca8714640301c35aa8d96c3552f956d41", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "1fddb61e3c3a7fc0bd764b534a9d836a1d71256ba213138ca7e71f59f59e2519", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "210426af15bf66882c21b523bea7522d93f06f0a67bdd9ed59067edaa1aa07a5", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "11b2bd7e0bff71be8c9c271770b59cd6b8c02d0b0500b58ebd8e61ca44768491", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "66c962ebc60a9d2bfb0a20defbcac98c2ebbb181628105fb89661578ac6479a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "086ceaf6c97354ed2de94ffeedce7a51c86dac8b6351228f692d6c59368ab0d8", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "96581a719cc8a8ec7d1299fc48138ace97f740645973ba08294439a354858f73", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "a8dc52d68ddc7b418dd86cbaddbea42a45bf722e25fe477e24660123af8eef94", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "759fe8fda91115b4f75f56e4f95cc52f58ce099de2ba466874e23a6c35ff3c6a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "945ab62e3008545dbb6d6ea38595fc693844001d093c78dd969a7b5e1b67f1f3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c93d56711bea6a2317d8e14d4f93a9b0941593c87225bda96b8524488ce4b6bb", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1e62b11c3eb59c4af8e7c66e6481a956b186a32e1ea6f20ab679f5abbae98684", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "dec3fdd0efb3f3e163134a1043b5357fe686ebb9013ba4b9c14be1dd9164d434", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "57812101e7daec78830827aafba09a9b7a6f6180cdfbc63448e46254ba896c2f", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "da2d8ed785581989ef058ad4b6f0e71d299e4cb5937a163c04625d3aca8fdcb8", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "a0725ff6de673047101040698cd855af16c8a8fa68f9a67c50dd23452d89f48a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "70df086d9d557fc7ad5fcf230e0232524a9c1c32c33d483722f2b1c7b1ced25f", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "468690086dda091c024e7bac1c6bad638b4dc9c7c90aa2e89bcc3d1910167b1c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "be409a32f2a558fae9dae332264053166f0d3916ebfdbaecf80cc820c90a6a0c", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "ad549b55dc4a084a1804eef07da55838b1ea51b37651d4a14c36dac63f7b81ad", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "c129b2eaf86090db7b9f69f4f7cbe5e2894879bdd476f97ecccfb4cbdcbb1174", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "333453ec30e9813548597d8d7e72a1b9ba8dc05e621ab45d06bf49f7ab344688", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "89f2f6e3d5d80799bfedf16eb153f67fd74530434e6b8d1ad2b243b030d1c274", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "d0b79fbb34282a310d7de6c4547e8ea1f7f7d81b594c2d3e594ca763f758914d", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "d644bd53a4c9e966414463acb86d64b10cd2e18d472c8ac1bbc397c49a32ed1e", +"TT_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "b23d100a356038d67e4daf39f1e01207d66103a6329c9f659db91d4002937f8b", +"TT_en_eos-test_get_public_key.py::test_eos_get_public_key": "6664c46f17816199cd89e6acb7e49233e66800ac6ba1993aac79157378de8476", +"TT_en_eos-test_signtx.py::test_eos_signtx_buyram": "714d9260fd979223e6a7193d8ff6f984b742f6c55fc0a5b021fa7ebf8b729186", +"TT_en_eos-test_signtx.py::test_eos_signtx_buyrambytes": "1499ef6a40023ee5fcf9b8e514bdbea5668d6acc5af84eb37c95dd0a3272f344", +"TT_en_eos-test_signtx.py::test_eos_signtx_delegate": "ce347d75c4737672ac191990d892a12b14faf39c86a796b27a97edee8183036a", +"TT_en_eos-test_signtx.py::test_eos_signtx_deleteauth": "1dd58b4ac73e8aa9844554224da2b732ddee5aa3e3ff4c566799356ec69ec455", +"TT_en_eos-test_signtx.py::test_eos_signtx_linkauth": "397a0aa176bb746b98d07773c607ad8e62496de41a5044f099c51db5b881d1aa", +"TT_en_eos-test_signtx.py::test_eos_signtx_newaccount": "788c076d496a963f0bcdfdd37fc35c475237a5cd4da226edf0668e3ea23dac59", +"TT_en_eos-test_signtx.py::test_eos_signtx_refund": "ef9f2347296d10f62e61ff1910a907ede3d0531dcf1a32bcaaf504f2e9a8e874", +"TT_en_eos-test_signtx.py::test_eos_signtx_sellram": "995a373eb66c705d3a3a57d8061d96c2fa4f87255d87e796e4e50e5dfdbc9cd3", +"TT_en_eos-test_signtx.py::test_eos_signtx_setcontract": "f60526410ebab0407826ee3ee73fa8a439fac538fe16c0b9d88317d1b16a397b", +"TT_en_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "c57c407dd3147165cbd231a5557912040ee143eda9e75c1876270cb6155901dd", +"TT_en_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "c57c407dd3147165cbd231a5557912040ee143eda9e75c1876270cb6155901dd", +"TT_en_eos-test_signtx.py::test_eos_signtx_undelegate": "cffb6559e0675ebc885e9feb16494636d01c9651ee5a8ec94f316533cc161e88", +"TT_en_eos-test_signtx.py::test_eos_signtx_unknown": "91423278314e0a0c6cf069906d38720faefde03421e78f7a0b13b2bf3f8ffe91", +"TT_en_eos-test_signtx.py::test_eos_signtx_unlinkauth": "85c19316319c070cf39b952e2b1fe50cd95f59e563926985d4503bf67322887e", +"TT_en_eos-test_signtx.py::test_eos_signtx_updateauth": "ac173799bcd8d981f778e273f3a6ea092677d7b733b8ff97f301e77b8b1eb647", +"TT_en_eos-test_signtx.py::test_eos_signtx_vote": "c73e5ac4bdc2fedef12bae697b76b7e2fced28ce9c11d2cb3d98df9488d03bf9", +"TT_en_eos-test_signtx.py::test_eos_signtx_vote_proxy": "fa511b4c78e1d926cbebdeb010b3c71ff4c3d3adb8558a4439e1d4506214d418", +"TT_en_ethereum-test_definitions.py::test_builtin": "c0da4f04e898db54461b5e8a5f29fc16b91f2c5f620d1dee2e19611a4400cd0f", +"TT_en_ethereum-test_definitions.py::test_builtin_token": "94ecde61300f6f5257ebdcb3b62cc7f901c32108497878c1e9ef9104506a5f62", +"TT_en_ethereum-test_definitions.py::test_chain_id_allowed": "6370b3457fba40de0120fbb1bfc6554ff76e6f50f86a8e91f45d96ea4209c5ed", +"TT_en_ethereum-test_definitions.py::test_chain_id_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "aa3663738e87a951416eb07a96373cdab9e1dc78b4a81d38c90cce4a2c47e27e", +"TT_en_ethereum-test_definitions.py::test_external_chain_token_ok": "af0d29cc411fe6a4f8b9840250c2435f85b29962e2a8929ce18fcba36674fc4e", +"TT_en_ethereum-test_definitions.py::test_external_chain_without_token": "8340e2f269d4a0a96c7bb0d9b25aff90241e24db218633d8711223b738ab130d", +"TT_en_ethereum-test_definitions.py::test_external_token": "179f43de25b6a293ff255b4f9e1d09d78df1a928319d9b5789931b7bb7371a61", +"TT_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "c610a15399d8ec4d448a5a8904347e598ba7184585af296d4d0c3b6ec5df8993", +"TT_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "cfd045d3ffa9ea1d1622ff50c546cda1f7678e25540c02b23ac3dae4d1a0dbc3", +"TT_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "99b134db1b9f23de02f2f9f98dbaefe5d1b29e8f3b145c6544946c91a896e488", +"TT_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "433d26ebebf355ffc86eac6d8146447790b1f4d8bd34121b3a631a8dbc30e74b", +"TT_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_slip44_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions.py::test_slip44_external": "1be87dc3c1f639d9e0507bcd3836f2d8e36ceafb0500fc0c78e74b70541c82e7", +"TT_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_bad_prefix": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_bad_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_bad_type": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_mangled_payload": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_mangled_signature": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_missing_signature": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_outdated": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_short_message": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "dae2d0e17fc633e281c0cdf96663346e2fdc148899cfdc34ebe8143383864d19", +"TT_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d5963af13b1a053428be488a3475b3e5b25634292f27fbe1e81263cf9edbae79", +"TT_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "8b6d747f11a1bd32b00a92385bed4d638718e733e80ee9f145b0a9fb0d214589", +"TT_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "3aa63c89a2693aa70258f3a46d9aad78d5926a8af63d6aebbc37a2644cbd80ef", +"TT_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "2a03d5555eebb9b3cc7e78e0bf79d5c8b3ff991c1afb5db5078fb8f2ec486fd4", +"TT_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cc46d5ffd339b76744cc822e950b4f9252b993316f36fa04a6fd371424c8dff4", +"TT_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "2737bbf908acddc26c12e3e32e2d25ba2f8af28020cefadc0dea035491cfbfb8", +"TT_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6356dd6ec5475397ac62d4345195d3b9f91e0cdbcace6c9fd2067a1ef31fb44c", +"TT_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "49746bdc089d8ffa036cdd209a0d99f6fe669d2397ce5a88bf30cbadfb0b5174", +"TT_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "2e8db4c9cc0879db9a4339556c88118009b919bb5923f93c891f65870974fb17", +"TT_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "5259d154279b4007f26e44e931550d2e1750bc09be98478d845da9cd30dcd03e", +"TT_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "0d38df9e7553ab93ea60c080b5ab8a42b3809c637a4257d13db300805553bbe8", +"TT_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"TT_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"TT_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"TT_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"TT_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "45e584bbcda03cf905239b8bd506a7b63dc17ed5340d803df17e02c3c08a3e07", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "6baded0bdaed70ba48740db902cd7088fcd1aad9f00164209642450fbe92d80e", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "5e2dff98f868b98280d8605517c0543a6f43848dd681b525ed26f5da99d6cd89", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "175e5fc9017dd2c89ef55bca62773d2deef95dab93578aa061711001b7764f8d", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "ab9687262a7d3c1e621bbd7b5b2d1b486fbd566fc6c5974210800aa0a3a7ba8d", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5bd656e64cb5013210c2bc189599fe1ed14110deac23043c38c736b98f137e63", +"TT_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "5541c1bc7cdec395137a32a8c8a894f4c56eb55595179fc334c4a78ef178263b", +"TT_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "80c45e65c861c1668f272398c4a790cc9dd0613aace21bfe554c9a685e2eae8f", +"TT_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "c6f492dc624460c76c78d367d8ee22e1f24f6627db61eb8dfafdc2c90e5477ce", +"TT_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "dba56b7e5def913c477a5a4cd56976f17316a53856a1c4e6a5981d8d7972464b", +"TT_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "3e4a965130a869c772ce2334b2fd1a789efc382dee4527f7eb4244af39de1a72", +"TT_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "b55f2aa360c610e470b1af6becff9a69e49d56476b51dcc61de43cf4a24f599f", +"TT_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6c710f6210556bf2ded8a6027776280ec23b8724eebd99cb4332552d260a4c59", +"TT_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "2d8d1acf5e6a4010cdb9feb342e10f627fd64586e49ad8ea57d422a3fc148ce3", +"TT_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5db2cdd9461ef667c339619a42fce89a7e46c7ae576d83712efebbae8cd4ed09", +"TT_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "985b867aeda08c981c8c610e94f454c8529fc4d14c9cb01881499784c5a4b6c1", +"TT_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "cbea228b1a6582289d57b5ef0017e9b52dbaf1817078039590c9beebe5ba6344", +"TT_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "1b201dbdd316979addaf42877f194481d2cc969e2620268e717c441a31c112e0", +"TT_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "f612aed993f77906c8990d645a9bd4abfb30d57989121ba2e10cfd157a811983", +"TT_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "5c9607cef8d99d24c5a3b1554369a15391bc58ca90a815cb37689c8f05f48dc6", +"TT_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "46148fc0e4ddad92ddf4986b72f557c4316ff6a5d386b12a284a90d0bee46820", +"TT_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "b7e5ac80950f2afcd1db8dca4d37236ab434e810c4e5b4b69f97bb073f14d505", +"TT_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c175ff9348c8bfbdffed2809f7b8f158ed1e7896abc19b6191245ceca01d594f", +"TT_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "69f815f79ed5dfd60f009bbe3024d7e910fe37ee32377c955ee29b569fd4f58d", +"TT_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "cbea228b1a6582289d57b5ef0017e9b52dbaf1817078039590c9beebe5ba6344", +"TT_en_ethereum-test_signtx.py::test_data_streaming": "9a89cb6f1a61c69a35a7c5f53239d5ffce3ff7bc07a2a08f67266ebd753de3f7", +"TT_en_ethereum-test_signtx.py::test_sanity_checks": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"TT_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "70f61cbd4bbed46fadcdb3405b47ea23129026bfd99eb209ed8c5c2c3a03dc12", +"TT_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", +"TT_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "88fa5319d82eda664c0e33f665aef10d782d6df42cff31bda8e170239013170a", +"TT_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", +"TT_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"TT_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"TT_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", +"TT_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", +"TT_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"TT_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"TT_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", +"TT_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "fa47e3639c860f5865382e2b4ba55d833989b6a0f41ed81fa1066a57105f8c59", +"TT_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", +"TT_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"TT_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"TT_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"TT_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", +"TT_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", +"TT_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "2f22d59bffb56e1cf2ba2353a6cd6c96cf5d04c95eec1b7d25bf223077008772", +"TT_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3ad938f73145a9eae5303218fe98f832e98e4d94e525d6f3bfdbdcb698549657", +"TT_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "0ef31079e8df1fa01e872a2fac2daa28b1df648bad515a69d9c6014951119308", +"TT_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", +"TT_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1399e2245a8348e03f95dd1a439df497c13a74fbb7e60b31b909c243c1bdbb4e", +"TT_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", +"TT_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", +"TT_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", +"TT_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", +"TT_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "f9cf7d0ac69d056e77d5b8eea556d25357b8bbf18576fbe537cf7c480031e217", +"TT_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", +"TT_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"TT_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", +"TT_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", +"TT_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2cc8a86f5940e557e838c23f85c899fa5e21663ffb9ab2e5420a30c75b850b84", +"TT_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "76b402adf767f9f34bc237dc37ccfdc48ca1c22fffb117ae8732636965a68d4e", +"TT_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "238aceb5cbd565e67696c8f6d73dc4573a3bee178ab66b208d85c32cf45957d6", +"TT_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "3d6987d4440d51bb4805d8a08e6cde9f6854f90d2b064553d42c1cbaa420a53f", +"TT_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0310349fb18c476ec82e058667d8e6bf69adc14696a3755d878e7bae3bf108fb", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "97fac4b6db7a446f53c3f1fa27ba925c1651a8831e76db7d220efbf414482139", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "997848a3ecc4f0c5ed8004867a8d5deae48e832c12d4e90bc192f28394a704fb", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e85604e8d3d7b102215e6a18d828235df540d9c32df78e1b89b988d6dd7f62e0", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "7838bcd3a0bbeeb327aa639e93ad0a938ecd3db27ae3086b5b8d7d1a2cf6970e", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "2bd40660815fee49cfb00de9b8e64040cca5b61398b9c38a136225ac50e6830c", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8fcc1f1275aa8e99062026b960451521aa894aa3c78b7d04bef368b73085e69e", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", +"TT_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", +"TT_en_ethereum-test_signtx.py::test_signtx_fee_info": "714e4c5f6e6b45fa3e78f74c7ee5e3332f39686f8b708a4f56232105bde0c3e4", +"TT_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8bc38a773c40a70c1eb9b91a5d02ce0a61591ce9e42bd0073bc1395f560f2490", +"TT_en_misc-test_cosi.py::test_cosi_different_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_misc-test_cosi.py::test_cosi_nonce": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", +"TT_en_misc-test_cosi.py::test_cosi_pubkey": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_misc-test_cosi.py::test_cosi_sign1": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", +"TT_en_misc-test_cosi.py::test_cosi_sign2": "b3086dafdda715fea319d90ee3ccab84a1728678dfa67febce1f7cc943d9e585", +"TT_en_misc-test_cosi.py::test_cosi_sign3": "6ea5987edda7c73d7aac080833b8574626f016233c38d068185e8cbcba46cc11", +"TT_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_misc-test_cosi.py::test_invalid_path[m-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_misc-test_cosi.py::test_slip26_paths[42-0]": "25929f2293cfef2d7fdd8859bb16d0311c5532e02cc0624a893c50be3e16182c", +"TT_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "098c3992a0cc170e8041c0b0708a658f2d438da6dd829f38c8082d75a8d43154", +"TT_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "e6366ba60e181360741bd85df2fa8fca85f4dad889d510a5e3365abe63f4d6a2", +"TT_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a78b216be479757c536da26edab8960226c6b1434012d51927b5ea461a952de8", +"TT_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e91bc6a2639778d60a1201e93fcb488714b7d38f037be31f0a41838165019a48", +"TT_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "35ff50fcb49fc802e20fd0a44a161afe0a8b2b2f2781b409a4460632e884a83a", +"TT_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "106c1900eb2e896139b514d9d0d3b4434858c6752c0b8eaca38cf7aadfbe508f", +"TT_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a2c7a9f111cf2a8fd72d06c5fcc738fab679545c891db34043eeb22d1311ac62", +"TT_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0a745253b75f0ededdec44be05e3940166128226e96ee49183fb6c97a3fccf70", +"TT_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2cbaa2088776f1c7c735aa1ef767d33f8ad8ebdb592b6d9814dd1bbabd6da9b5", +"TT_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "58a16c31957f7d540da34a30f54631e607eca1af6efb27a0b3877e49f77a9d56", +"TT_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "7cee26436a0025a56eb1f67e432e4e707857714c1bbf5f61df60cc20f54c84ab", +"TT_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b34ae9ac7b3ea7467afe774bf615ca1e1eab26c64fe5d25178071bf15e8d6518", +"TT_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "648e45403ce412314e9d91625ace8ffdee52ff37ac99b13f4e86d018a024515d", +"TT_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1c723bac9117d59b814785b772a9e34ca9cea4af02a8e7e9969a8ab6c07d6faa", +"TT_en_misc-test_msg_getentropy.py::test_entropy[128]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[129]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[16]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[17]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[1]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[20]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[21]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[256]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[257]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[32]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[33]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[3]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[4]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[512]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[513]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[5]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[64]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[65]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[8]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_getentropy.py::test_entropy[9]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"TT_en_misc-test_msg_signidentity.py::test_sign": "641820cdb6496ddcbe402cba9b3d24bee009ed212c6c1f54a87ba158b6b05049", +"TT_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "f04af61059a8edc28122ad708eaa23a5f27441a63a87041da5bde604f3c585c4", +"TT_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "097567f203b5c8090204f894017ba1676ff3d42c42b79915960d3de701422fec", +"TT_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "d081197da687ed543a4c0bd5ecc65d720253fcc15d2975c26b251bd14ab647de", +"TT_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "0ac1a47b3ad0595e46a8aedae71446d39f1bcfa703cbe4d1681da7ea8c332a31", +"TT_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "09f056cf1613388427d5f742910d8127acd7fdfc55d44e0ab8138e7a45852784", +"TT_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "37e8936c92b8af777c1c6276a2c4cf2c556f6babf9ccc6ed03be990d065f64b8", +"TT_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "132fcbf2f28d368ed826f8ea2bd096572fc9807c6cc9be8f6ada25847b0a0adb", +"TT_en_nem-test_getaddress.py::test_nem_getaddress[False]": "a7871f1b2e8d835fd40f378b1bdfcadaede0556bd5295ab174748527db53fd82", +"TT_en_nem-test_getaddress.py::test_nem_getaddress[True]": "f1eb22b7aee59711693245c866324c9780aacd340c54d2d99c41a69151ba267f", +"TT_en_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "e09e9f00fce4054bf6367777c5ec66494919e3aea5ad3ce9e1840b4c9ef1d42d", +"TT_en_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "b23815b032ea309dd671547e7302f53096b45c5657c20af8ff86a85781a1b1a9", +"TT_en_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "8350cb91369f0302b404085c133066e1d0453f1293c56264a17b95719fe5fbc0", +"TT_en_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "b5c574c87557ad7f3147a276994b07dfe0d50fcee3040dff2380f6ef38fc7859", +"TT_en_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "6e4982b564f289134ec68f9786203a432441475d4f3d935cdeb87862b709b1c0", +"TT_en_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "171d1ee0d2234c9efc6c06cafc7d2519eb3a2562824e4ea9f8b298da6932ab42", +"TT_en_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "65b4a7646e6a762fe87059b34f75730018196dccb8ae5b539471246bb4f443fa", +"TT_en_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "379a956ecd4e5fb029968222b2a20d341cc1487ddbf2a392c38cd73e0a7b37b8", +"TT_en_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "fc31c7e1a668c8c6db13cef90baf722fc1f7009b81d6314c489274718ab127b1", +"TT_en_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "bf8456472807daee3ada2c82e131cb58db47a6fc483dc917f9dbdd1cc2df5024", +"TT_en_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "b09915631506661437de4ef2bc4831054b0c2526310cb48a1f7fd60574de102a", +"TT_en_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "73769ad30f70cbd3288cf59b076fc12bb838fd5a23aefbb804e66a25a6d526b5", +"TT_en_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "8838c998cbe837aff4d6f7f63c4f5f0dcc1cadfa9aae6d6486262a7afd691ea4", +"TT_en_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "d3c8d6656a581e845b54fdca883496388ffa77766892fc5b4bb9e04e1e765651", +"TT_en_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "912291c884e71187005c2356c87c724dbd83a706bed2f28e2a6ff0226c1d9561", +"TT_en_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "05118d403095d355000da8245edafa6b000eae136d9b36349bcc250f93c61e82", +"TT_en_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "02b1d6995080b5186e200233753196c3d1a72658f96af6df546713f412ec1cfe", +"TT_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "6ba7675c1d397a6978a8f8025d8a80024ee862887d4a586e139d250a7476c665", +"TT_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "025e49a30d18066ab4d4cd73af9ca5864b74e2cba625fd56a6905fec9a7017bd", +"TT_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "dfe87991c0ec4150084bc3453145decc3531e21b41e81202c8ca1211929309c6", +"TT_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"TT_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e11ced4e4950c59d52bca1045770606dd08c648f96d5b4426c36048d740e0b45", +"TT_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9d161076574c957b3708ec34771026a970b1ad90ac7bbf5b1492ded0de1f5ba4", +"TT_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "264cc069a974286064781c22c175e54bdb28000909b5dc671acfa03ab272b426", +"TT_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7d0f0cac581360c5a8b64e229171f0c6a92972adff3c3ed334c483076021a041", +"TT_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "2561ac9a4a209c181d8cf35579db0fa36f752cb628067d59d3456d64f82f93cc", +"TT_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "2c4f3600b0f26c4da64add476618ce5bb9d759d914afe89c5a75eec3cd7ebeac", +"TT_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b86d2d1c561fac4055ed1c437bcdd69d2dd7f43553af6bb5630259430983f55a", +"TT_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9271c61c3740658029b0fe3b375377233aaad70a97d929d984f6b1a16b3c1ef7", +"TT_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c0886a9bef6b448d193ddf032c14b614069c5f742aacdfab0d4d21c53a5dd331", +"TT_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "4f90f47e88cca3af88975a817baa01937b21647c19d7799acea6795309bba28b", +"TT_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "143d00d4b2fa5fccd6891526f349684b4866cb111320d45b46e1115bdc4f61aa", +"TT_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d2a3afcb9f5e92f9e65172a0207a83ac372f2951fcec99fae2565a83a3a5c8fb", +"TT_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "90d768219e974a83299fb3d079d457222a331aefd2e8fa69e7b2ffca7a2ad9bd", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "73de5bb9f1528b81396ebfd321df67f773f925d6cbd7e616a58ce30eaea27ef0", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "264cc069a974286064781c22c175e54bdb28000909b5dc671acfa03ab272b426", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "59786fd2798a68e0546515ccd7ec0d7e4c3276098545615850911899953681e1", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bcab24b36d8ac28c76f6ebcf54f416024d3b32ef03862234a88d9128d1e16548", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "12ea0985454ab09cbec3d1f9e4246f0e6c098cc8ea69774ea253a473065e6938", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "66c45751002ae4d84e0ffb3a80349585604b5f19f87d08368e806ff0ac0d6cd5", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7d6b8c0008568f8a9fac9e6bb543b3b60845eb6aa5cc715efc5ed75f95aa27cb", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "443ab1ba8f9bc006865e978418b4ccdf931f88ad5c13397467cfc01ed3b3e406", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "a16d8e9838b762534c0a2d8c82c277ba81e49f018506dc26624a4a0d8cce97c6", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "35565f30ebe2dfccf5c4bd774f7cdf410688347173389b36b1f9d60d441cce96", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "9672e34c2bbd4a3825258f2239d369e4aac4b28a170b6ed9c716180ff0477ed6", +"TT_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "aea2334f29f8f4af160e238d79cac41e1b3b33feb08b71c2ab0cd867b8e8a20b", +"TT_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "5f3413af77cc76413fe1ec3e00e17850f8de504499b5bf9d753ed4d9351931e5", +"TT_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "2b866e19489d98b9924398080478e2126fe9769b057ea725e7ba795584adb1ad", +"TT_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "965dcb5a1cbc4c61790e3ed9cef705962d2ed24046c5a5733e64faf5c8bce543", +"TT_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "ebb906d66f842651cc25cda333d71ddcca0d1fdf023f9a66cf026482bfe95a8d", +"TT_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "4bae92f24e04731197ab0a7051458551ea041bcf483c8c3b740203f9fbb84564", +"TT_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "389ae72b9576b5d8c317fd8fad2656db72c9397ed52014e722aa26048587518f", +"TT_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "2655a385df8ae04636f9193f3aea9078963aaa00c24c56d446f56faa71ad74ad", +"TT_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "20f6295e76a45bce8679780c2eb93f99e7c2cf2e59db7afa81b53ad9a997cdab", +"TT_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "550ef3ed1a280dfee383119ee41329956c47ae38162721cd3ad53f00d8423937", +"TT_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9aa728ab73a36dbe45d91e6406e5e9543ba1627565a901ffded3fe3f4b2031d5", +"TT_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "7927c0cf3eacd16033590e38382618c408d5c67b9b589161de73aa1a0bacec12", +"TT_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f04dc9251b9eea9dec562072972822617f1449f33bee4f38f4720ba9e1ddc027", +"TT_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "80545ae63bc78a9b2268caf0d19e5d5c0f9073db7b5d92406c738244feed70ee", +"TT_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "20af3c7e83478b63e469cde6654119d3de7aa860363ef14aa120b97a1a8475e0", +"TT_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ddf840544d8580d6b057047e9880267670cbe967e5e2ec9817c0c8689b265238", +"TT_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d90e3bf0498d1f8db2ebc99dd2d516f0f7b532627c7a48ef76a96aa8c844786f", +"TT_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7fb8ebc2b2809bec7cb5ed0cb043d2d5f154d2051936427d20503f1f9f7d66f9", +"TT_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "68920bb747d646fe5f274a73a64935f4c79a1974c56b1ab5e87a949d1db8cc89", +"TT_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "192a0d8f6306929e294266aa8ce91e7c805511673ed2982538005fd74c131086", +"TT_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", +"TT_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", +"TT_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", +"TT_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5eb57d3f6b2ecee825566767d7216480b425ce5eefc691e2f4c510fc1db68b83", +"TT_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "7523f86df84554313e5139bafbed7155f1259ec4e201b4c6072d614f08d430f5", +"TT_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "58242541bf8486a102aa87376f2d9a8f2fee74c6956631501155aa5a92ef742f", +"TT_en_ripple-test_get_address.py::test_ripple_get_address_other": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "bc15baef3f52f919dba24b46d828b63eb5ad15dcb0660468e9e17088e1523df4", +"TT_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "c2bccb5164d6fb0a88a20b0df3b9daabce638b269d805aea3bf9afd9e38e6373", +"TT_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "951f076e5f1eb13f2b5465ba5b9e0561db980f4df59d83e0d817f7134f43f87d", +"TT_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "b1ece4eef5d822ac13244f34850444f72c372ba6839b73b8a782fe181342c396", +"TT_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "fd184770f3a77113c4185a56811707b67fc90eb684b4ac20e93c4ddfdff2f04a", +"TT_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8a8f3d3a22c24a4146e2f88b366fff3f64bc94b270eda1a022cfb816b56c1d41", +"TT_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "9445c0da3a53d11b071908ce1522a65e947205a869c3527409b7833560dc2e8c", +"TT_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "763ac28b88d516e205373a6eeaa64eea8327d193e86d1f66714e46e6d57bd0de", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "452b30bfdbaca370d1523334d4a4c5c335137d61aa0f88a5b241540ed3b9560b", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4ed857971174696bcdbf8bb96abcc9a79ba207d4b802bb1596523bdefaac0be4", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "3306ad130ea0a0725b5ff31b36846154574ba2c63f91805239ce3bc92eac22c9", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "bfc9c34d8aff615ec61e887cbb38967c55c33d69e8f75b7d3ac538f40dfd5a58", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8aab2a2a197ef41a044fecbdd3b2b59fc5717ae346cb6d1ea982d874451104e3", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "cf87b719150963090eb2d00403d9df11684cd2d37890351ada5f4f13c8c8ac6c", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "80376b50c2980f34c096c9e03cf774a1155bfa64e0a2a9bf950dc7fd88c8c4bc", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "42650574a87a950d75bec25e30f3ea84dedddfccb28c1ec189970c221c0df817", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "ad6338170c71c67cd1b6b43289798e90af93274c5be6c7297f26b30b6ccc54e2", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "2e91a8bb465c735156b069d16de97d814ee8a2c7bbfe90f7283f07049c59ef46", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "24e8d545bf0c83798e57aa0e5ffbfc8faaafb5067ca7e9cd8f1070da41316a9e", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e6a710a2aacc8e586e939b3bf8856280e2579ed59fc9ef6c6cd18b17e8306b9d", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "ab367ea9347daf8e57bf5e9fe8bae9c360c3980ac31eb15a20de53c12ebdd126", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "57caae64b1524fa6e87b258cbe1f2371c3189937f35b4f32529aaf99a1f3f55e", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "d9aa2de3287e753b04517c7663d2af2ecca82bf93f4eb45bbf951775692810b1", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b2564771f11210fa9e8b8e112aa4404f9e14dbcef8b49a14316f5c5452bdd045", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5b9831bf338022786607e403ac32d12cad57733716f7cee93f37ed3ebf37afc5", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9887d87d8684b2c9028ce379d9d402420cc1911a633d4f485941a3de6a07c621", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "44dff629846f52d0fb0c44c98d3d82a6bd3eb71985373d79da07c4fe25711d88", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "ec99e2693d5d84bd3b9770b7e62c611c83d14f85ecaa5fec369f2dbc4ffc3a22", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "524a9d4ab0406cce8c7c8165c8eef706656bd44de6f5bf29124db6a98b33c612", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "8664c38ef71ce627dd11efb64b0df244ef9da0932f806bbfd284ad7687e8a72c", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4897dc73849f7e7787de0a5f2dce4973bff127c173a09cd054bdbf68c3f02ece", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "0ba810277887b2c7b1821c8eef4f483c143bb1448ef71a34d0474c6a0afedc7d", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "09b60fa7a047497229eee817684881c85d3360e710b1b917d0d288ae12aa3459", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "5ea99d554e0b5805ab583635badeb1bd5db23df5e5faa38678a48a53acc3c52c", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "738869b0bcf44b9d4d72211293097e1235bde971dcb6b1bed4f4cfeddb4a4fa3", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "a6329ab4dc42acb9f7e440ecef446c9992d8c588862e469ac38a5f59a2c65884", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "43abb883196a14a72a008419ea0f921fb6a914dd8cc87e77d43dc00f38ef9540", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "53c69f1b612db74ebefa551cb50ca59a301b84a255e1bf79044726fce3b9c695", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "c8b3d2dc9b42c0a95507484a48872bcd31b22bdf078389fc4cbf2e3ce57cf630", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "e17ddfe3512edde12103cb8029ec242bed40103b0f26fbf961061a6300f82bde", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "1e983da3fbe7ce90163312f6b6459d3043b47ea32153c09c03a450bc38178d8d", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "8f9e8f10c47b171bb2fe0be9e8eb8e3fd231d45a18e4bc5a4a876cb5fb03793c", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "9654e3167bbda9ff44365f90ee9d42583b473240dce27fa3dfa2976ca4fff8a1", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "3b2f7c6d34b8c18317319e5b8844515f0e1e2c9ed46f0cfb8985760aa1a59de8", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "357dd981b6b9cb4bde23e9991bd430ffd63cfe31749d97751f2c3f0575ecb5f1", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "316d6fee2b77f92814bde333aa85523c7e8049669d7b224ce4788459317d1604", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "16a725ffa812eb64ca6c5ef5e31ae64538cfaa20112d3edf4fca1fb02fa2655a", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "7557b1cd54311020fd967143f69e259c5a915eb3f6b30f8e463132da90a46315", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ae11b158580d5bf7b16569923dce63380c9a5f32d073b29d2e9c3ae348a55ff8", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "658d6a4cbf09f305c1e8830b8464cda8d3f72896b5796522571cdc6a34c1b818", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "32e6d73d963f7d9012d7ecbeea33d4ecd80c2e2d1947b2cdcd1524cf20212cc7", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "93eeb08b19927ef368fb7002eba179b6eacdf816e620866ad00128c60b79f722", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "b50b4bef5695edbae422ffd96c4d544857440424b243a5362cd2d26226d86fb5", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "23ccb66429760c0202215169cb41f57423de56470c6e8aba0fb6290d57df064a", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "a4d68a3c67736d80a439a78713c27872768a26498b750daf18dd5cb805d436a3", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "7fbdef930fd714d565b61f001e51a4b29920515df4f0f7d5ae97f09629ef37ae", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "c283ff73e852ce8aaad4fa2c48057c0cca222e38defb889d5ac20bd277c5c97f", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "78612d37f00927d13df75bc1379c8ec6fa59593fe5d3e40c6883574280a3577a", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "7b92d4ca4f4605b86633af82882c40a6b4177103e804db954f9bfdda454817ab", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "d33b778dd6396f6289fb074b06431f798133b9ae18dc220a9e6fec39b34a62b0", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "30623db2e35594cac28e6897af7caace59f840daae9572e5a671abf4089f4d13", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "201ad0c9e6b74461b2be186583832afe60624a34a811499666792d2e712fb9b8", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "de0e2936a3a093259b0ff5b6a4bdf3879cc6d1434df00116b2460b26e012563e", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "0b2d55ccbcfd78972e080b6a72d16ed000207c796ac7d81e8f2dc7ce6f5a7048", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "6545aafb0f5ec3f7703a5006995b4aa1dd7f70f54113ff871f19da13baaaa1c1", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "2d7f30fdc029ddeeccc405ee7314ac0eb04b3be71593ee2d4e1adc174c483ca5", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f4e95cb91b71f9bbc64749ec062d944fabf4e59d44753b7c4f71755f5e37cf88", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "b610b5c902ee60ad14c76f81bcb9144ac20806b63856054e9efd4ef36c5755fd", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "255fb82c371edfa0c8a0b93751f9994784913afa12d6cc85b99a26eaab12874b", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "7a42704bc017c3128894f0016c5ab110edecc243ddebfc8beb0f48ff3befdd0a", +"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "da57711b9f55bf97f7bee8f734a8fdd5e02563046fa911e40014b0f42456450a", +"TT_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "18272296d219ce2f54f30820936a29d698bd7a26890336c9a326c30007a43e3f", +"TT_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "a9b53f23f657a00cc215987ee1289c6a86225602012ed33fe12ecb7421a960cf", +"TT_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "214f0ab5a2c67891e91e89ef71668fa89c0b58dd367cc5fc076ac9e1810ac344", +"TT_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a2ab7d0bdac04efcab422955495d6e4f542e5c0d7770d712bf11b41e75ecb1b7", +"TT_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "1621736102d9ef3197b8593978875905b3978dd355937657e33af5c1054b02ac", +"TT_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "9fa8e800aa31d45e37da86169d03a19dd0ef6954473a7f4ebb3d3d339d4bbc4b", +"TT_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "a8357c843abe1124dacde751c70313f57ae0b46e6dd2dbf91c5f3027484822a5", +"TT_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "da742ffb1db1bb3430f6ea64f9d50813d41b15762969ffa4172d48ed62f0aa29", +"TT_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "e16b547bc1bcb9e11c8785fdc98514a54d53c2b2226e0778cd4b59146ba6ecb8", +"TT_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "4d4a0d45419529aaeadf4cf7ee391f26d15acf586b7f11212ff1a7a0b09c389b", +"TT_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "34490052e6eee68a9e9c732686461a4fe7f956691feae677f31df6d9054be475", +"TT_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "353c7dfdeef8d68454e8b9026212b52fb761864b4c5ddefa17ea973cd0e73e7a", +"TT_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a23d222bbd77d3b199bf73f6c60f5bfae48a45a913b62579e6934df142ff5a4e", +"TT_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "3c3146d203c179bacb4d389330a6b29077359e53e6ae72f443e5efef3d841cc5", +"TT_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "f3bada923b206539ad960d369d3a28fdd0500d106ea079714f41add5be37543b", +"TT_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "9d53cf2c0aa7cd569e613edb9cc710a366e7f152264cf24042009cfa65f83452", +"TT_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "06c44f296124b25d22690d9a8dc5f8ac7421db139dfce0dd2e2f87762e65198b", +"TT_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2ae8078b3f39e1f930a1a7c0750d863a8ae9edfad2bdf32b57d63b729fb7fb1c", +"TT_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "be46f409ac67fbc359df19ad6d188ab31062f7d89b94011e1788fd4d5893640b", +"TT_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "a7172a64a86555942540d9eef80042a3051d4c58e1f8cf7a39e9c99987830e27", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "84e2e99c4c0dbba1f2e44a2f833742dc37f88013972c8ffd0d02673660eb694f", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "a3de7fcd5cad8c5e4b4316fedde7dc7862eb89ca2f2a8d1a9ba8fb50a068342c", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d75e62e491d87be5d1317e51241431bc71b5a24da21eeb31dbf5a10e929290dc", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "846e5b0c1e740f230b8670be9fdf93de80918e2c1afc43ed99d15af1d959edde", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "380dd41734316482b1c4d2e33777fe42f02829cf637c550fbcc699cc4f7bcbaf", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3d0f941c6ca7df69d6204063f171b1aedeea36e8c9c4d3c81fbd9eca75b248c0", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "e7ae941c1a5fb1a10a2e25686771d0ebc5864211966eb7741c88c7bcdb3ea6ca", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "993afda5f990300f12d8f2f318b51a3f7374f7abdbe983326e39c66f0bce0568", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "61242eeca3cd77d51fc2d9012d86e57dde6e722aa4a2df4e818f3ed679aeb430", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "d1746738380b806d193be170c8f476e21448dfa227a91f8547d05e43cda2fe5f", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6bddffc62fca2af49b98cefe7ed5aea24541bc41d0f3c242f7fb7dbd96f190f7", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "dc5de8b32a6c86fd034b46daaac0fc3ed1b813e0cefde376de0977d1ec1ece44", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "66ca24e60f8c0b6589b8af806b68308972e56087c1517289cd1c85406ad1aa4f", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "adc5c6dda829f19ad14a79547779472d5dd72c9706853aa665e8de7361433183", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e7bae062ee776b91f0e61d3b8a743a7800deb265bee722500e79ceba459729b3", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "d24cdb336b45aa5a6dc51ea70414b38ed157ec007d1c3840dede56af9ef1d13e", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "4995cef741327264327241df0ae283074abdd4477d63028be16f2d216aaa8f7f", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "3383ea7a0661c2e227bcdd714e8c4b8599a70ef0677991f0d111a14eca410906", +"TT_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "fdc7d3703010dc7a5a267a3264b7604580926844aa3a3ba8b093a23e2ba7b50e", +"TT_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "b0c90ca5c5bfce6c79f10c64966d0e2287ab6e70f70ed0dd32dd7c76173baf0e", +"TT_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "12205c75d5a6066fbaf7b89d545583d69062d7169706dd2e6c9aaae6a4b71918", +"TT_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "989d9d0713f644338e5696be59848b67119851fd64e44d290a43c8cecd554a58", +"TT_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "31deca2fef5dc1d898a3f6d95c2f715f0c85d8be48a2405d596fa0b955597359", +"TT_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "cdbd1117fded4dc3efef76f723f5ca646461b86a89f741011a25a794cd016b29", +"TT_en_stellar-test_stellar.py::test_sign_tx[source_account]": "641f0ec39c752109a6e287478d529b1e5d3d98cb4eb6b23320a8ba7d97baffba", +"TT_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "808e6873ffc198a8271244e51538a91f4a737e716bccd441e84775589ad75138", +"TT_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "ee0c8989f31e75c36a4a74f3715d5bf341366cdbd6b750da99ec1f91d7b90db4", +"TT_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "06aef40642884843baabe7e7d6b69bcd772d6f1e16f231d2c6244b6a727bd08c", +"TT_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", +"TT_en_test_autolock.py::test_apply_auto_lock_delay": "5e0bd26f44c28d337a0591106e6884b30c4b3cf24e20e6b61ea9462f3d76d38f", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0ec9ef683e3afc5a7e3ed70f19522fe85ca0d44e97ab712aeff3249a1496ea19", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "126ba1e98ad5e90a1882c4eb07a5b19403c8cfbb4c98de4b26f80933b12f5723", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "98e4ca9b025bd5537b0a303c6bab00705796801a2a3c79949578985ac547db65", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "6998e36416874ffbd08f93995c3bd372c0ec706b109c3b1689b2b2e2f7262ed1", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "7fa7f17b1b3e5f69498fbfc8dc3e5edbad5841026017c4485a2daf2d04c9c688", +"TT_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b13dc5e4d793f6b525498aa9d2abb8ee76641a89e7b8864e1f691655b01199db", +"TT_en_test_autolock.py::test_autolock_cancels_ui": "0ef959c5cfa7fb52c381fdbeb65ed1eecdd974e24f56c780fb2c747961d8e76a", +"TT_en_test_autolock.py::test_autolock_default_value": "26456e47387df96753a31089b42925fa24d29604564d9145a0a40e7eed03b04d", +"TT_en_test_autolock.py::test_autolock_ignores_getaddress": "2d1ca9c45112dad7e5bbb908baa086b02547a3e710fab8eff79551e63e19b790", +"TT_en_test_autolock.py::test_autolock_ignores_initialize": "2d1ca9c45112dad7e5bbb908baa086b02547a3e710fab8eff79551e63e19b790", +"TT_en_test_basic.py::test_device_id_different": "a2311d35eab312a51948f62e75484cb352c7794764403812a33acc9bfc89ca73", +"TT_en_test_basic.py::test_device_id_same": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_basic.py::test_features": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_basic.py::test_ping": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_busy_state.py::test_busy_expiry": "6509e7c943f2d09e3a5a7c69faee74c75b321ed1614d881d1ebdb57693c7f69a", +"TT_en_test_busy_state.py::test_busy_state": "13fce27fd795f6f622614fde678ba3f717129a27ecc6d0c2cbd389ede4a2798f", +"TT_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", +"TT_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", +"TT_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", +"TT_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", +"TT_en_test_cancel.py::test_cancel_on_paginated": "498ffee2ea02e2783466cbb993f0cd83eedd3b67afde37b5d1f713fc996c1455", +"TT_en_test_debuglink.py::test_softlock_instability": "55cb4cbeec68bd8ccee460034677cf8053f8f688d5c3559f360c38a205b34e37", +"TT_en_test_firmware_hash.py::test_firmware_hash_emu": "2a63f0bd10ba99e223f571482d4af635653bb8a3bddc1d8400777ee5519bc605", +"TT_en_test_firmware_hash.py::test_firmware_hash_hw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_language.py::test_change_language_errors": "67782b952469c260afac92bac1efc2ba9c2f342319ae95fb5e91c843da2a6e46", +"TT_en_test_language.py::test_full_language_change[cs]": "1359095f8b87e599c6fd88c15dd257c09c4afb3095d4db671e1746dfc4017604", +"TT_en_test_language.py::test_full_language_change[de]": "abeaffce66b7fea5ab1a0da9d2f0080232c7327e3161290a1644d463e230246a", +"TT_en_test_language.py::test_full_language_change[en]": "5f6cec419aad5e5658f6fda45c2cd40fa4581823e7f9f0c4199970cd179bfd4e", +"TT_en_test_language.py::test_full_language_change[es]": "356ae5852b527ee74323a933db01b64c7c9bbf2238676465265409148dc8fd09", +"TT_en_test_language.py::test_full_language_change[fr]": "3d42ad5dab06c1c42257b791c22d642fedd066c10f0f10b359d95bc1ce758e2d", +"TT_en_test_language.py::test_language_is_removed_after_wipe": "20955fc2d8ae93c616be7041440c1e86a6a92e3235b352abdf0f17d95319d600", +"TT_en_test_language.py::test_translations_renders_on_screen": "5af6cd73525ef98f4151bf97d73bd92be0866bc99406f339a4aeab95e3a95048", +"TT_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "0e2a71ac60add6bebc03645b6f4f6f19abdba56f1e55e799479b116e5a66aef6", +"TT_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", +"TT_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", +"TT_en_test_msg_applysettings.py::test_apply_homescreen_toif": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", +"TT_en_test_msg_applysettings.py::test_apply_settings": "77be3f4bc733d438bbc10a6b0ed2d413f4ba1cbafe1ccc7659d05952043f353e", +"TT_en_test_msg_applysettings.py::test_apply_settings_passphrase": "ef45d1caf6af022c3dce5a8daff55b09f46d1419475d222ac0abf666e4bb1bcb", +"TT_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "a1f6dc01500cc25bb7ad302da3e5b6040567d9245486e2ab983bc7b03a511603", +"TT_en_test_msg_applysettings.py::test_apply_settings_rotation": "4ac1c55b5f2eed836bffda4783e4bad80eff64b961b1c0a0140cec9fa6a4ba16", +"TT_en_test_msg_applysettings.py::test_experimental_features": "523f74db7f660c261507dfdd92285981869af72c9ba391c4dfedb3f06ccf40ad", +"TT_en_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_msg_applysettings.py::test_safety_checks": "b129e0ba2e3c7ac836b3bb4b0bc8ded1c922eba054b42b434d10499fc780ea2b", +"TT_en_test_msg_backup_device.py::test_backup_bip39": "3b90a1c3383b3afa2c321109e1088b2e33d976a9f75db3b013456d52c85ae5d2", +"TT_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2738a2e8fb890f7f2f5857cd9af0d3f6eac9fbf71dc299c829b1ba6a1209b712", +"TT_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "503c667f02e099102be7c9bf14e771b5e27f41eabebdf7269389c9d9b33016ae", +"TT_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "65b98eb420a3b4a5128dc686f491a55b460205db7e1e1bb2828a3d6998af5466", +"TT_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a3c26090183f9b150cd0caccfa2a4ba9833de718868777cc1e6f255ddda8a94f", +"TT_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", +"TT_en_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", +"TT_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"TT_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "1ca11dd6749f7640e421b540f77b7ad9317ff14c2279bd2f45742d5e4e9935f2", +"TT_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "db9ffa189464d1c0ba7d3ea2533306e25e6895355083066c2b6f9b19efb54406", +"TT_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "96a18ef7ba92b18fd9d6d3856f737e8b1418df79221d6750723109c90b2d5807", +"TT_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "f478a15ed2dfde070953b1f14c6054452b0ac27ef8ab5cf9c1ea233a43676a32", +"TT_en_test_msg_changepin_t2.py::test_change_failed": "1526ada2ec21dc5219ac42698a1d6a9314b11f79adf37465d226ffb37b603124", +"TT_en_test_msg_changepin_t2.py::test_change_invalid_current": "e9925836465ef35c3d5364e90780626274a92a1123451b572b9ea11a9cd2180a", +"TT_en_test_msg_changepin_t2.py::test_change_pin": "256483cab21191ee110281e9f547c3fa08968f4d49fa38896f8141f5b8eb4701", +"TT_en_test_msg_changepin_t2.py::test_remove_pin": "6a606987a97b9d50d991288f1222adf2c819846076b2014e91909c9907a0e427", +"TT_en_test_msg_changepin_t2.py::test_set_failed": "8102f364e48feb5a3bf9eca5435135ba955fca4c67b05e5fd543a662c5734d2c", +"TT_en_test_msg_changepin_t2.py::test_set_pin": "001a60864717683c3edfcfaaf36adcf54a3e7459307ae8198802280657b2a918", +"TT_en_test_msg_loaddevice.py::test_load_device_1": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", +"TT_en_test_msg_loaddevice.py::test_load_device_2": "b9c7333adbec293167ba17f4d7306422bc6d6247c22774a8b3e7b5f1d957f062", +"TT_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", +"TT_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", +"TT_en_test_msg_loaddevice.py::test_load_device_utf": "524f7b55052a2465f6d837428685fa0654ecfd2757c4d2fa2d768fd8f93a323f", +"TT_en_test_msg_ping.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"TT_en_test_msg_sd_protect.py::test_enable_disable": "0c84d283dfb6d58ab91670d858f49e4229c7f7f98232288be0442d1758f5f31d", +"TT_en_test_msg_sd_protect.py::test_refresh": "7643f69d7b680e5bae6c69be1112d1a22d396825b5f1b3a068df70efb1a738e7", +"TT_en_test_msg_sd_protect.py::test_wipe": "aead68a021aac7aa311e63617e011bdbe83889e7da8579e1247ac07751dd574b", +"TT_en_test_msg_wipedevice.py::test_autolock_not_retained": "c9df5badebf1e4b5eda48363392c539ebdad42060471414add7fef79b9278b80", +"TT_en_test_msg_wipedevice.py::test_wipe_device": "a2311d35eab312a51948f62e75484cb352c7794764403812a33acc9bfc89ca73", +"TT_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", +"TT_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", +"TT_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", +"TT_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", +"TT_en_test_pin.py::test_correct_pin": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", +"TT_en_test_pin.py::test_exponential_backoff_t2": "f1b35ee4aa7a99d52c6c75cd8a8bcb96f93b6ccc0627f5f685da9e539a317311", +"TT_en_test_pin.py::test_incorrect_pin_t2": "35ba6004f124e458c902ef581fc6f64a8e8cd6a33d655db070f7ff635613c6b0", +"TT_en_test_pin.py::test_no_protection": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_protection_levels.py::test_apply_settings": "13c0b9df0d94b5e9208019e2553541833ceabf10351ca3b21297b87876352656", +"TT_en_test_protection_levels.py::test_change_pin_t2": "acc7fcb094f27599d7b9ad84af803e509705f82a85646e5ef5b50fafcc456042", +"TT_en_test_protection_levels.py::test_get_address": "90b5ce41659d7d18ea3edb3e1c7a951fd639ea6ffb0dd9ce7ac6c7bda079a767", +"TT_en_test_protection_levels.py::test_get_entropy": "a4a8151b4145800ffe4be0d7b0ac19490dd784fcaf6bca3a58dd92085708368c", +"TT_en_test_protection_levels.py::test_get_public_key": "90b5ce41659d7d18ea3edb3e1c7a951fd639ea6ffb0dd9ce7ac6c7bda079a767", +"TT_en_test_protection_levels.py::test_initialize": "81043463fed15a2f74e441afe7f4876133ca6721bb2e08faca4b10053dd72e83", +"TT_en_test_protection_levels.py::test_passphrase_cached": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", +"TT_en_test_protection_levels.py::test_passphrase_reporting[False]": "6b2b5aa5a41031a8eeb980d0f53dfdf31c045b8b22c51fbc9d361b2b4fe132cd", +"TT_en_test_protection_levels.py::test_passphrase_reporting[True]": "adc28ee6969d9c6644e7769598ee761ee4a6f8bf8bca2453875042018d8af4cb", +"TT_en_test_protection_levels.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"TT_en_test_protection_levels.py::test_sign_message": "9bac92f0f3d6e160a8ebebe972b8cfa69bcb39ec4c8df57967cdbcf22cd4b37d", +"TT_en_test_protection_levels.py::test_signtx": "66d6126817dfb2df7a08b2deef7dd18a07763400f4d88c4776571cd7a8fc4554", +"TT_en_test_protection_levels.py::test_unlocked": "4488e2b6f06fdff05749ac271d080182f1c95645de37898457ff12f0fb190381", +"TT_en_test_protection_levels.py::test_verify_message_t2": "cc09f0acf9e48b1355dae0be65a2a97abbe2811808feee08d46ae7146ce6bb6f", +"TT_en_test_protection_levels.py::test_wipe_device": "7ff017de646b7cf70832605e1750c635d0eb661d51534b56007b49e82b927011", +"TT_en_test_sdcard.py::test_sd_format": "83d0d9b4eab3bf0eafc22d7d95e8b70bce477ba9c8b4ba13eeca9380ad5fdafa", +"TT_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", +"TT_en_test_sdcard.py::test_sd_protect_unlock": "1302f9a0835cac621142a17031d2150553e676261a3eeeefd32fcf1e69c7bd1a", +"TT_en_test_session.py::test_cannot_resume_ended_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_session.py::test_clear_session": "96f21e6a6c73c121c41c3228ec7c50937defbde875dbdf0915795366132207e7", +"TT_en_test_session.py::test_derive_cardano_empty_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_session.py::test_derive_cardano_running_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_session.py::test_end_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_session.py::test_end_session_only_current": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_session.py::test_session_recycling": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", +"TT_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "f39549678b9631de2991711e728ff7a703ab80be965d794b40c69c0010ede943", +"TT_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "74ca896a0493ee40b4e3a709f4cf1ad1d5e80dcccf7229de09fe1a3e40fdc615", +"TT_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "f7e9a2550ae7c57cefb0e2a13c62a1ead48fcbd86328d372ec7b54b26d51101a", +"TT_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "f6d22736654a397b99e7ed4700b88235953bf7b11a293b0fa975f8225dfbb07d", +"TT_en_test_session_id_and_passphrase.py::test_multiple_sessions": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"TT_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "671a366a006193926c0af0d7a84f0feba09a220bca32fbc609b17ac431f6f79a", +"TT_en_test_session_id_and_passphrase.py::test_passphrase_length": "c4c9e8c395f99b21e7de2216154a18af726beca5b82a09e689b35d02b6d14eb8", +"TT_en_test_session_id_and_passphrase.py::test_passphrase_missing": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", +"TT_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "b95cba09bd47cb9ac2df7272a1ae1e7a6d3ff3b345ad40ac3d139d99637c1ed8", +"TT_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5de5cbe74fe51d694ff926523f318ea3ad93f98bc5bbb13519e76c2f2c5cea43", +"TT_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9b2d4b75a4c96cc3ab52056d4b4bc83a38d948bb35aaf422829b05c43ac0cf14", +"TT_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "e956201e6a960c53fee449e29be2a3094d10bfd7ea3956b0c356aebc90891f60", +"TT_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b8006f9f20dbe6b437522702ea1068b15b3320909f8d6d86eed47c700b4d9bed", +"TT_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "f911f2fcc0813237d78c7c59a4237058aec8f8066116703ed4402b70ae802569", +"TT_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "f686330e653bbe1d12bd05b896a9f6fd60b10f9ec1bb2e56cfd8de5e9b7f2941", +"TT_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"TT_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "842b1dba8dedf7ee6a2c6ce15305dda05b249d7a1cd4ad2854a4a2dead2657d4", +"TT_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "2c89c52a396e7aa8aee9b5216307b8aa89fd613d2734cbcad6200f95a614b418", +"TT_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "c755c8ab6ac30e0e6b5e74b820ab2fe8dc2651da9f28d82206c50a1b12002d57", +"TT_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "dab7d08e722611f6df10c65cf899eb5fd2d7c581b9782b20f915061bf3621a59", +"TT_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "9e50c84010c632d4f77cf6986589d02b20612e0750330d7698747648186ee2f1", +"TT_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "c96aa7c1a89ea02258c3de675fce069ca711a373e0da6f4243df2bfad4dc99fa", +"TT_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "872dec677716e31c8a273cbc2fb0b378721f62c8520cc3e58c66424230c6f113", +"TT_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "a8584c502480d28e3cc5ff93f62f46430bd78103b4d2530130e1b84e8912a6d7", +"TT_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "37e2bb21c01ac37d2766602293139c1068fb2fa1529e47447b19800e707e1fd2", +"TT_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "9d4e51b1baf7958ccbce3fd950f56d39b235da4d1428889fa0bdbb9300b781ec", +"TT_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "dfebebe52bd943dbb719062355b7ac38729cc95339a49b795a34fa900419c4ee", +"TT_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "f51e94cc8df4063ceab5fe431c9a53544533d809a6cf43e5beb4b5c2471d44aa", +"TT_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "3e23b6eb2ee4d4ae726eee3105dcf06d2914f6dfced39231496ea4c181ecd7ee", +"TT_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "011aaa0232bfe00f8df11afc2de1c00d01323624e9f4483895965d125e23d971", +"TT_en_webauthn-test_msg_webauthn.py::test_add_remove": "7a5407948b99a424d913a27023920eb5deb2b06cba1b78271c8ff6c69b56b85b", +"TT_en_webauthn-test_u2f_counter.py::test_u2f_counter": "87f09bc2e7d3160ea1ffa7f340ed8513ec64b8bbb64e884e82f80fbb07899e1e", +"TT_en_zcash-test_sign_tx.py::test_external_presigned": "58ca129cf30e1cfb9a4b393967b859094cf7b7a3095bb1962f9199b52fac8245", +"TT_en_zcash-test_sign_tx.py::test_one_two": "761e56a0674e522af18cdcfc9cdbd398a7f82f9454eb8bebaf076155336f28f7", +"TT_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"TT_en_zcash-test_sign_tx.py::test_send_to_multisig": "d408c807422deac11166c3b232208951b4751fc34b3c85a71d2794a42efe0e5d", +"TT_en_zcash-test_sign_tx.py::test_spend_multisig": "05e12d33ff11d7d149711105573b25378e819f89bdaf5571d502c77cf50951a5", +"TT_en_zcash-test_sign_tx.py::test_spend_v4_input": "f780cbed9d8d015ba1872dc35db94fb5b311b179f5a2a4dff057529aaea7b0c3", +"TT_en_zcash-test_sign_tx.py::test_spend_v5_input": "ba41b7d7c77c4ef9ce5b8e50d749241d0633ccdc22aad8d9491d74a01930add8", +"TT_en_zcash-test_sign_tx.py::test_unified_address": "895eca0e5eca607eaf3733956c57daf7e9fd579ccd87b187b12938b76aaa4f20", +"TT_en_zcash-test_sign_tx.py::test_version_group_id_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "TT_eos-test_get_public_key.py::test_eos_get_public_key": "6664c46f17816199cd89e6acb7e49233e66800ac6ba1993aac79157378de8476", "TT_eos-test_signtx.py::test_eos_signtx_buyram": "714d9260fd979223e6a7193d8ff6f984b742f6c55fc0a5b021fa7ebf8b729186", "TT_eos-test_signtx.py::test_eos_signtx_buyrambytes": "1499ef6a40023ee5fcf9b8e514bdbea5668d6acc5af84eb37c95dd0a3272f344", @@ -2965,573 +11930,2802 @@ "TT_eos-test_signtx.py::test_eos_signtx_updateauth": "ac173799bcd8d981f778e273f3a6ea092677d7b733b8ff97f301e77b8b1eb647", "TT_eos-test_signtx.py::test_eos_signtx_vote": "c73e5ac4bdc2fedef12bae697b76b7e2fced28ce9c11d2cb3d98df9488d03bf9", "TT_eos-test_signtx.py::test_eos_signtx_vote_proxy": "fa511b4c78e1d926cbebdeb010b3c71ff4c3d3adb8558a4439e1d4506214d418", -"TT_ethereum-test_definitions.py::test_builtin": "c0da4f04e898db54461b5e8a5f29fc16b91f2c5f620d1dee2e19611a4400cd0f", -"TT_ethereum-test_definitions.py::test_builtin_token": "94ecde61300f6f5257ebdcb3b62cc7f901c32108497878c1e9ef9104506a5f62", -"TT_ethereum-test_definitions.py::test_chain_id_allowed": "6370b3457fba40de0120fbb1bfc6554ff76e6f50f86a8e91f45d96ea4209c5ed", -"TT_ethereum-test_definitions.py::test_chain_id_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_external_chain_token_mismatch": "aa3663738e87a951416eb07a96373cdab9e1dc78b4a81d38c90cce4a2c47e27e", -"TT_ethereum-test_definitions.py::test_external_chain_token_ok": "af0d29cc411fe6a4f8b9840250c2435f85b29962e2a8929ce18fcba36674fc4e", -"TT_ethereum-test_definitions.py::test_external_chain_without_token": "8340e2f269d4a0a96c7bb0d9b25aff90241e24db218633d8711223b738ab130d", -"TT_ethereum-test_definitions.py::test_external_token": "179f43de25b6a293ff255b4f9e1d09d78df1a928319d9b5789931b7bb7371a61", -"TT_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "13438d0a9bb21b8d891792bdd119265ec2956c046ecb047be746c20a45872b8a", -"TT_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "cfd045d3ffa9ea1d1622ff50c546cda1f7678e25540c02b23ac3dae4d1a0dbc3", -"TT_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3f0c9e28779aa87144907f416b2871a19988c36592594b8592c99a989096393e", -"TT_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "433d26ebebf355ffc86eac6d8146447790b1f4d8bd34121b3a631a8dbc30e74b", -"TT_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_slip44_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions.py::test_slip44_external": "1be87dc3c1f639d9e0507bcd3836f2d8e36ceafb0500fc0c78e74b70541c82e7", -"TT_ethereum-test_definitions.py::test_slip44_external_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_bad_prefix": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_bad_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_bad_type": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_malformed_protobuf": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_mangled_payload": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_mangled_signature": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_missing_signature": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_not_enough_signatures": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_outdated": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_short_message": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_trailing_garbage": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_definitions_bad.py::test_trimmed_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_getaddress.py::test_getaddress[ETC]": "dae2d0e17fc633e281c0cdf96663346e2fdc148899cfdc34ebe8143383864d19", -"TT_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d5963af13b1a053428be488a3475b3e5b25634292f27fbe1e81263cf9edbae79", -"TT_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "8b6d747f11a1bd32b00a92385bed4d638718e733e80ee9f145b0a9fb0d214589", -"TT_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "3aa63c89a2693aa70258f3a46d9aad78d5926a8af63d6aebbc37a2644cbd80ef", -"TT_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "2a03d5555eebb9b3cc7e78e0bf79d5c8b3ff991c1afb5db5078fb8f2ec486fd4", -"TT_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cc46d5ffd339b76744cc822e950b4f9252b993316f36fa04a6fd371424c8dff4", -"TT_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "2737bbf908acddc26c12e3e32e2d25ba2f8af28020cefadc0dea035491cfbfb8", -"TT_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6356dd6ec5475397ac62d4345195d3b9f91e0cdbcace6c9fd2067a1ef31fb44c", -"TT_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "49746bdc089d8ffa036cdd209a0d99f6fe669d2397ce5a88bf30cbadfb0b5174", -"TT_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "2e8db4c9cc0879db9a4339556c88118009b919bb5923f93c891f65870974fb17", -"TT_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "5259d154279b4007f26e44e931550d2e1750bc09be98478d845da9cd30dcd03e", -"TT_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "0d38df9e7553ab93ea60c080b5ab8a42b3809c637a4257d13db300805553bbe8", -"TT_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"TT_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"TT_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"TT_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"TT_ethereum-test_getpublickey.py::test_slip25_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "41d9d8d526f10973fe9636e202096c2b3db1a1556618887cdd0c4388f77e8d6e", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "dadfc5ccfcea0e9e15dea51be808e83fc7f1e63dc51c99cf82bc2c35e25b03ed", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "2b0c138165ce995f2004113a957b1e85126ae4137ac91b91c33e9fabd5e937a7", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "a932390009168ca238432b5e837cc500b75393636d7f2a4efcb0576464318a0a", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "917f177bd6eb6f2c7b91b552edf84b13f73583c61eae48bfba25b966076c4750", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "03e8d512bcbe056151733e02bf5b671d2bf708479db6a3be54d5ef8a66bef61c", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "2b0c138165ce995f2004113a957b1e85126ae4137ac91b91c33e9fabd5e937a7", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "2b0c138165ce995f2004113a957b1e85126ae4137ac91b91c33e9fabd5e937a7", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "2b0c138165ce995f2004113a957b1e85126ae4137ac91b91c33e9fabd5e937a7", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "946b7e16c07550e996a7b550f4936c93e0f305539e44c6d0a1f8d6e2b8a54ce9", -"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "ca335555219c02ab3bf829c018e893ed3227792043d996459aa9d6a96b0c9d61", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "80c45e65c861c1668f272398c4a790cc9dd0613aace21bfe554c9a685e2eae8f", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "c6f492dc624460c76c78d367d8ee22e1f24f6627db61eb8dfafdc2c90e5477ce", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "dba56b7e5def913c477a5a4cd56976f17316a53856a1c4e6a5981d8d7972464b", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "3e4a965130a869c772ce2334b2fd1a789efc382dee4527f7eb4244af39de1a72", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "b55f2aa360c610e470b1af6becff9a69e49d56476b51dcc61de43cf4a24f599f", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6c710f6210556bf2ded8a6027776280ec23b8724eebd99cb4332552d260a4c59", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "2d8d1acf5e6a4010cdb9feb342e10f627fd64586e49ad8ea57d422a3fc148ce3", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5db2cdd9461ef667c339619a42fce89a7e46c7ae576d83712efebbae8cd4ed09", -"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "985b867aeda08c981c8c610e94f454c8529fc4d14c9cb01881499784c5a4b6c1", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "cbea228b1a6582289d57b5ef0017e9b52dbaf1817078039590c9beebe5ba6344", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "1b201dbdd316979addaf42877f194481d2cc969e2620268e717c441a31c112e0", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "f612aed993f77906c8990d645a9bd4abfb30d57989121ba2e10cfd157a811983", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "5c9607cef8d99d24c5a3b1554369a15391bc58ca90a815cb37689c8f05f48dc6", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "46148fc0e4ddad92ddf4986b72f557c4316ff6a5d386b12a284a90d0bee46820", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "b7e5ac80950f2afcd1db8dca4d37236ab434e810c4e5b4b69f97bb073f14d505", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c175ff9348c8bfbdffed2809f7b8f158ed1e7896abc19b6191245ceca01d594f", -"TT_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "69f815f79ed5dfd60f009bbe3024d7e910fe37ee32377c955ee29b569fd4f58d", -"TT_ethereum-test_sign_verify_message.py::test_verify_invalid": "cbea228b1a6582289d57b5ef0017e9b52dbaf1817078039590c9beebe5ba6344", -"TT_ethereum-test_signtx.py::test_data_streaming": "9a89cb6f1a61c69a35a7c5f53239d5ffce3ff7bc07a2a08f67266ebd753de3f7", -"TT_ethereum-test_signtx.py::test_sanity_checks": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_signtx.py::test_sanity_checks_eip1559": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[False-ETC]": "70f61cbd4bbed46fadcdb3405b47ea23129026bfd99eb209ed8c5c2c3a03dc12", -"TT_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", -"TT_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "88fa5319d82eda664c0e33f665aef10d782d6df42cff31bda8e170239013170a", -"TT_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", -"TT_ethereum-test_signtx.py::test_signtx[False-Palm]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", -"TT_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", -"TT_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", -"TT_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "fa47e3639c860f5865382e2b4ba55d833989b6a0f41ed81fa1066a57105f8c59", -"TT_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", -"TT_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"TT_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", -"TT_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"TT_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "2f22d59bffb56e1cf2ba2353a6cd6c96cf5d04c95eec1b7d25bf223077008772", -"TT_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3ad938f73145a9eae5303218fe98f832e98e4d94e525d6f3bfdbdcb698549657", -"TT_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"TT_ethereum-test_signtx.py::test_signtx[True-ETC]": "0ef31079e8df1fa01e872a2fac2daa28b1df648bad515a69d9c6014951119308", -"TT_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", -"TT_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1399e2245a8348e03f95dd1a439df497c13a74fbb7e60b31b909c243c1bdbb4e", -"TT_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", -"TT_ethereum-test_signtx.py::test_signtx[True-Palm]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"TT_ethereum-test_signtx.py::test_signtx[True-Pirl]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"TT_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", -"TT_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", -"TT_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"TT_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"TT_ethereum-test_signtx.py::test_signtx[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", -"TT_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "f9cf7d0ac69d056e77d5b8eea556d25357b8bbf18576fbe537cf7c480031e217", -"TT_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", -"TT_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"TT_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"TT_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"TT_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", -"TT_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", -"TT_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2cc8a86f5940e557e838c23f85c899fa5e21663ffb9ab2e5420a30c75b850b84", -"TT_ethereum-test_signtx.py::test_signtx[True-wanchain]": "76b402adf767f9f34bc237dc37ccfdc48ca1c22fffb117ae8732636965a68d4e", -"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "238aceb5cbd565e67696c8f6d73dc4573a3bee178ab66b208d85c32cf45957d6", -"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "3d6987d4440d51bb4805d8a08e6cde9f6854f90d2b064553d42c1cbaa420a53f", -"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0310349fb18c476ec82e058667d8e6bf69adc14696a3755d878e7bae3bf108fb", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "97fac4b6db7a446f53c3f1fa27ba925c1651a8831e76db7d220efbf414482139", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "997848a3ecc4f0c5ed8004867a8d5deae48e832c12d4e90bc192f28394a704fb", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e85604e8d3d7b102215e6a18d828235df540d9c32df78e1b89b988d6dd7f62e0", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "7838bcd3a0bbeeb327aa639e93ad0a938ecd3db27ae3086b5b8d7d1a2cf6970e", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "2bd40660815fee49cfb00de9b8e64040cca5b61398b9c38a136225ac50e6830c", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8fcc1f1275aa8e99062026b960451521aa894aa3c78b7d04bef368b73085e69e", -"TT_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", -"TT_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", -"TT_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", -"TT_ethereum-test_signtx.py::test_signtx_fee_info": "714e4c5f6e6b45fa3e78f74c7ee5e3332f39686f8b708a4f56232105bde0c3e4", -"TT_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8bc38a773c40a70c1eb9b91a5d02ce0a61591ce9e42bd0073bc1395f560f2490", -"TT_misc-test_cosi.py::test_cosi_different_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_misc-test_cosi.py::test_cosi_nonce": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", -"TT_misc-test_cosi.py::test_cosi_pubkey": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_misc-test_cosi.py::test_cosi_sign1": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", -"TT_misc-test_cosi.py::test_cosi_sign2": "b3086dafdda715fea319d90ee3ccab84a1728678dfa67febce1f7cc943d9e585", -"TT_misc-test_cosi.py::test_cosi_sign3": "6ea5987edda7c73d7aac080833b8574626f016233c38d068185e8cbcba46cc11", -"TT_misc-test_cosi.py::test_invalid_path[m-10018-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_misc-test_cosi.py::test_invalid_path[m-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_misc-test_cosi.py::test_slip26_paths[42-0]": "25929f2293cfef2d7fdd8859bb16d0311c5532e02cc0624a893c50be3e16182c", -"TT_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "098c3992a0cc170e8041c0b0708a658f2d438da6dd829f38c8082d75a8d43154", -"TT_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "e6366ba60e181360741bd85df2fa8fca85f4dad889d510a5e3365abe63f4d6a2", -"TT_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a78b216be479757c536da26edab8960226c6b1434012d51927b5ea461a952de8", -"TT_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e91bc6a2639778d60a1201e93fcb488714b7d38f037be31f0a41838165019a48", -"TT_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "35ff50fcb49fc802e20fd0a44a161afe0a8b2b2f2781b409a4460632e884a83a", -"TT_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "106c1900eb2e896139b514d9d0d3b4434858c6752c0b8eaca38cf7aadfbe508f", -"TT_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a2c7a9f111cf2a8fd72d06c5fcc738fab679545c891db34043eeb22d1311ac62", -"TT_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0a745253b75f0ededdec44be05e3940166128226e96ee49183fb6c97a3fccf70", -"TT_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2cbaa2088776f1c7c735aa1ef767d33f8ad8ebdb592b6d9814dd1bbabd6da9b5", -"TT_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "58a16c31957f7d540da34a30f54631e607eca1af6efb27a0b3877e49f77a9d56", -"TT_misc-test_cosi.py::test_slip26_paths[dog-0]": "7cee26436a0025a56eb1f67e432e4e707857714c1bbf5f61df60cc20f54c84ab", -"TT_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b34ae9ac7b3ea7467afe774bf615ca1e1eab26c64fe5d25178071bf15e8d6518", -"TT_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_misc-test_msg_cipherkeyvalue.py::test_encrypt": "648e45403ce412314e9d91625ace8ffdee52ff37ac99b13f4e86d018a024515d", -"TT_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1c723bac9117d59b814785b772a9e34ca9cea4af02a8e7e9969a8ab6c07d6faa", -"TT_misc-test_msg_getentropy.py::test_entropy[128]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[129]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[16]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[17]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[1]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[20]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[21]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[256]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[257]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[32]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[33]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[3]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[4]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[512]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[513]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[5]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[64]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[65]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[8]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_getentropy.py::test_entropy[9]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"TT_misc-test_msg_signidentity.py::test_sign": "641820cdb6496ddcbe402cba9b3d24bee009ed212c6c1f54a87ba158b6b05049", -"TT_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "f04af61059a8edc28122ad708eaa23a5f27441a63a87041da5bde604f3c585c4", -"TT_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "097567f203b5c8090204f894017ba1676ff3d42c42b79915960d3de701422fec", -"TT_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "d081197da687ed543a4c0bd5ecc65d720253fcc15d2975c26b251bd14ab647de", -"TT_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "0ac1a47b3ad0595e46a8aedae71446d39f1bcfa703cbe4d1681da7ea8c332a31", -"TT_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "09f056cf1613388427d5f742910d8127acd7fdfc55d44e0ab8138e7a45852784", -"TT_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "37e8936c92b8af777c1c6276a2c4cf2c556f6babf9ccc6ed03be990d065f64b8", -"TT_monero-test_getwatchkey.py::test_monero_getwatchkey": "132fcbf2f28d368ed826f8ea2bd096572fc9807c6cc9be8f6ada25847b0a0adb", -"TT_nem-test_getaddress.py::test_nem_getaddress[False]": "a7871f1b2e8d835fd40f378b1bdfcadaede0556bd5295ab174748527db53fd82", -"TT_nem-test_getaddress.py::test_nem_getaddress[True]": "f1eb22b7aee59711693245c866324c9780aacd340c54d2d99c41a69151ba267f", -"TT_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "e09e9f00fce4054bf6367777c5ec66494919e3aea5ad3ce9e1840b4c9ef1d42d", -"TT_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "b23815b032ea309dd671547e7302f53096b45c5657c20af8ff86a85781a1b1a9", -"TT_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "8350cb91369f0302b404085c133066e1d0453f1293c56264a17b95719fe5fbc0", -"TT_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "b5c574c87557ad7f3147a276994b07dfe0d50fcee3040dff2380f6ef38fc7859", -"TT_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "6e4982b564f289134ec68f9786203a432441475d4f3d935cdeb87862b709b1c0", -"TT_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "171d1ee0d2234c9efc6c06cafc7d2519eb3a2562824e4ea9f8b298da6932ab42", -"TT_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "65b4a7646e6a762fe87059b34f75730018196dccb8ae5b539471246bb4f443fa", -"TT_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "379a956ecd4e5fb029968222b2a20d341cc1487ddbf2a392c38cd73e0a7b37b8", -"TT_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "fc31c7e1a668c8c6db13cef90baf722fc1f7009b81d6314c489274718ab127b1", -"TT_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "bf8456472807daee3ada2c82e131cb58db47a6fc483dc917f9dbdd1cc2df5024", -"TT_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "b09915631506661437de4ef2bc4831054b0c2526310cb48a1f7fd60574de102a", -"TT_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "0eeb3d15ebfdd4c8d6a60d5b7e2faa19b22e812400988e29c3e68ce8758fb081", -"TT_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "8838c998cbe837aff4d6f7f63c4f5f0dcc1cadfa9aae6d6486262a7afd691ea4", -"TT_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "d3c8d6656a581e845b54fdca883496388ffa77766892fc5b4bb9e04e1e765651", -"TT_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "912291c884e71187005c2356c87c724dbd83a706bed2f28e2a6ff0226c1d9561", -"TT_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "05118d403095d355000da8245edafa6b000eae136d9b36349bcc250f93c61e82", -"TT_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "02b1d6995080b5186e200233753196c3d1a72658f96af6df546713f412ec1cfe", -"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[language-test]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "6ba7675c1d397a6978a8f8025d8a80024ee862887d4a586e139d250a7476c665", -"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "025e49a30d18066ab4d4cd73af9ca5864b74e2cba625fd56a6905fec9a7017bd", -"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "dfe87991c0ec4150084bc3453145decc3531e21b41e81202c8ca1211929309c6", -"TT_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", -"TT_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e11ced4e4950c59d52bca1045770606dd08c648f96d5b4426c36048d740e0b45", -"TT_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9d161076574c957b3708ec34771026a970b1ad90ac7bbf5b1492ded0de1f5ba4", -"TT_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "264cc069a974286064781c22c175e54bdb28000909b5dc671acfa03ab272b426", -"TT_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7d0f0cac581360c5a8b64e229171f0c6a92972adff3c3ed334c483076021a041", -"TT_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "2561ac9a4a209c181d8cf35579db0fa36f752cb628067d59d3456d64f82f93cc", -"TT_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "2c4f3600b0f26c4da64add476618ce5bb9d759d914afe89c5a75eec3cd7ebeac", -"TT_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b86d2d1c561fac4055ed1c437bcdd69d2dd7f43553af6bb5630259430983f55a", -"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9271c61c3740658029b0fe3b375377233aaad70a97d929d984f6b1a16b3c1ef7", -"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c0886a9bef6b448d193ddf032c14b614069c5f742aacdfab0d4d21c53a5dd331", -"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "4f90f47e88cca3af88975a817baa01937b21647c19d7799acea6795309bba28b", -"TT_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "143d00d4b2fa5fccd6891526f349684b4866cb111320d45b46e1115bdc4f61aa", -"TT_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d2a3afcb9f5e92f9e65172a0207a83ac372f2951fcec99fae2565a83a3a5c8fb", -"TT_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "90d768219e974a83299fb3d079d457222a331aefd2e8fa69e7b2ffca7a2ad9bd", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "73de5bb9f1528b81396ebfd321df67f773f925d6cbd7e616a58ce30eaea27ef0", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_abort": "264cc069a974286064781c22c175e54bdb28000909b5dc671acfa03ab272b426", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "59786fd2798a68e0546515ccd7ec0d7e4c3276098545615850911899953681e1", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bcab24b36d8ac28c76f6ebcf54f416024d3b32ef03862234a88d9128d1e16548", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "12ea0985454ab09cbec3d1f9e4246f0e6c098cc8ea69774ea253a473065e6938", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "66c45751002ae4d84e0ffb3a80349585604b5f19f87d08368e806ff0ac0d6cd5", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7d6b8c0008568f8a9fac9e6bb543b3b60845eb6aa5cc715efc5ed75f95aa27cb", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "443ab1ba8f9bc006865e978418b4ccdf931f88ad5c13397467cfc01ed3b3e406", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "a16d8e9838b762534c0a2d8c82c277ba81e49f018506dc26624a4a0d8cce97c6", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "35565f30ebe2dfccf5c4bd774f7cdf410688347173389b36b1f9d60d441cce96", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "9672e34c2bbd4a3825258f2239d369e4aac4b28a170b6ed9c716180ff0477ed6", -"TT_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "aea2334f29f8f4af160e238d79cac41e1b3b33feb08b71c2ab0cd867b8e8a20b", -"TT_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "5f3413af77cc76413fe1ec3e00e17850f8de504499b5bf9d753ed4d9351931e5", -"TT_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "2b866e19489d98b9924398080478e2126fe9769b057ea725e7ba795584adb1ad", -"TT_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "1d46c84c1bbc532521f33155eff9c534bf335853e4a436ab68b167ef14addac4", -"TT_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "a2ed9f143418b282b3f655aa8ecad317065d64c8ebc2b912ced8d1a3eca80d76", -"TT_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "7b169c941b361c7ceb44cf5032dbdfbb4dd3bd84cfbc3a7d93819f07cd71326f", -"TT_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d770f7b6618b03bcd9639724ad1cc3e20bb2c6ce1abdd43f13f311fde0c276dc", -"TT_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "371ea1afeb1a166a57c34bcb6d6454aa319d8eed68e301f315af82fe81833b4f", -"TT_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "b63de052adfc67d7e9d4455e495da6b714a52aeed488676c7bc17cbfb85a2631", -"TT_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "4e68c6705ca629cd19877fc3befe68c676aa014ad37d910dafdeecbf22843517", -"TT_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "4975f882e9ff5150b0e7f38109e7f83f2266fc4548756fa721bf30d67e702381", -"TT_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ff3d3f9bdd26970eca48de2b5ddfa56c3eb85e2c1d25f27a260e027b2af27a7a", -"TT_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5d2dd0fc48285d9d724958b9efe1ba615c1247ebf06328e11ea67f096b4da8e8", -"TT_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c1219269bdba6e35a988d3928a4d99799a5289fe7147127112e1ffe8931944a3", -"TT_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "bef49d3199d13e7f74302d4d0695321457e91c211057c795cadd13940d97213f", -"TT_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d0f34a8b91c7604dcf853a8b73b1ba2264f30fb4b3c1c2d9a03e36710e177043", -"TT_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "a943523f2275787db3aca5265510dd028bd87137f251025ebf3c820abff6ffa0", -"TT_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "0da1b39340ae0b521de536c4d2b477663e548bdc27ea7c4b80094acedfdb9b68", -"TT_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a5dd9435a3a99f1ea4d6bab845065f1552d447ae5692b39211ec4a7330f2520d", -"TT_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1f35326ce16fe3316dfe35a1e0fe218e22852855df9bdbc008ca519849f0cf6f", -"TT_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", -"TT_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", -"TT_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", -"TT_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5eb57d3f6b2ecee825566767d7216480b425ce5eefc691e2f4c510fc1db68b83", -"TT_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "7523f86df84554313e5139bafbed7155f1259ec4e201b4c6072d614f08d430f5", -"TT_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "58242541bf8486a102aa87376f2d9a8f2fee74c6956631501155aa5a92ef742f", -"TT_ripple-test_get_address.py::test_ripple_get_address_other": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "bc15baef3f52f919dba24b46d828b63eb5ad15dcb0660468e9e17088e1523df4", -"TT_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "c2bccb5164d6fb0a88a20b0df3b9daabce638b269d805aea3bf9afd9e38e6373", -"TT_solana-test_address.py::test_solana_get_address[parameters0-result0]": "951f076e5f1eb13f2b5465ba5b9e0561db980f4df59d83e0d817f7134f43f87d", -"TT_solana-test_address.py::test_solana_get_address[parameters1-result1]": "b1ece4eef5d822ac13244f34850444f72c372ba6839b73b8a782fe181342c396", -"TT_solana-test_address.py::test_solana_get_address[parameters2-result2]": "fd184770f3a77113c4185a56811707b67fc90eb684b4ac20e93c4ddfdff2f04a", -"TT_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8a8f3d3a22c24a4146e2f88b366fff3f64bc94b270eda1a022cfb816b56c1d41", -"TT_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "9445c0da3a53d11b071908ce1522a65e947205a869c3527409b7833560dc2e8c", -"TT_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "763ac28b88d516e205373a6eeaa64eea8327d193e86d1f66714e46e6d57bd0de", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "452b30bfdbaca370d1523334d4a4c5c335137d61aa0f88a5b241540ed3b9560b", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4ed857971174696bcdbf8bb96abcc9a79ba207d4b802bb1596523bdefaac0be4", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "3306ad130ea0a0725b5ff31b36846154574ba2c63f91805239ce3bc92eac22c9", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "bfc9c34d8aff615ec61e887cbb38967c55c33d69e8f75b7d3ac538f40dfd5a58", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8aab2a2a197ef41a044fecbdd3b2b59fc5717ae346cb6d1ea982d874451104e3", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "cf87b719150963090eb2d00403d9df11684cd2d37890351ada5f4f13c8c8ac6c", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "80376b50c2980f34c096c9e03cf774a1155bfa64e0a2a9bf950dc7fd88c8c4bc", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "42650574a87a950d75bec25e30f3ea84dedddfccb28c1ec189970c221c0df817", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "ad6338170c71c67cd1b6b43289798e90af93274c5be6c7297f26b30b6ccc54e2", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "2e91a8bb465c735156b069d16de97d814ee8a2c7bbfe90f7283f07049c59ef46", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "24e8d545bf0c83798e57aa0e5ffbfc8faaafb5067ca7e9cd8f1070da41316a9e", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e6a710a2aacc8e586e939b3bf8856280e2579ed59fc9ef6c6cd18b17e8306b9d", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "ab367ea9347daf8e57bf5e9fe8bae9c360c3980ac31eb15a20de53c12ebdd126", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "57caae64b1524fa6e87b258cbe1f2371c3189937f35b4f32529aaf99a1f3f55e", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "d9aa2de3287e753b04517c7663d2af2ecca82bf93f4eb45bbf951775692810b1", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b2564771f11210fa9e8b8e112aa4404f9e14dbcef8b49a14316f5c5452bdd045", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5b9831bf338022786607e403ac32d12cad57733716f7cee93f37ed3ebf37afc5", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9887d87d8684b2c9028ce379d9d402420cc1911a633d4f485941a3de6a07c621", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "44dff629846f52d0fb0c44c98d3d82a6bd3eb71985373d79da07c4fe25711d88", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "ec99e2693d5d84bd3b9770b7e62c611c83d14f85ecaa5fec369f2dbc4ffc3a22", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "524a9d4ab0406cce8c7c8165c8eef706656bd44de6f5bf29124db6a98b33c612", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "8664c38ef71ce627dd11efb64b0df244ef9da0932f806bbfd284ad7687e8a72c", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4897dc73849f7e7787de0a5f2dce4973bff127c173a09cd054bdbf68c3f02ece", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "0ba810277887b2c7b1821c8eef4f483c143bb1448ef71a34d0474c6a0afedc7d", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "09b60fa7a047497229eee817684881c85d3360e710b1b917d0d288ae12aa3459", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "5ea99d554e0b5805ab583635badeb1bd5db23df5e5faa38678a48a53acc3c52c", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "738869b0bcf44b9d4d72211293097e1235bde971dcb6b1bed4f4cfeddb4a4fa3", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "a6329ab4dc42acb9f7e440ecef446c9992d8c588862e469ac38a5f59a2c65884", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "43abb883196a14a72a008419ea0f921fb6a914dd8cc87e77d43dc00f38ef9540", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "53c69f1b612db74ebefa551cb50ca59a301b84a255e1bf79044726fce3b9c695", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "c8b3d2dc9b42c0a95507484a48872bcd31b22bdf078389fc4cbf2e3ce57cf630", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "e17ddfe3512edde12103cb8029ec242bed40103b0f26fbf961061a6300f82bde", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "1e983da3fbe7ce90163312f6b6459d3043b47ea32153c09c03a450bc38178d8d", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "8f9e8f10c47b171bb2fe0be9e8eb8e3fd231d45a18e4bc5a4a876cb5fb03793c", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "9654e3167bbda9ff44365f90ee9d42583b473240dce27fa3dfa2976ca4fff8a1", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "3b2f7c6d34b8c18317319e5b8844515f0e1e2c9ed46f0cfb8985760aa1a59de8", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "357dd981b6b9cb4bde23e9991bd430ffd63cfe31749d97751f2c3f0575ecb5f1", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "316d6fee2b77f92814bde333aa85523c7e8049669d7b224ce4788459317d1604", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "16a725ffa812eb64ca6c5ef5e31ae64538cfaa20112d3edf4fca1fb02fa2655a", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "7557b1cd54311020fd967143f69e259c5a915eb3f6b30f8e463132da90a46315", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ae11b158580d5bf7b16569923dce63380c9a5f32d073b29d2e9c3ae348a55ff8", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "658d6a4cbf09f305c1e8830b8464cda8d3f72896b5796522571cdc6a34c1b818", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "32e6d73d963f7d9012d7ecbeea33d4ecd80c2e2d1947b2cdcd1524cf20212cc7", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "93eeb08b19927ef368fb7002eba179b6eacdf816e620866ad00128c60b79f722", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "b50b4bef5695edbae422ffd96c4d544857440424b243a5362cd2d26226d86fb5", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "23ccb66429760c0202215169cb41f57423de56470c6e8aba0fb6290d57df064a", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "a4d68a3c67736d80a439a78713c27872768a26498b750daf18dd5cb805d436a3", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "7fbdef930fd714d565b61f001e51a4b29920515df4f0f7d5ae97f09629ef37ae", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "c283ff73e852ce8aaad4fa2c48057c0cca222e38defb889d5ac20bd277c5c97f", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[split]": "78612d37f00927d13df75bc1379c8ec6fa59593fe5d3e40c6883574280a3577a", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "7b92d4ca4f4605b86633af82882c40a6b4177103e804db954f9bfdda454817ab", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "d33b778dd6396f6289fb074b06431f798133b9ae18dc220a9e6fec39b34a62b0", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "30623db2e35594cac28e6897af7caace59f840daae9572e5a671abf4089f4d13", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "201ad0c9e6b74461b2be186583832afe60624a34a811499666792d2e712fb9b8", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "de0e2936a3a093259b0ff5b6a4bdf3879cc6d1434df00116b2460b26e012563e", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "0b2d55ccbcfd78972e080b6a72d16ed000207c796ac7d81e8f2dc7ce6f5a7048", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "6545aafb0f5ec3f7703a5006995b4aa1dd7f70f54113ff871f19da13baaaa1c1", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "2d7f30fdc029ddeeccc405ee7314ac0eb04b3be71593ee2d4e1adc174c483ca5", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f4e95cb91b71f9bbc64749ec062d944fabf4e59d44753b7c4f71755f5e37cf88", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "b610b5c902ee60ad14c76f81bcb9144ac20806b63856054e9efd4ef36c5755fd", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "255fb82c371edfa0c8a0b93751f9994784913afa12d6cc85b99a26eaab12874b", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "7a42704bc017c3128894f0016c5ab110edecc243ddebfc8beb0f48ff3befdd0a", -"TT_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "da57711b9f55bf97f7bee8f734a8fdd5e02563046fa911e40014b0f42456450a", -"TT_stellar-test_stellar.py::test_get_address[parameters0-result0]": "18272296d219ce2f54f30820936a29d698bd7a26890336c9a326c30007a43e3f", -"TT_stellar-test_stellar.py::test_get_address[parameters1-result1]": "a9b53f23f657a00cc215987ee1289c6a86225602012ed33fe12ecb7421a960cf", -"TT_stellar-test_stellar.py::test_get_address[parameters2-result2]": "214f0ab5a2c67891e91e89ef71668fa89c0b58dd367cc5fc076ac9e1810ac344", -"TT_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a2ab7d0bdac04efcab422955495d6e4f542e5c0d7770d712bf11b41e75ecb1b7", -"TT_stellar-test_stellar.py::test_get_address[parameters4-result4]": "1621736102d9ef3197b8593978875905b3978dd355937657e33af5c1054b02ac", -"TT_stellar-test_stellar.py::test_get_address[parameters5-result5]": "9fa8e800aa31d45e37da86169d03a19dd0ef6954473a7f4ebb3d3d339d4bbc4b", -"TT_stellar-test_stellar.py::test_get_address[parameters6-result6]": "a8357c843abe1124dacde751c70313f57ae0b46e6dd2dbf91c5f3027484822a5", -"TT_stellar-test_stellar.py::test_get_address[parameters7-result7]": "da742ffb1db1bb3430f6ea64f9d50813d41b15762969ffa4172d48ed62f0aa29", -"TT_stellar-test_stellar.py::test_get_address[parameters8-result8]": "e16b547bc1bcb9e11c8785fdc98514a54d53c2b2226e0778cd4b59146ba6ecb8", -"TT_stellar-test_stellar.py::test_get_address[parameters9-result9]": "4d4a0d45419529aaeadf4cf7ee391f26d15acf586b7f11212ff1a7a0b09c389b", -"TT_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "34490052e6eee68a9e9c732686461a4fe7f956691feae677f31df6d9054be475", -"TT_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "353c7dfdeef8d68454e8b9026212b52fb761864b4c5ddefa17ea973cd0e73e7a", -"TT_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a23d222bbd77d3b199bf73f6c60f5bfae48a45a913b62579e6934df142ff5a4e", -"TT_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "3c3146d203c179bacb4d389330a6b29077359e53e6ae72f443e5efef3d841cc5", -"TT_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "f3bada923b206539ad960d369d3a28fdd0500d106ea079714f41add5be37543b", -"TT_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "9d53cf2c0aa7cd569e613edb9cc710a366e7f152264cf24042009cfa65f83452", -"TT_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "06c44f296124b25d22690d9a8dc5f8ac7421db139dfce0dd2e2f87762e65198b", -"TT_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2ae8078b3f39e1f930a1a7c0750d863a8ae9edfad2bdf32b57d63b729fb7fb1c", -"TT_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "be46f409ac67fbc359df19ad6d188ab31062f7d89b94011e1788fd4d5893640b", -"TT_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "a7172a64a86555942540d9eef80042a3051d4c58e1f8cf7a39e9c99987830e27", -"TT_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "84e2e99c4c0dbba1f2e44a2f833742dc37f88013972c8ffd0d02673660eb694f", -"TT_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "a3de7fcd5cad8c5e4b4316fedde7dc7862eb89ca2f2a8d1a9ba8fb50a068342c", -"TT_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d75e62e491d87be5d1317e51241431bc71b5a24da21eeb31dbf5a10e929290dc", -"TT_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "846e5b0c1e740f230b8670be9fdf93de80918e2c1afc43ed99d15af1d959edde", -"TT_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "380dd41734316482b1c4d2e33777fe42f02829cf637c550fbcc699cc4f7bcbaf", -"TT_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3d0f941c6ca7df69d6204063f171b1aedeea36e8c9c4d3c81fbd9eca75b248c0", -"TT_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "e7ae941c1a5fb1a10a2e25686771d0ebc5864211966eb7741c88c7bcdb3ea6ca", -"TT_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "993afda5f990300f12d8f2f318b51a3f7374f7abdbe983326e39c66f0bce0568", -"TT_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "61242eeca3cd77d51fc2d9012d86e57dde6e722aa4a2df4e818f3ed679aeb430", -"TT_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "d1746738380b806d193be170c8f476e21448dfa227a91f8547d05e43cda2fe5f", -"TT_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6bddffc62fca2af49b98cefe7ed5aea24541bc41d0f3c242f7fb7dbd96f190f7", -"TT_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "dc5de8b32a6c86fd034b46daaac0fc3ed1b813e0cefde376de0977d1ec1ece44", -"TT_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "66ca24e60f8c0b6589b8af806b68308972e56087c1517289cd1c85406ad1aa4f", -"TT_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "adc5c6dda829f19ad14a79547779472d5dd72c9706853aa665e8de7361433183", -"TT_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e7bae062ee776b91f0e61d3b8a743a7800deb265bee722500e79ceba459729b3", -"TT_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "d24cdb336b45aa5a6dc51ea70414b38ed157ec007d1c3840dede56af9ef1d13e", -"TT_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", -"TT_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "4995cef741327264327241df0ae283074abdd4477d63028be16f2d216aaa8f7f", -"TT_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "3383ea7a0661c2e227bcdd714e8c4b8599a70ef0677991f0d111a14eca410906", -"TT_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "fdc7d3703010dc7a5a267a3264b7604580926844aa3a3ba8b093a23e2ba7b50e", -"TT_stellar-test_stellar.py::test_sign_tx[memo_hash]": "b0c90ca5c5bfce6c79f10c64966d0e2287ab6e70f70ed0dd32dd7c76173baf0e", -"TT_stellar-test_stellar.py::test_sign_tx[memo_id]": "12205c75d5a6066fbaf7b89d545583d69062d7169706dd2e6c9aaae6a4b71918", -"TT_stellar-test_stellar.py::test_sign_tx[memo_return]": "989d9d0713f644338e5696be59848b67119851fd64e44d290a43c8cecd554a58", -"TT_stellar-test_stellar.py::test_sign_tx[memo_text]": "31deca2fef5dc1d898a3f6d95c2f715f0c85d8be48a2405d596fa0b955597359", -"TT_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "cdbd1117fded4dc3efef76f723f5ca646461b86a89f741011a25a794cd016b29", -"TT_stellar-test_stellar.py::test_sign_tx[source_account]": "641f0ec39c752109a6e287478d529b1e5d3d98cb4eb6b23320a8ba7d97baffba", -"TT_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "808e6873ffc198a8271244e51538a91f4a737e716bccd441e84775589ad75138", -"TT_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "ee0c8989f31e75c36a4a74f3715d5bf341366cdbd6b750da99ec1f91d7b90db4", -"TT_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "06aef40642884843baabe7e7d6b69bcd772d6f1e16f231d2c6244b6a727bd08c", -"TT_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", -"TT_test_autolock.py::test_apply_auto_lock_delay": "5e0bd26f44c28d337a0591106e6884b30c4b3cf24e20e6b61ea9462f3d76d38f", -"TT_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"TT_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"TT_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"TT_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"TT_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"TT_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0ec9ef683e3afc5a7e3ed70f19522fe85ca0d44e97ab712aeff3249a1496ea19", -"TT_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "126ba1e98ad5e90a1882c4eb07a5b19403c8cfbb4c98de4b26f80933b12f5723", -"TT_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "98e4ca9b025bd5537b0a303c6bab00705796801a2a3c79949578985ac547db65", -"TT_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "6998e36416874ffbd08f93995c3bd372c0ec706b109c3b1689b2b2e2f7262ed1", -"TT_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "7fa7f17b1b3e5f69498fbfc8dc3e5edbad5841026017c4485a2daf2d04c9c688", -"TT_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b13dc5e4d793f6b525498aa9d2abb8ee76641a89e7b8864e1f691655b01199db", -"TT_test_autolock.py::test_autolock_cancels_ui": "0ef959c5cfa7fb52c381fdbeb65ed1eecdd974e24f56c780fb2c747961d8e76a", -"TT_test_autolock.py::test_autolock_default_value": "26456e47387df96753a31089b42925fa24d29604564d9145a0a40e7eed03b04d", -"TT_test_autolock.py::test_autolock_ignores_getaddress": "2d1ca9c45112dad7e5bbb908baa086b02547a3e710fab8eff79551e63e19b790", -"TT_test_autolock.py::test_autolock_ignores_initialize": "2d1ca9c45112dad7e5bbb908baa086b02547a3e710fab8eff79551e63e19b790", -"TT_test_basic.py::test_device_id_different": "a2311d35eab312a51948f62e75484cb352c7794764403812a33acc9bfc89ca73", -"TT_test_basic.py::test_device_id_same": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_basic.py::test_features": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_basic.py::test_ping": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_busy_state.py::test_busy_expiry": "6509e7c943f2d09e3a5a7c69faee74c75b321ed1614d881d1ebdb57693c7f69a", -"TT_test_busy_state.py::test_busy_state": "13fce27fd795f6f622614fde678ba3f717129a27ecc6d0c2cbd389ede4a2798f", -"TT_test_cancel.py::test_cancel_message_via_cancel[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"TT_test_cancel.py::test_cancel_message_via_cancel[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"TT_test_cancel.py::test_cancel_message_via_initialize[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"TT_test_cancel.py::test_cancel_message_via_initialize[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"TT_test_cancel.py::test_cancel_on_paginated": "498ffee2ea02e2783466cbb993f0cd83eedd3b67afde37b5d1f713fc996c1455", -"TT_test_debuglink.py::test_softlock_instability": "55cb4cbeec68bd8ccee460034677cf8053f8f688d5c3559f360c38a205b34e37", -"TT_test_firmware_hash.py::test_firmware_hash_emu": "2a63f0bd10ba99e223f571482d4af635653bb8a3bddc1d8400777ee5519bc605", -"TT_test_firmware_hash.py::test_firmware_hash_hw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_msg_applysettings.py::test_apply_homescreen_jpeg": "8c1b50eea75d624109182cb007b84cef591b4351d336bf867190d6d772874587", -"TT_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"TT_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"TT_test_msg_applysettings.py::test_apply_homescreen_toif": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"TT_test_msg_applysettings.py::test_apply_settings": "77be3f4bc733d438bbc10a6b0ed2d413f4ba1cbafe1ccc7659d05952043f353e", -"TT_test_msg_applysettings.py::test_apply_settings_passphrase": "ef45d1caf6af022c3dce5a8daff55b09f46d1419475d222ac0abf666e4bb1bcb", -"TT_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "a1f6dc01500cc25bb7ad302da3e5b6040567d9245486e2ab983bc7b03a511603", -"TT_test_msg_applysettings.py::test_apply_settings_rotation": "4ac1c55b5f2eed836bffda4783e4bad80eff64b961b1c0a0140cec9fa6a4ba16", -"TT_test_msg_applysettings.py::test_experimental_features": "523f74db7f660c261507dfdd92285981869af72c9ba391c4dfedb3f06ccf40ad", -"TT_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_msg_applysettings.py::test_safety_checks": "b129e0ba2e3c7ac836b3bb4b0bc8ded1c922eba054b42b434d10499fc780ea2b", -"TT_test_msg_backup_device.py::test_backup_bip39": "860d55611c229f75c4dbaac5065a92ffbc64ad7e83a7352bda093b036e095594", -"TT_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "6867126ffa5a364c6f1360c80fc10b3b43907910fdf700f305e3ff6b3165227d", -"TT_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "f34fc345799822bc890d9815c9b0522eb8e97073dafdbb0ba4071f4c7ac3623f", -"TT_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "8954ce3541ec843d5161193d4c64520869e97eedef85c4852ae7101957328af1", -"TT_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "821e75f63ca4589edb7934f3f2074ae58cb97ab9c0240e153d35c79ddb605ec2", -"TT_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", -"TT_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", -"TT_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", -"TT_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "e3c28a6963f167c8fd79ceb3cb3949cd66dfd08f3dadb8b093f7cef2b5e9461e", -"TT_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "941595955f00b7c66776f691420e85330b8fa3a3c9fc40763112d1064b3d61a4", -"TT_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a98ec36a1945f91956ca63a558206d21a5bbf714dfe420f1404d1a5df634a9c3", -"TT_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "1262a187a6e1d3c3e7b6fd189942e2077900c0f396d1a3fc94336399a07b8e83", -"TT_test_msg_changepin_t2.py::test_change_failed": "ea48323d084dea7cf806b6dfa492153bbdffed9a1f08779ab19b61a7b2237407", -"TT_test_msg_changepin_t2.py::test_change_invalid_current": "e9925836465ef35c3d5364e90780626274a92a1123451b572b9ea11a9cd2180a", -"TT_test_msg_changepin_t2.py::test_change_pin": "256483cab21191ee110281e9f547c3fa08968f4d49fa38896f8141f5b8eb4701", -"TT_test_msg_changepin_t2.py::test_remove_pin": "6a606987a97b9d50d991288f1222adf2c819846076b2014e91909c9907a0e427", -"TT_test_msg_changepin_t2.py::test_set_failed": "962ba410d395e37ad341b818c026b134891040617e3f9368c4fcaaa9b4a27efe", -"TT_test_msg_changepin_t2.py::test_set_pin": "ea4ca29597f29be74fedfee2387f00e3433e487dad78529ccc65f00df3231644", -"TT_test_msg_loaddevice.py::test_load_device_1": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", -"TT_test_msg_loaddevice.py::test_load_device_2": "b9c7333adbec293167ba17f4d7306422bc6d6247c22774a8b3e7b5f1d957f062", -"TT_test_msg_loaddevice.py::test_load_device_slip39_advanced": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", -"TT_test_msg_loaddevice.py::test_load_device_slip39_basic": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", -"TT_test_msg_loaddevice.py::test_load_device_utf": "524f7b55052a2465f6d837428685fa0654ecfd2757c4d2fa2d768fd8f93a323f", -"TT_test_msg_ping.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"TT_test_msg_sd_protect.py::test_enable_disable": "0c84d283dfb6d58ab91670d858f49e4229c7f7f98232288be0442d1758f5f31d", -"TT_test_msg_sd_protect.py::test_refresh": "7643f69d7b680e5bae6c69be1112d1a22d396825b5f1b3a068df70efb1a738e7", -"TT_test_msg_sd_protect.py::test_wipe": "aead68a021aac7aa311e63617e011bdbe83889e7da8579e1247ac07751dd574b", -"TT_test_msg_wipedevice.py::test_autolock_not_retained": "c9df5badebf1e4b5eda48363392c539ebdad42060471414add7fef79b9278b80", -"TT_test_msg_wipedevice.py::test_wipe_device": "a2311d35eab312a51948f62e75484cb352c7794764403812a33acc9bfc89ca73", -"TT_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", -"TT_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", -"TT_test_passphrase_slip39_basic.py::test_2of5_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"TT_test_passphrase_slip39_basic.py::test_3of6_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"TT_test_pin.py::test_correct_pin": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"TT_test_pin.py::test_exponential_backoff_t2": "f1b35ee4aa7a99d52c6c75cd8a8bcb96f93b6ccc0627f5f685da9e539a317311", -"TT_test_pin.py::test_incorrect_pin_t2": "35ba6004f124e458c902ef581fc6f64a8e8cd6a33d655db070f7ff635613c6b0", -"TT_test_pin.py::test_no_protection": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_protection_levels.py::test_apply_settings": "13c0b9df0d94b5e9208019e2553541833ceabf10351ca3b21297b87876352656", -"TT_test_protection_levels.py::test_change_pin_t2": "acc7fcb094f27599d7b9ad84af803e509705f82a85646e5ef5b50fafcc456042", -"TT_test_protection_levels.py::test_get_address": "90b5ce41659d7d18ea3edb3e1c7a951fd639ea6ffb0dd9ce7ac6c7bda079a767", -"TT_test_protection_levels.py::test_get_entropy": "a4a8151b4145800ffe4be0d7b0ac19490dd784fcaf6bca3a58dd92085708368c", -"TT_test_protection_levels.py::test_get_public_key": "90b5ce41659d7d18ea3edb3e1c7a951fd639ea6ffb0dd9ce7ac6c7bda079a767", -"TT_test_protection_levels.py::test_initialize": "81043463fed15a2f74e441afe7f4876133ca6721bb2e08faca4b10053dd72e83", -"TT_test_protection_levels.py::test_passphrase_cached": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", -"TT_test_protection_levels.py::test_passphrase_reporting[False]": "6b2b5aa5a41031a8eeb980d0f53dfdf31c045b8b22c51fbc9d361b2b4fe132cd", -"TT_test_protection_levels.py::test_passphrase_reporting[True]": "adc28ee6969d9c6644e7769598ee761ee4a6f8bf8bca2453875042018d8af4cb", -"TT_test_protection_levels.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"TT_test_protection_levels.py::test_sign_message": "9bac92f0f3d6e160a8ebebe972b8cfa69bcb39ec4c8df57967cdbcf22cd4b37d", -"TT_test_protection_levels.py::test_signtx": "66d6126817dfb2df7a08b2deef7dd18a07763400f4d88c4776571cd7a8fc4554", -"TT_test_protection_levels.py::test_unlocked": "4488e2b6f06fdff05749ac271d080182f1c95645de37898457ff12f0fb190381", -"TT_test_protection_levels.py::test_verify_message_t2": "cc09f0acf9e48b1355dae0be65a2a97abbe2811808feee08d46ae7146ce6bb6f", -"TT_test_protection_levels.py::test_wipe_device": "7ff017de646b7cf70832605e1750c635d0eb661d51534b56007b49e82b927011", -"TT_test_sdcard.py::test_sd_format": "83d0d9b4eab3bf0eafc22d7d95e8b70bce477ba9c8b4ba13eeca9380ad5fdafa", -"TT_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", -"TT_test_sdcard.py::test_sd_protect_unlock": "1302f9a0835cac621142a17031d2150553e676261a3eeeefd32fcf1e69c7bd1a", -"TT_test_session.py::test_cannot_resume_ended_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_session.py::test_clear_session": "96f21e6a6c73c121c41c3228ec7c50937defbde875dbdf0915795366132207e7", -"TT_test_session.py::test_derive_cardano_empty_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_session.py::test_derive_cardano_running_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_session.py::test_end_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_session.py::test_end_session_only_current": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_session.py::test_session_recycling": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"TT_test_session_id_and_passphrase.py::test_cardano_passphrase": "f39549678b9631de2991711e728ff7a703ab80be965d794b40c69c0010ede943", -"TT_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "74ca896a0493ee40b4e3a709f4cf1ad1d5e80dcccf7229de09fe1a3e40fdc615", -"TT_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "f7e9a2550ae7c57cefb0e2a13c62a1ead48fcbd86328d372ec7b54b26d51101a", -"TT_test_session_id_and_passphrase.py::test_multiple_passphrases": "f6d22736654a397b99e7ed4700b88235953bf7b11a293b0fa975f8225dfbb07d", -"TT_test_session_id_and_passphrase.py::test_multiple_sessions": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"TT_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "671a366a006193926c0af0d7a84f0feba09a220bca32fbc609b17ac431f6f79a", -"TT_test_session_id_and_passphrase.py::test_passphrase_length": "c4c9e8c395f99b21e7de2216154a18af726beca5b82a09e689b35d02b6d14eb8", -"TT_test_session_id_and_passphrase.py::test_passphrase_missing": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", -"TT_test_session_id_and_passphrase.py::test_passphrase_on_device": "b95cba09bd47cb9ac2df7272a1ae1e7a6d3ff3b345ad40ac3d139d99637c1ed8", -"TT_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5de5cbe74fe51d694ff926523f318ea3ad93f98bc5bbb13519e76c2f2c5cea43", -"TT_test_session_id_and_passphrase.py::test_session_with_passphrase": "9b2d4b75a4c96cc3ab52056d4b4bc83a38d948bb35aaf422829b05c43ac0cf14", -"TT_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "e956201e6a960c53fee449e29be2a3094d10bfd7ea3956b0c356aebc90891f60", -"TT_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b8006f9f20dbe6b437522702ea1068b15b3320909f8d6d86eed47c700b4d9bed", -"TT_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "f911f2fcc0813237d78c7c59a4237058aec8f8066116703ed4402b70ae802569", -"TT_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "f686330e653bbe1d12bd05b896a9f6fd60b10f9ec1bb2e56cfd8de5e9b7f2941", -"TT_tezos-test_getpublickey.py::test_tezos_get_public_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"TT_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "842b1dba8dedf7ee6a2c6ce15305dda05b249d7a1cd4ad2854a4a2dead2657d4", -"TT_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "2c89c52a396e7aa8aee9b5216307b8aa89fd613d2734cbcad6200f95a614b418", -"TT_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "c755c8ab6ac30e0e6b5e74b820ab2fe8dc2651da9f28d82206c50a1b12002d57", -"TT_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "dab7d08e722611f6df10c65cf899eb5fd2d7c581b9782b20f915061bf3621a59", -"TT_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "9e50c84010c632d4f77cf6986589d02b20612e0750330d7698747648186ee2f1", -"TT_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "c96aa7c1a89ea02258c3de675fce069ca711a373e0da6f4243df2bfad4dc99fa", -"TT_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "872dec677716e31c8a273cbc2fb0b378721f62c8520cc3e58c66424230c6f113", -"TT_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "a8584c502480d28e3cc5ff93f62f46430bd78103b4d2530130e1b84e8912a6d7", -"TT_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "37e2bb21c01ac37d2766602293139c1068fb2fa1529e47447b19800e707e1fd2", -"TT_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "9d4e51b1baf7958ccbce3fd950f56d39b235da4d1428889fa0bdbb9300b781ec", -"TT_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "dfebebe52bd943dbb719062355b7ac38729cc95339a49b795a34fa900419c4ee", -"TT_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "f51e94cc8df4063ceab5fe431c9a53544533d809a6cf43e5beb4b5c2471d44aa", -"TT_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "3e23b6eb2ee4d4ae726eee3105dcf06d2914f6dfced39231496ea4c181ecd7ee", -"TT_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "011aaa0232bfe00f8df11afc2de1c00d01323624e9f4483895965d125e23d971", -"TT_webauthn-test_msg_webauthn.py::test_add_remove": "7a5407948b99a424d913a27023920eb5deb2b06cba1b78271c8ff6c69b56b85b", -"TT_webauthn-test_u2f_counter.py::test_u2f_counter": "87f09bc2e7d3160ea1ffa7f340ed8513ec64b8bbb64e884e82f80fbb07899e1e", -"TT_zcash-test_sign_tx.py::test_external_presigned": "58ca129cf30e1cfb9a4b393967b859094cf7b7a3095bb1962f9199b52fac8245", -"TT_zcash-test_sign_tx.py::test_one_two": "761e56a0674e522af18cdcfc9cdbd398a7f82f9454eb8bebaf076155336f28f7", -"TT_zcash-test_sign_tx.py::test_refuse_replacement_tx": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"TT_zcash-test_sign_tx.py::test_send_to_multisig": "d408c807422deac11166c3b232208951b4751fc34b3c85a71d2794a42efe0e5d", -"TT_zcash-test_sign_tx.py::test_spend_multisig": "05e12d33ff11d7d149711105573b25378e819f89bdaf5571d502c77cf50951a5", -"TT_zcash-test_sign_tx.py::test_spend_v4_input": "f780cbed9d8d015ba1872dc35db94fb5b311b179f5a2a4dff057529aaea7b0c3", -"TT_zcash-test_sign_tx.py::test_spend_v5_input": "ba41b7d7c77c4ef9ce5b8e50d749241d0633ccdc22aad8d9491d74a01930add8", -"TT_zcash-test_sign_tx.py::test_unified_address": "895eca0e5eca607eaf3733956c57daf7e9fd579ccd87b187b12938b76aaa4f20", -"TT_zcash-test_sign_tx.py::test_version_group_id_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3" +"TT_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "47b0961579275ff1802b4954d5bb3c4fbb01d0266a23c94239c8c9c4f9f44fab", +"TT_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "642fd0080e707b7acced36828b93105ec8690b0af38c2bf78b106c33954f4f67", +"TT_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "e4d95a15cda1927e9ce4ae5e05818491de6a70c7e5c817d30f80ae333cd161db", +"TT_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "d85e2016bcd2c33f5a35ace86f8e8db04a5665936c6aa0373e8501091c01045f", +"TT_es_binance-test_get_public_key.py::test_binance_get_public_key": "863f13a559be9986563632229f6883c169f9afdf12608c237d9a85289277c55d", +"TT_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "48adf45600c4b9a67f894f7542743bea207e7338422b4c9527a86564fee29864", +"TT_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e74ab5218578c48cd2476843e4552d3372afaca7227d9651ad2f822a0d4110e0", +"TT_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "4b385990b84d9b4e0c6b8bdfeebb697b853612895ee54052e0c69d55b60301fb", +"TT_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "48adf45600c4b9a67f894f7542743bea207e7338422b4c9527a86564fee29864", +"TT_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e74ab5218578c48cd2476843e4552d3372afaca7227d9651ad2f822a0d4110e0", +"TT_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "4b385990b84d9b4e0c6b8bdfeebb697b853612895ee54052e0c69d55b60301fb", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "4be540cf1c62f2bfc7c1b48774cf1e9c17264d3c3c40fc77646ba3fa75f4a454", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "433e38416fcf347f719572f443e699deaca38b2b1294476f986e33be1c0a0360", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1c9dd8de0ea726a346ce6480bec2414b29acd6779125d929fa83d84ce9ed3e74", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "4f51a2c5982d197bdc5eef9e5429be3489da7e777438307cca3821f702100fbb", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2a20d916802614715b35ba5d67f3aee1f6fd12399b8e6396dba6ea4d1aeed279", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "2a20d916802614715b35ba5d67f3aee1f6fd12399b8e6396dba6ea4d1aeed279", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1e64ee529fb6c1160bc2bed4abb9ebb6029402e0f9e42d5a890ba1e17a2ca7cd", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "ea8a4d09dfca8956e98f2f6a29a0866661102b2d5fd16827a1d0d1327f7564e0", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "1b383616d0d711e1f2430fce4da86bba8bf5781aed0668c0d102607a140b9f5c", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4b7f63ad3bf668a1be363e9da2da5cc0f8a4dfec3cac753c3e9a5dec660df808", +"TT_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4b7f63ad3bf668a1be363e9da2da5cc0f8a4dfec3cac753c3e9a5dec660df808", +"TT_es_bitcoin-test_bcash.py::test_attack_change_input": "9cd01b75ed14de625d969e7a0b0d270b249acbba4fca09eb98aee50277f6f16e", +"TT_es_bitcoin-test_bcash.py::test_send_bch_change": "9cd01b75ed14de625d969e7a0b0d270b249acbba4fca09eb98aee50277f6f16e", +"TT_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "ce5b0cf0d5e064b6c2ed1ec679c8a68037586e36b2d71b9e74f50d657c68bf49", +"TT_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "2f372d82291b2c86086e5a2ef5ceebedca471c3a7e889c1e7fb332b95d387955", +"TT_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "3abce7cdb0f3b10c1f50df68ad9c7a234739add17e361f805a4d15af6d1d82d7", +"TT_es_bitcoin-test_bcash.py::test_send_bch_nochange": "1ea8aa54855027d91c246c1bab8edf04bfb30fc524fbf544b9876f5c5661ba43", +"TT_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6f41853b6c72182eeffe157969cfe4917b266f14ea7b40b77ac75039e1a871ba", +"TT_es_bitcoin-test_bgold.py::test_attack_change_input": "a0f50769b0fe5768e76703f2bde15067de229ee2441bb82284eaad2f2c5cf3c1", +"TT_es_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "a0f50769b0fe5768e76703f2bde15067de229ee2441bb82284eaad2f2c5cf3c1", +"TT_es_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "fde2dbddf2918bbc87c5124cc9c6adb10c079269bf3ddf6ceb9447ff2c75e633", +"TT_es_bitcoin-test_bgold.py::test_send_btg_external_presigned": "59a25525a3d603129b247c655ed6a2eea5d8e5696c5ae2aee15f360f67ed066f", +"TT_es_bitcoin-test_bgold.py::test_send_btg_multisig_change": "c026bacb1ec1f168c67353864d1e0fef7a61588874988aed7aba7ebd52b64c48", +"TT_es_bitcoin-test_bgold.py::test_send_mixed_inputs": "dee607ba43f1e1328b3bb55e6eafefbdaac12fcad325c218e970e5154a893627", +"TT_es_bitcoin-test_bgold.py::test_send_multisig_1": "e47abc5a488202a378e495b00390980526b3e43dca6e6a37f749465784309715", +"TT_es_bitcoin-test_bgold.py::test_send_p2sh": "e719946caafa1dffb8696789b6aec3e83d70643b899d222709a2bc87884320f8", +"TT_es_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "816ba0b9dcc76983e6ff87bcc1aa3ec9e9128f02cd24f5178850bef3e904ce6e", +"TT_es_bitcoin-test_dash.py::test_send_dash": "4c0c9be79e7f3abebfa22324f41a40c64963f3af0346afa61de07471060fa615", +"TT_es_bitcoin-test_dash.py::test_send_dash_dip2_input": "49637fb7ef021c7e97a5d544708d62abeaf1e3b5e37b9a5be54427fd1923862f", +"TT_es_bitcoin-test_decred.py::test_decred_multisig_change": "13e7ed7eab49e595b0652f39f8aedd3f1fff6231249e0ac70b4da57ca4b475a5", +"TT_es_bitcoin-test_decred.py::test_purchase_ticket_decred": "e14bb6642aadab7176c2e4f65776aefa77ad0401259d8fdfdeae41abb2dedf55", +"TT_es_bitcoin-test_decred.py::test_send_decred": "ba414441fc65a9e0cc20fe0c39b750728cdf47cf4f5537a7d79b387e493fe674", +"TT_es_bitcoin-test_decred.py::test_send_decred_change": "bbaf7d5ed07bc7686c80d841f54be91b0bc901192971f6ce250049da51effeb1", +"TT_es_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "4a3de13de808d43a4bef0238a61767f870a14df57d46c737a3e115a6f5891071", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "e55f41058ec13df55eff9d0c2e9673f5b44269f10e9447d2093fda511ef6893c", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "29d2449c4914ca83eea4bf20466befaf081e0f7038a91a570c016461157792f9", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "45f076a97a32730e9de922a1d6cf128fe4cd740b36c7686c4f186f6215e0a738", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "8ee6c1dbdb0649a5e4dc99a6329592a2c9fc20483a467d80407c45c55ea6e2e9", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "c602fb3bede7b1b3352ab99063d4a052b22ecc0efdab0291b1217bb568cb617c", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "5aba3e786a16b7383c2900c31f6f8cd3cbd44962800de0d099891a766b6d4530", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "cdbeaf0f95d6cfd14ff0d8c6c37633374889e8cd38b93bbf74920603da1b40d1", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "7549af173009282cf9f3f49791833ca62366d0e9188e43c293468f8eea8f46d2", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "6dabb2080e4702dfa43537f0a6d73953a3f40d3b52398bd48efe49fe62422c5d", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "113a090e38015f3d3d7926ec5751a815e0fc7aef9b9c466f5e92e50ada08666f", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "e5e6759d52e7122d7e21f5f504fa2d6f1976462eb6b0f2f4562865f6b0ec2d68", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9b521be1889caba8e9b42654c5886831e7fd6e46a5395faacb6c35a52fd67b36", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "82e5a7b29c7858841ab1b19b88be7c3c5e34fb28a89c5603b58b2596bfbad834", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "3ed0e47912640fe4dc685b335b0b696cfc0e513f3688eb640191d508b2856cd7", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "95c713697e2762ca776f57498c068f76abd5d218bc75553e26ffa22d153cea0f", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "9164b0d38b0e21ed7c268456701049a3381a17a1420fab59506dbf267cbde856", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "abd278f4aa737db606913744febab01622b0dcd739748830a74f4c5f8117324e", +"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "43a80ccf77f81958a2d5ec7d846f27e02f9c8f253de36062f1992f8d1068bcce", +"TT_es_bitcoin-test_firo.py::test_spend_lelantus": "bf3f91260e5f2981ad703f57eb7d944c01b4f7a9b629ff8771ab9e553270eab8", +"TT_es_bitcoin-test_fujicoin.py::test_send_p2tr": "f7460124d3da4713fc4c64a1d41100b3072e338dd979169ddcd3221d786507f8", +"TT_es_bitcoin-test_getaddress.py::test_address_mac": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_bch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_bch_multisig": "c0cc32140aabc2e6d1e0114501b792aa60256d3aceb0d24689ff56acb19264b1", +"TT_es_bitcoin-test_getaddress.py::test_btc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_crw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_elements": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_grs": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_invalid_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_ltc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_multisig": "7a5a0ce64b7b93f83512003ea77d14976b34f0882c89449ad4ad5b31f105069b", +"TT_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "5c8bb4459d39bc95ff2cc1792ebfb10e7cb8cec09c9c62fe01cea777f52046ff", +"TT_es_bitcoin-test_getaddress.py::test_public_ckd": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_tbtc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_tgrs": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress.py::test_unknown_path": "bea3e83b623311bb5b03d5be19053d895bea660e8d787a4274a07f47f31b3040", +"TT_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "135a49a104fed87222a2b820d44238e609d4121a6eedd8a493884e064d9115df", +"TT_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "dbcfb09b87999163c59eb56d5d6156b53f8196109474b7eb8a6faf0d5cb767e6", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "4ef8ffbec514c60ee24bdd53db541faa29747c833d6df4bff173e969308cf0f5", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "ef2591bbe5dc99f6085e77522f25dab451ee54c7385be5bc997951dd077ab29e", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "8f8c871c25ec05b0f61882554de17154cf8d8d4f3e81dcfe19f1d7e304bcce18", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "d4a0201d79942e213c4a5eb643c4a3249661366eb147912d5e5780439fca5f48", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "24b0f579ed40e6fc5ae14606d00787d3c081374fa2347e600ccb00a191c342a7", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "8f55423947e9bdc99c45f906386db06e840c972e2d8f43ff2858c4bb39a2f136", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "21aec7e4449ba337840df59e0f963fffe8a2c760f13c825df72cf1ddcdc4910f", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "a3f56d58e2358f119c478c27181efd979ce6717b9764ac452e527a1fbc85a718", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "5a861147b67fbbecbf59029e7034d457167c39d188d278b47186a46179207f04", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "68b680011425a711da48f09152d4c838a31f12d60e80cbee613c2c6539d42ce9", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "d3659d5dcf50eab6014c4e43d2e02765790b8f56ec9f4c15f0a03d91c8087288", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "8a1717acf22923691f1ad9f963e2600e60a9575cc5d351090b213260de796a12", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "82371b9c90e2b2e0ea1e2ee0f31d38b739a15cc25eb78b9cdec5b30134e3cde4", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "a0cd8ea1749027a3557ea5c7fb3ef164c1cf6c7ebf04b5aa0f0670588831c9b5", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "64fb7c95377c49306a31e15c7283460625c063e660055305425cce066a4139ab", +"TT_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "5f9335688a26f9340db07cfb98a5b4ec19d2b10b88c6c1e48bd1fe89bd187b0c", +"TT_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "4f2b47e1151bbe48a3d0fcd7b3ad9c58e14bb9c4fdc0c441a06c69f8988ee55d", +"TT_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "c7050c3463f3e7a2cc14d5342926a615de85052f57ad51602bb4081f2ac9d64e", +"TT_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "694d373bc05e82453ea1d50c875cbe438dd90b8096ece959dd4624fea9766766", +"TT_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "0c9d78d11efcc15d05f50ef5e7b3f81af35f5cb383308bd541fe307876f85d15", +"TT_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "c8ddec02376ed6077847b59de687562f4e41486b7900ef078a6a360615b495c1", +"TT_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "be8670d2791ece63dc2079c6553ed8126ce5fb5a2aaf7d44adf620b94dac7b24", +"TT_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "be8670d2791ece63dc2079c6553ed8126ce5fb5a2aaf7d44adf620b94dac7b24", +"TT_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "4fa18af0621fe2030fa653cdb9016800412dda1a6540f2db69572d9abc869b23", +"TT_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "ce3243020152a529f7947dcf043e8f5adfc9f2f0a77bd3f4cdefc1af11498bf1", +"TT_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "09bca0633e0b03914769a92434eeaac964c699aff117e9ba176527ee3c844d4a", +"TT_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "8da285a8c010c522d53d164b29f5853d907862eb4132479f36a35801b95bc89c", +"TT_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "5cc4f129363c968e4cbc9918492bae6a8a488b60234efdb30fa5305d55719ca1", +"TT_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "57aaf13ee38c8fb42ae56249a6b559ea0e203d3f8d18a309e761be22e5b0281d", +"TT_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "699eb10c3b698496d8e98c46dc781f4a3ea2b3d2ac4ff212c3b72c6616e6b2fb", +"TT_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "5ac2a6ea6e0a9a6b8ff2b931cccb8fbe9edadfedec88630cea1467ff5e804cd1", +"TT_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "9cc303d3c161dbe68e0a227d6ff745f922db0e0c9b427aa34f228a19ac00c49d", +"TT_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "abb3dcc43fc2bf4a3106f4072542730219e825a4e95367e2c29df06a397d322f", +"TT_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "fdf13aa5b8ed689a00ab67bae57f5b569111bf403f52da1cddf1f137d26519db", +"TT_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "17f358f5a5d56245468f2401dde95eefa90a30a8b445ae1b6a27f44cb7f7136f", +"TT_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "2fb7c0b1eb770759b3fa5aa1ee2eca486a8c8d36c7a42e4307850ea203cbc52b", +"TT_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "11eac52e4eb4b4e8708e99c74f0462dbbc6faac218294b6f53384d92c1629a77", +"TT_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "29d2449c4914ca83eea4bf20466befaf081e0f7038a91a570c016461157792f9", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "5f2b7cae7213d28a250d3fcd6c60b313145cef4fa872c2137c6cd87147f6927b", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "923e6afb394830421417d680348544fb8262290ebfe3823516f89ce6accd6318", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ff8a97e498a7943ac70f4257c4c65d311806fe759741450572105692facee735", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "ec48c1e818c81b8ca4b9868f4f74cba15bf061388243cf38a60d9167214bf558", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "4e70c4941cadef5e8b44a4b0c9ed368f5c16be14c7a7f7791aa168872bac8aee", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "fa4d5a0f9bda3ec5d5d43d4078bab268fb5742fee0b742c1d246f56fc4e3b13d", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "d07419a25dd37577241ca45e25e0b3d4e8f729a703240136229b860d68b3aa7d", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7e88fa2600ffa734ea152eb9374c46004fe669d378fec5d1c0dcd79b3c063a91", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "e5e6759d52e7122d7e21f5f504fa2d6f1976462eb6b0f2f4562865f6b0ec2d68", +"TT_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "2356ed20439aa15a914e4da48a121c6c1c13633616c66b18a7a207548dd969ae", +"TT_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey.py::test_slip25_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_grs.py::test_legacy": "4695955b91e79a3f9d3df57f74a695da8c251d27f9e376c2c5abbc87055674d8", +"TT_es_bitcoin-test_grs.py::test_legacy_change": "ed3b6f86c0813ef614bc6256582c438507eb6535e9436f24cc9c247ed7713d76", +"TT_es_bitcoin-test_grs.py::test_send_p2tr": "ab65619e5603da1d44a9f0d4e2d6d7a583b6d0a1063e079062fca25c09faf993", +"TT_es_bitcoin-test_grs.py::test_send_segwit_native": "e46ae5b17ba4ed126b7843df54eebad516908011add470fbf1f0d2184fa60495", +"TT_es_bitcoin-test_grs.py::test_send_segwit_native_change": "573232fa2ae9c8e52c58699212e82cf9dade8b119ea1a4550fe22bbdb8700698", +"TT_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "77031909257e09882c70d465c3b7d29c049d30ea63fa4e73187e16d7f7567abe", +"TT_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "8836861fca32b7025cd64aed27d483187f599b351d3df598cae920fe361d95b5", +"TT_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "5017f8e0ef0ccfabc731af1f3f9f81a8a4fb8c9666bb5f94195312d00a0cfeac", +"TT_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "317df0467a912d5890c21e10600a8f32abc9303cbfade018af9a15b89f730b76", +"TT_es_bitcoin-test_multisig.py::test_15_of_15": "e5a8b82540a3c0e7e1341d6e1af233e1de09deeb7eaae7539d1095695bce91d0", +"TT_es_bitcoin-test_multisig.py::test_2_of_3[False]": "bde77c1c334a816009e411e3ec37a35d20c27e1c669b7ade6175d434b3870854", +"TT_es_bitcoin-test_multisig.py::test_2_of_3[True]": "653e8d932b604f475a4ee8ca8ee8292833563dc5db4dfec99c0c091cc8f37f4b", +"TT_es_bitcoin-test_multisig.py::test_attack_change_input": "69a83eacc3d1c6bb2351e01e58aea4b6ae96d9f825a5af2bfe34ff5e5e7ac91c", +"TT_es_bitcoin-test_multisig.py::test_missing_pubkey": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_multisig_change.py::test_external_external": "f2b9efb1ed1dcc05451ba3f85f32a0e87ae780da459f29cffe59ed0073870717", +"TT_es_bitcoin-test_multisig_change.py::test_external_internal": "c0f41d3a72002ea91b3f985db92f4097e4225c18695292e3252f53b727815bac", +"TT_es_bitcoin-test_multisig_change.py::test_internal_external": "701195938dde483f1e5c27286df71880aabf886fa0be08e74c99956329830bf9", +"TT_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "0b52f645fd8c387719d9b21406fd4d5a1ed600b1fdb44c7be9a0ddd9eff54c5e", +"TT_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "15de36fa60a55229e6b0937c3ad08380b1d3e8eed520190f8e2c3775f189abb8", +"TT_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "64a3f70bc843c948bb5fd3c62f3d1f04d2071e57a2d5ea4b1d18389aaa832aa8", +"TT_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "8bb298e7597ccad772bc29cbc0a8e533fb407b8ce74a2ea69f625024e5313444", +"TT_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "275ca165eed672b5e17be7abd4705a5e787c69984f15512b918ceb779021e963", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "8644ccca67b3da97052371c6b7e220d8c57ab4d58305505453c3ba480aec80a4", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "77ab5701f9f01ad6eb88498c7102bab376984841c6def1213b607260adfa2829", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "ee2e8d75d9c2193113d5e2e430642435e0ceaaa0db4039f87a3488dd910bb1fb", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "7457898d48fcad08a9a015ad832b5f71182bdffcf21d859d07fc517e397893fe", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "326deecf6988769794cdd545470643ccb2ab98baeb3cf63bd207d23c47df2d60", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "8cba7cd04cd88bfd77cb1e487427d7ed83688523b50bee57de911b934b77c961", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "91dc4eb2478b7688d30a81762c125d13722b0432fcd2ed2f4d77024125aeb32d", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "704c4ead9643903471f964678b89b628e7f3d3bb0359de25808f7d69ae7dad6a", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "cfc54c943f7a676437e29c50660a0b7f36c6c3f3062d7991eeee23e9d700cfb0", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "0d0e3daa136149273ef1a512a291dc3b3b11a143986a75c208ee9435740e4fec", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "5d7b43722ff413945ddf02a3abd06a86078dae15f474432b108ba28dff7c70c7", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "7bfca886631caea81f8ab373d953541522453ce8128b2cfbe888fecec1dfcfa6", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "58886e6c43fa80f14299514c5482abd2edc079665654e9d71f25f06b260d63cc", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "c1a136c7dc5b0e7e7f9ca26ff32a7bb1b0598933368ed91e8949842f80a8b458", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "f298dd3c338092721f1b6e85242afbd8eedd3f3fbe42c122e7fe6255775b0d47", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "d589e83ce2cff7bf78271faca358b22b9f51380fc2a9abfe57bdb3ba4a702a87", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "c32452c0268854a58b50acb0c8bc009ef344a7aa8110453e614cf25e8e97ff77", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "05c9843348defb347cb576b3766e13a5beb39ec05f1cda8611aceb75e2447ac5", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "f0b6e36d217bb4417264afcdf641c4d403ff101af510114fe96f0450118b6bf9", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f4660cb1f8cc0377d1b215f4ed5b951ca0821aadf8a6982b36ebebdd187a09e4", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "13c0db9c23d3a504b71f8e0eeeff3c9601e32d3e7fbf0c15b4d175b808e5db56", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "2f2531ec0d40d115eb9f81c27a220502011325d46abb704055d6bd4f8ac6a3a0", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "dffa8eac798c7081273cea0f6cbaca320674c328fa2547f6ec4ead1c1a376bbd", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "3ed619aa3951cc0cb0475ba856706035075fbbf3a0dd3d5ed884f04cd1b8a8b8", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "8e9b77af1743f7cd7c60deb461d7568ffca7aa74619113d5998993baac98c788", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "796cb10c1cf2ad001e3e9fead9402e094b6747a17efcfe2248967f75f5e118ee", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "e2a892ce7b8860c01e91b1b41769805ab17685d31f1e1e85f65273209e037ad1", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "ccb3bac2276cc54ec4b3199b1470cbbb67e2da5a3c1ea9e78cefe6c4441d38d5", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "4cf122553bac14cb711f5177b6e61e4e66047c8ff4e146f386fce4cdf48ada53", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "eea6e7f67fe36e10a4d617c955fbe487b7ed9b0d4ed79ad62e17c138101a1dac", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f03554b34cea3a6e8aacb736909e8141a38f27d5459e29eefd62d6d3f5b1485f", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "1830e471d67615c9652df1c98fdb1b4e1148adfbdfae5544625c103e7b409e35", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "eea6e7f67fe36e10a4d617c955fbe487b7ed9b0d4ed79ad62e17c138101a1dac", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "eea6e7f67fe36e10a4d617c955fbe487b7ed9b0d4ed79ad62e17c138101a1dac", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "eea6e7f67fe36e10a4d617c955fbe487b7ed9b0d4ed79ad62e17c138101a1dac", +"TT_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "3b4c0e38ee265c48a8a7bcf13671524fba766e7aa4e91180d77fe8e798e71566", +"TT_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_op_return.py::test_opreturn": "89f589c1ddcf362c39b0ac0b5966c0545b555bb23fc10ac314b40d74d354f033", +"TT_es_bitcoin-test_op_return.py::test_opreturn_address": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_peercoin.py::test_timestamp_included": "c08f2a2ede67cf3e7496e3427b967316b1536ea483539abe030bfdddf015e7fc", +"TT_es_bitcoin-test_peercoin.py::test_timestamp_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "b1cb1491b2061828b9fa936242deed4f452c747cd9e48649f73e01e807626a53", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "476d608564257684a417a735f27d1715a0df9fd03003a0feb888d8a142d95775", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "476d608564257684a417a735f27d1715a0df9fd03003a0feb888d8a142d95775", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "2229e0651e6ea845e5e14160e3f694e4ee55fdb4cf6215a19488661c31557be0", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "ee09c54330661598f7cca8709217aee13b5a5a1cb6d06d7c0693cd99f83fc005", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[decred]": "b8e246f98a7ec02c0cff09141f342d26cbb87e88d2d304b8c65dd48dbe1d13a3", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "4b934b5262db806bb1ef256a30f2ab5836fbed18a42f16470258cb3ee64aa9a1", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "2a314e6451b7ce07a709016e896eac756507aa7b49a8db6e0157b7ac6c5fc6fe", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "337cde948458929f7ec783eb0b4a96a5385d04ee22b7bd3b54e41eab9ef6441a", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "470e9224a6ca62f0c3be8ef512c37a61e1661041a55731269122f5427ea28fab", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "01778d7143762a9c1fe173d89ecd3cf333f43a6f275525dbc0be7177dfb9a741", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "01778d7143762a9c1fe173d89ecd3cf333f43a6f275525dbc0be7177dfb9a741", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "2c9d1cd3ff6d47e187165216d526cfd7d062eb02464d9fb66d36c595c642c5cd", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "84c2a8c56f2ea380000d005270482d06e41e0038a10a22bbccc0a89a75d7b17e", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "16e89545f02ace82bfd9b783427cf75e1ae5b0df7926727e191d63747e5c1b94", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "16e89545f02ace82bfd9b783427cf75e1ae5b0df7926727e191d63747e5c1b94", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "07d647e9065186978df70ac3cac6f553a4c423ff64fcc3fec9fe29ee4e5bab15", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "ee2451296577cae7c5ed6a93a8dfc7681f2f64c0c2978a40603597d49eda9a88", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "c61406b61d5a9c1386ea3299d73a3c477d77662c979340caedaef0c2be2a8e1f", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "c61406b61d5a9c1386ea3299d73a3c477d77662c979340caedaef0c2be2a8e1f", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "04cabe5770043ffa1fe10fdc6549c9795c6b7228a861870440ac4d103ff826e0", +"TT_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "c63d99d3a5a3e22746f633ebb2edae82448a2dd3d7b1ed89b60f0ce20ee28490", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "6b8fa40ed7310bb3876394f5f751dd9401f27be205a8914e0b42e3afcf1d06dc", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "6b8fa40ed7310bb3876394f5f751dd9401f27be205a8914e0b42e3afcf1d06dc", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "02eb1ea229ae53ef8211bb02ce96fa8da2376e4e2fea73c72a1f339fc563b4b0", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "b775e749515d31b461ac93976384b2fd5bf4df35b6bbd113d70e12d289c5f4e4", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "796c2ec7a8162de1922e3fd05822b39a55449ea9345315e5520f024780c3c670", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "a6ca9f7c384b8a1723fc93dab8c5e5ca52dced73e11276a8cdb9ad2b7d01d984", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "107d7913c2f42f5c960d42ed9e9ee5ce0ce1cc882c040c2daade8d4b328aca94", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "107aa4f20489669acbf6464df3765fb8d5a8320391e4cd9cf2e40efbff94ac65", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "dc3325871109ae4b4660a06e52d8bf3cdd1a4c69f0c05943da7d7e7b282897ee", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "5f99fa7ee78f1c13bea957c6a449a9df263cf4194e398319058386db53a61af3", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "5f99fa7ee78f1c13bea957c6a449a9df263cf4194e398319058386db53a61af3", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "10c48d116e555f98e8552081e9aaa151b851f228219a5fa08b1ba238825cc99d", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "2ed1c8d57556769eecaa93319c0e06bd3921912835e6b74a9750f95ffcba2f92", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "a0eace0a4df22233bfd02daffa5e0f3b81ce1bad3c451d91d5eb34bdcfd69e31", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "a0eace0a4df22233bfd02daffa5e0f3b81ce1bad3c451d91d5eb34bdcfd69e31", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "6615bb25ae7680e260134d26ba297a831af29bd39d9fc6315025f8446261fb2c", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "07d1f07946ee521a536080ecec69cf7a550473e5a198fb717349a1ec79c30cca", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "834a333e5c72feb1d4035ed100b143bcd0e87da9fe3e72bbc1a41b72fffc903a", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "834a333e5c72feb1d4035ed100b143bcd0e87da9fe3e72bbc1a41b72fffc903a", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "c0646d85ee0370f7bd4d3594772eba8449196fd689ad5e60ced0c7be5bc183e9", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "c7fc0b1bdb008c68de85ae361b6a5db205e547583159fb2ff6b13de820a906fa", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "1dd7b48d46bb2ca5ada69bf64d3368f82ac105b5d7fcd6ee141fe5f454d8411f", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "604aaf3eb4b2996e4e6495117191ba93bca5bd7fd9cae719140d7a40bf1544c3", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "3c19c6265e8cbc040e1f05962476a5c5a896d1117b9dceb5eb9cc518a61b0ad1", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "d73b75009c904e32269d551235918198efdea1fdf74dd00f3e2b8f1d5420ef8a", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "651cf401be4da9ad356cd18365cb083d1f299aca7f2e18c3235a8f2889da123b", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "4532471cacbbe40c771fe9b4671c523744ad885b97e1fe02085538f3e711b076", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "cdc29445eeb562148923662d179c257fd03024886ad30e798db4406e3502fcd3", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "75796650dd1cad4da684981643db93c431f7c77e323c7a6de5d87efacea2da6e", +"TT_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "916cae3ed2b231f27dc9620ea8b81427cf8a0cb5481998010db69478c86145ca", +"TT_es_bitcoin-test_signtx.py::test_attack_change_input_address": "2b41bc49e30581645450e231d2e62069b855bd30d7931c23efc5d3bd73258dd3", +"TT_es_bitcoin-test_signtx.py::test_attack_change_outputs": "067953ecdae295688ea7fda59ba3a90b340a192b600f9582cdd3f6b064f30fb2", +"TT_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "5727dc8ebe6db298320b24bd5dc6f2643c465aa65ef23ae968893e5b0662ab43", +"TT_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "5727dc8ebe6db298320b24bd5dc6f2643c465aa65ef23ae968893e5b0662ab43", +"TT_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "6394d40566a35fb46cf7ca78a1ab90e3bad84a82c974494917f9d767a32cc1e0", +"TT_es_bitcoin-test_signtx.py::test_fee_high_warning": "98406ded626ba36309b50224d48ab1bbd4a75a81581b84f35727c15683c902e7", +"TT_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx.py::test_information": "6c40fdd6264ab4b397078873b8335782b20888d9720f29952581a94a3891587a", +"TT_es_bitcoin-test_signtx.py::test_information_cancel": "da0b4e92a4791910f6b12a6edfbaf67141735e6d2e789d2af8fa46202d8b888e", +"TT_es_bitcoin-test_signtx.py::test_information_mixed": "3594b81de5599c7e589183fbaed36945ef6dfca5cf069d7447bc62127f9a5d8a", +"TT_es_bitcoin-test_signtx.py::test_information_replacement": "3076771b7d6bb00e5a3e7371df008d1c9c615570d53cc32b9e236b0547760e9f", +"TT_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "3e90b4cede68fb2804f10abd9e3564975b90ca345a860716a0de10115146eb47", +"TT_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "43e3a01479d0a5403b034461509da65235fd0945012fa31a0a9ff7b4533e0475", +"TT_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "009b533161ee433b472ff661d1a0a0714fb736d0cf8daa9f20064eeb50b1f0e0", +"TT_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "43e3a01479d0a5403b034461509da65235fd0945012fa31a0a9ff7b4533e0475", +"TT_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "009b533161ee433b472ff661d1a0a0714fb736d0cf8daa9f20064eeb50b1f0e0", +"TT_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "4594587f347a3d37dbd10b1d986d878a606dada4bf808ed06aa73e75dd961178", +"TT_es_bitcoin-test_signtx.py::test_lots_of_change": "fc5504469d1bc63a7fcb1fdc6613aa117e9f8a60f70baed8c6f04ca0c3a44d37", +"TT_es_bitcoin-test_signtx.py::test_lots_of_inputs": "5c91c77004c73d45b76eca3aa1e1d3dd538d22964b0e64466b6bf87fc7d477fb", +"TT_es_bitcoin-test_signtx.py::test_lots_of_outputs": "6a7f781047f0ace3c8fe892b8a2a28ba8e1a25e1b6f362177f6840f3ff43fb31", +"TT_es_bitcoin-test_signtx.py::test_not_enough_funds": "2026d31934cb703d52085e2b52e1bc9b1d67cccbf4b2b9e7f8d4485307df7439", +"TT_es_bitcoin-test_signtx.py::test_not_enough_vouts": "38798ea4e94c08206ebb1715d533bdc1da8377faaf72865fdb588f2b44b86498", +"TT_es_bitcoin-test_signtx.py::test_one_one_fee": "59a80b1c1d3c5f11a798f395e6ec9f2ad25ec96d367c3e5a8fff5b221077f01b", +"TT_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "062b5c254da25b141f8540734864d02e10ca40b941edfb2ac67a0749a61f3e27", +"TT_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "b77b19380f829f565cda1af14fe64eeba6ee574da2b7a36ee3a1c8abd5035a98", +"TT_es_bitcoin-test_signtx.py::test_one_two_fee": "30dbca1409888b31180264327f9328a6ccf7d172ebe6c764572d75745823e52c", +"TT_es_bitcoin-test_signtx.py::test_p2sh": "98067a0d5040eedf6f54d84316748d0d6a083d5330934bf9479178200810193e", +"TT_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "75aaf2acdd7aa82643f4d73cc0f26937b415a0c4db99c289980caba380f1367f", +"TT_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "75aaf2acdd7aa82643f4d73cc0f26937b415a0c4db99c289980caba380f1367f", +"TT_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "75aaf2acdd7aa82643f4d73cc0f26937b415a0c4db99c289980caba380f1367f", +"TT_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "75aaf2acdd7aa82643f4d73cc0f26937b415a0c4db99c289980caba380f1367f", +"TT_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "75aaf2acdd7aa82643f4d73cc0f26937b415a0c4db99c289980caba380f1367f", +"TT_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_signtx.py::test_spend_coinbase": "ed4f04712a32c35c2edc9b25ad50706ed258360d775a4353f169e3c95871b817", +"TT_es_bitcoin-test_signtx.py::test_testnet_big_amount": "297bdedfb545cb28ce3c0db7a889d4353e0755cbddc19f7ac8b0fe949a7341c6", +"TT_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "4887b6ae417509c36bc0901da05c84192a149fe40ad0e81bf5fe99494a929e6f", +"TT_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "5727dc8ebe6db298320b24bd5dc6f2643c465aa65ef23ae968893e5b0662ab43", +"TT_es_bitcoin-test_signtx.py::test_two_changes": "ee185023b54d0e9e3168dc8ba98ac43a0f8f000c5164e0f641b20ab82f0b0e27", +"TT_es_bitcoin-test_signtx.py::test_two_two": "1078ad7e85a259679615e0daf7e665e5788799df4c31ddcd6330c0255a539bf7", +"TT_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "59a80b1c1d3c5f11a798f395e6ec9f2ad25ec96d367c3e5a8fff5b221077f01b", +"TT_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "71529c1b9cec31c2507c34332aea1683b2d7a598d86458bda7366d446ac4d871", +"TT_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "4169813e60ec2e69f80bf22997cd196d8ff97af068585d7011fad9f385912785", +"TT_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "45d116062408ce91009caebca93bc9da649e44236be0e4ed32ac8dc0dbf9e136", +"TT_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "59a80b1c1d3c5f11a798f395e6ec9f2ad25ec96d367c3e5a8fff5b221077f01b", +"TT_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "4a5af8ebd7f2ffdd74c0c02f43c81fa38148b2c6cf45e955cdc7f10c399c4c7f", +"TT_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "4aec738186d052e4f934b925fa3bdfc307538df813d388d9aa2d19644cc0ead7", +"TT_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "46cfe124571584c2307dd9b7eb32aea0161369b4d6060b4fab4ee436417e3e39", +"TT_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "342b33b054aeabc6ceb0772b58951ff4207a178f7919e4541f5a6c0233683d39", +"TT_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "4a5af8ebd7f2ffdd74c0c02f43c81fa38148b2c6cf45e955cdc7f10c399c4c7f", +"TT_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "eb6ecc8668b71ae80954d4c14112f4598b0c0226512c007cafa37aeb411701c1", +"TT_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "303c2141b5c32adc22e1dd588528b3b475e584118dfdef0996167792e8e4c0c8", +"TT_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f5fb650e89fc596e40817322ae06fb5f18b6249b95681a1d3d2f56a6c26f1b88", +"TT_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "2472036fb34af91f7a49e7efdaa89806cf2cf4ee2fa0e317a6a74f2df274f717", +"TT_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "8756424abe4b35321e0c98c8e3fe5644564f827fcb032a41e618197987696e5f", +"TT_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "0a5a122f350a27e0b566ed83abbc68acea33997e71a44fbb19b8fc9a74210163", +"TT_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f078a011c54da55eccec347ab17d8991b3595e8399882cbc0a8a8fda568bf225", +"TT_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "3d4bd021e4c0c85206935571d82a60d5b365187d30f89a144de578efa4fb8840", +"TT_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "b387129b47281ec156142531ad77107579695a8e25f1735ebad198ee837fe95a", +"TT_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c8551d4f753cd651bcf00145ece904c2ff69b7c38e5024d8eaccdd815a9fbd6d", +"TT_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "8f5bb75ae47d41af87bce625e40e48a2b120ce69bd7f34b1d19ca6a21cfd8865", +"TT_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "5411f22b1ede775a3a610b7ab4ef382106b266df0428170eda0de31a5ae08f31", +"TT_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "3b7a361888e99eacae45aa0f4d0f27ad55b85f538f5d652e70e8b0c8087c00cf", +"TT_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "575ea945439fa7a4320710cb71599c0c5d6149bc4c3d7c3adc1b8a7c1ade7cc5", +"TT_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3b7a361888e99eacae45aa0f4d0f27ad55b85f538f5d652e70e8b0c8087c00cf", +"TT_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "575ea945439fa7a4320710cb71599c0c5d6149bc4c3d7c3adc1b8a7c1ade7cc5", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "b11624259039749473a7d858f7032b82f2282d0087e4d467135f21780f6c3830", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "95aec86f04aa38dcb6cdb6d8204b5c7b8f74941c7058fdb8dd46d52690d99bf6", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "b290bf4dbd5a32f7d189ce568d7c9e081e29a6694f5b3af79915deb53656c959", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "20c1c9a6b78a64d79c826443b8299f5ca83b7bf325244dca8befa13495acf62c", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "022c68bfb5ad3a27ec290f32a55063b1884ab9b50a347c49896d342ef2affcbd", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "b2b62b21d55b0dddfcc7b63983c47bd59f7f4224896133d1bfcec3ce83ca0e35", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ef6d56c80cc514f0f1c9f0f5c5db3d421aee51c16f93622e693aa34b5d4697c5", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "308a851afc848b27cfccc016fe5a95c80ee48848eded496561b49f98c85e9660", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "c0cb473ef0aef3dfd087c66f6604a04c8f1ce6b05f4cd285ceda45653f5a0e4c", +"TT_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "c7958a67ee9a46539c375c283a5e63f57679a61ad76c0084ab192e3fe3e79aba", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "73744aa828d5eda792d26a35df4d2ba3c26f3aba9c1a1a4c567987c7ffe23d10", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "73744aa828d5eda792d26a35df4d2ba3c26f3aba9c1a1a4c567987c7ffe23d10", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "73744aa828d5eda792d26a35df4d2ba3c26f3aba9c1a1a4c567987c7ffe23d10", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "73744aa828d5eda792d26a35df4d2ba3c26f3aba9c1a1a4c567987c7ffe23d10", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "d0dfceec0cee5c1ed45b0f9f6eaa8d8828b2a44c34a088cc36277c2dab19bc77", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "d0dfceec0cee5c1ed45b0f9f6eaa8d8828b2a44c34a088cc36277c2dab19bc77", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "d0dfceec0cee5c1ed45b0f9f6eaa8d8828b2a44c34a088cc36277c2dab19bc77", +"TT_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d0dfceec0cee5c1ed45b0f9f6eaa8d8828b2a44c34a088cc36277c2dab19bc77", +"TT_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "c10c06851f819924f49271d273a9863d11de8f63044104f5caf1b9045ddc772b", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "cf16bd391d05ae2a0a2d3dbd8b1e3c34aa872fdb17ddecd0799c83594e56c3a2", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "c206454e8d1b7f324cc2c8f3a882851e19a224b1f90bfc4d8ab8bfe1f7cf1758", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "c206454e8d1b7f324cc2c8f3a882851e19a224b1f90bfc4d8ab8bfe1f7cf1758", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "f88c307cef4811a52dbe7419ab9c22d15f529fca8e8401b57af2afedd768094f", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "2efc381154b9c842277a4c6f18e80727ed33150345dbe2d18d4ccf4b26fde837", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "abd2373702c9c52da7007dae4aca8199bd94a41876a6a9b509431bfe62a30585", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "f88c307cef4811a52dbe7419ab9c22d15f529fca8e8401b57af2afedd768094f", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "f12d1e4d1297277252b37babfeddb41f78efbc2a88a84fb9e213fb536ea470c2", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "59de933c5e9c7c950de5efb933717da6f7fe87282c89496f24c0cb4381088f53", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "59de933c5e9c7c950de5efb933717da6f7fe87282c89496f24c0cb4381088f53", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "59de933c5e9c7c950de5efb933717da6f7fe87282c89496f24c0cb4381088f53", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "fda6d3841834e08b6ea32baf6e8d521046e321a1eff400f06001c453d364ea89", +"TT_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "59de933c5e9c7c950de5efb933717da6f7fe87282c89496f24c0cb4381088f53", +"TT_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "f58966a2e548822df0e326eb57fd8ff618ab0ef7f554ec33ca12752dfb507a82", +"TT_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "ebef8a603fa72f7f7f64d292c29584b8b7c45ae63010e95dfbcaed2ce4455f6a", +"TT_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "a10df9e19762f61cf927e396b8b98cb91a9e44caa2525d875ff89cf62d8d8a62", +"TT_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "7af86ab7a309ac102a881fd452166a238a2955f2ec7ac72fa2cc795b5122a944", +"TT_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "ec20211feab6fbbfa3c6764e73604ecb92128c7f1fda07a5b95b55e3244bbfae", +"TT_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "8e041fb72cc26c39313497fc01aad40cb3c81b053e910a2ae42ff47f8992f03c", +"TT_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "2dd12ae29bc92da06027083e73f3398b5d01db556c68b92ef1d2102a115bad18", +"TT_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "1092629faa64b526c2bd4e7e2f13a160341be4e2e1722235173fe7a334a0f0cc", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "dfc2d17a796252c2787e845e6d05346fe3035cb943aba75286070c2c18a83db1", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "65b64c79940beeb3a66728e39981588ae68cf6faab3b186121750b0c65b9b2dd", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "5497bb16e540e3e39f88d34a8aba8c009a8aaca564589a6aa38f5246d2ba4e8c", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "cf67349b3db62773bfa4fd904daf6e39d1d1de4177852fd60e2708f59667761e", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "ef44d5b2036c766103973f4b66635b682eaee602ae48cb1ca2e373f1a73647ee", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "bce22c798b76adae475f98946df5f2922b15bdb2949af9c2563ad804958cbbe8", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "4a5af8ebd7f2ffdd74c0c02f43c81fa38148b2c6cf45e955cdc7f10c399c4c7f", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d6fa8c76091abe021eb29e3578fdc0ac2833dd9b59d603f5a27865017e58981d", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "0895ebdb11fd3cacd50c6d781b1a3c5103f8d8195f356e4cb981042fe982f8b8", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "c9c191cfbbf2acccf0079e7f38999d7d7e6d82926217821ce8feec6921b1414c", +"TT_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "f3b7f8e3f6eb30eabbc5ea8f6517a2c1ec358939f71ad63dbd2f4aa3ddf34fc6", +"TT_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "e946d3f5c3b2492ba706130544fbb9aaca71b2371f4e3c842a348b4cdda7911a", +"TT_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "599ebfe7528002b0cfc7f678bd7dc964cbdda8869a9f78b69333b061b46f35af", +"TT_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "2d43ce485cad37e9577bd1566b87c3af6697db4fec3e0af967cf3af5822ed86d", +"TT_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "b3be085a8d88a61e1144b48e8a3660930dfeddf8982845ad8096c8e49736c16b", +"TT_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "faaa58632c49288cc32c20f575092bab9eb005424b7b4861d2ac32766996f4e9", +"TT_es_bitcoin-test_verifymessage.py::test_message_grs": "569277e888daf868968e8170a1d7b972e844d525a6444623b9a7e90dcb6bba83", +"TT_es_bitcoin-test_verifymessage.py::test_message_long": "c20ac7a8f1c632d024a9bc16fb0648324c8371517a7248229918266e150accd1", +"TT_es_bitcoin-test_verifymessage.py::test_message_testnet": "bbeaec3bf824715a892f51fa114e46492707100ebb195e3dbf7e7ef9541606cb", +"TT_es_bitcoin-test_verifymessage.py::test_message_verify": "9656cdaaafbdefdbc6b3abfa1d8c54f259e7d6af92afda1b4abb53fefbb8063b", +"TT_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "311b67e5dd6fad214f0de1b937870a3acf1af3890d6f4824f157f4ad63c11f58", +"TT_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "72f3dac42f221c27a68000ab09e335dca1c57aaf7725a984c50b8c9fdb4dc043", +"TT_es_bitcoin-test_verifymessage.py::test_verify_utf": "95d37fb0f761cdbce9f13f701e5803d8510d0ad8ba708ec744feda0fd0bace9d", +"TT_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "c19c4d8cbca5d844b0e0cc8f18c2ad9ed4b088c8b649879e565e340d12d1ea42", +"TT_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "88c29da7fc90e9c797c3f3e252d28dee474d469c73a9ecc651b9cd7163ebd0ee", +"TT_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "6828306031b442266da5c88c8225ac9f054a11fd9f138c477c4e9c4452ddcbdf", +"TT_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "b0d44b9827bf90a8e71f8699bbd3f47d9d135ce3050503bad028a8ad1e40ff5b", +"TT_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "a953d3a251e94e629d48b6a85454c258705e59ca1fa73909f0a0137840ba001f", +"TT_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "84d7ad24a352d8eb68f179ea870071613230a9d0354c5b84155f92c4390bb982", +"TT_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "81069cc0d435ea81f8b0a0da860bbb082b67139847826fe57644451a1f268a14", +"TT_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "7178844acb6b371a144355df65bea8a840172f5f2f7fc2c798e26a0e16455c6c", +"TT_es_bitcoin-test_zcash.py::test_external_presigned": "f8ef4e6d8e6b2a0c3469d6fa3d980b4caa9e9a876d23561ea296613ab70c3b92", +"TT_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "e7b34211d4619ce4c39fdaca7017d594e469fd9ae80a64885eaa76d60aab7978", +"TT_es_bitcoin-test_zcash.py::test_spend_old_versions": "6e822ba08eefe6c165e7db8b86f34b12d5ecdf9f8d63755b32d18d640eef372c", +"TT_es_bitcoin-test_zcash.py::test_v3_not_supported": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_bitcoin-test_zcash.py::test_version_group_id_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "7cdd6760c2abc98b0f3a61dc849b407ffa9a026532dd963594b6e5045a60d7a0", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "3a25a34e22d37c5ef5fbaabfedf8b6a90c3359871ed03f6be429d0fc090b6069", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "a79ef6f3929bbb0c2c0cfa15bb44d42c2386d8ad1884551afcba9b011cd72be3", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "6253e3ed83ad87c9f36364c52f3faaf03b8e658651d62834d5a7c6fa60df4b61", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "705719eb9aba743b72d2409ad865db4c07b5d249f0f4f172ef31011d3c69c0e1", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "4e169631308b9021d9ce44f0f3d40c9817dc614adc643fce3bc9cb4469871235", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "f050a7bf885a8a00e6ee04e02fa35d22e3570c7af179ac82547af438271dc0cc", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "8942fddeef43b0687c55fbc4fe81644069166afa708fc6dea633485aea75dc4b", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "f6b126212e4558e3aedc8bcf07575fcb0d24a609ba5d8db35bb617ccb3e49e6f", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "4651435a4c5d38c2cc19c9fe07983441bc1e60b846915ba910405e38761e0615", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "93108f42aed16184ca14965a634de5255d08702f8750727d6722fce7a9aaf82f", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "e74592d09a624845259065f825830e2d9d29b971ff096d40df7ad9da21fcf35c", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "31a6bbdcca12d998d57ca71e0ca0db282ef80aa4294d15337322a639171081a8", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "e3c213152444c8b2b0a1ff299abe52d9682bde150808536c45c13eaa322ce44c", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "876f1b31f57789f928498a06eee477a4a70c4e0becf817416a844891b4337558", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "599f3257b2b9a4e210dd63bfc29133eb01d1df05e659ec364397ee5b5077c0a3", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "6f5f62d4da05e242af09dc3fb0f5cb83181783fe171b3026667fcc5bd1db3d4d", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "2019bcf425b39aca2cb7c69828bbba3371fd619011f4fba65c98adc43951249c", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "cd3cd19e063e7ce51315c3d11d911ce636abaa16c1590f02fbf7637435f76b85", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "eeb99d09255715edb417fb2185a04b5940f8ed78fdf38a85fc2f32e38587037e", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "1fddcb34456ff15d09266b8e507c7dd60412d8ec37b910ae540aab97e9ed2310", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "61b3e5c0e4766e4419e0aec775daeb5908cdd59972a3aa0c30a2f9a3aa486b4a", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "8cce7f34660d24c99572388026fe92925b1f81028ff0d811361216424cd9500d", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "8836def97c2f8383de66553119b2674b0c95ff947b58362d03c8e6b77d753f89", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "b7ee32b5f6bcd274ce699be528cd068a83240c9082c98de05545a10d8f64c4ec", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "37286179c99b60b19e274281cbf5345ebded92b155af2941935330cacb0f29f7", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "4b4cd7cacb294aaed40f10c49376c44f96ff2128ed9034d687065a5182c6c3f4", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "11ae4fc54714731370f03a9563472f439fed5653c39df34768e9d3cd65eaf150", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "19ca11b6903a665479301a30a2f1c6d5fa058e75ce900815ddcafed69703846b", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "0331d5465a9e02ba01ce503baa8dfced6f455af57f4814141c273d2ba78612ca", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3057cbec98ae9743ffc7d700c5800cbd42d5e25e9e52f500189d11ea524b6f68", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "7e0d7e53e422f79f2f883f6ca2cde67f3c1268db334c8f502ade5742835bbb1a", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "ef8dd63087eb9e121a78ed726c2456273cbc266d8a360dbf3ea10039bf49e837", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "cfc555e5a11be395575e7b7b36412a4590c8334799563ac958e501b398e8c715", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "08c279bd40344b3a515014ef0b5767b5886e7add2a6609db9dd0b8326fa844bf", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b76bcb9495505ef3a2f28d9cd7cf87aff22c177ffb59d0dab69025a81e695d09", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "55fa68282fc31d5735eafadfcc7e4f4fd5df8dede514babf5bc90edaa8648e67", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "273c95ccf2aea049699930d16e4db5b10abfe20102cd71a007c6d3fa90b7afad", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "b4ed11bb57b10ed7e6ce209c9491d91caa3cc4beb541f5ea0b415684283ce4a1", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "cae8c253dd25cb32e83be0e97be9c9be13dff482b80605ffa8f90d20fdd3c6aa", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "076b4cb6858dac45512000a74847727d9108aefd9bba6dddf44729f02abfe392", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "a86b0f1c2ebf958d28ca3ed06e6a15d1c1b8a5879ecc4fbe54ac989d79f36bb5", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "3a7e688e21c39fd849bb1f61f5fa8e9866e3ef5569e5f13822b07791ec10893e", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "4f40a37af0f24eb8921be6b43ed03f3b979d094594e54815f03a490f4d7856af", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "9450dc0f19c5a1f83eedc5fcc8be61d4c727f270c73b38bc9956b6f86c97546a", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "419b26007a4494abfd46ab557284cb98bb668f07e688e970151d640a8662ace6", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "6e0cf2ac668350c09d28e9654aadd1cc52db1fae8e540907cfe6344351df8065", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "ec57b8d63c0690d3c72feedc8b53c43bad925368ec0afa28ef349f61f74f1cf0", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "2a572fb0f9730b2c778ba894bbf7db0e98c7a43c1e08e44c454def9e9097edc2", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "b484130fe0d36a209cad319bf9d6e1ae5702e44c4f5c250dd53de850581d4b61", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "bce6fed17794acbadc12c5ebdebfcd8429f7a14bf13fa9fddbdc08fc2c303e52", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "32ba11ce11e74dd42db5ed636785475d50e5a531316d83d0a3640d8ebe65e64a", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "30ef0aa7b68ca82f6f60605144e5de2a85cd6bd15eb045e365581dd078be583e", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "74dd7ee959ee88db6937e254f3dd85e14665519b8d9114cba047dcd476406b94", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "152d5a6ae29a7f88d63795133b7e298c880155b634b87e2b6215c5ad996e09fe", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "a6e02d704850eb225380c3d8e990b999031c5b41337e8cf927fa9aacb9b140b9", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "d2e167589ea694afa8063aefd477b2b1f0030155020b69c8856d692d5531c298", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "6075f1699c5efc2c7682c347bcad2c741be739655afdf1b1a8a799ea2885d922", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "3d42dc76f483a1f2af9c65380005655e146f968b6e2bf0f50a9e4d6a64cec1da", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "97f6f6bea048652e83867c09649f6c10e360f7627016b576f2f4fd78b96cebaf", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "44e1742c2373f33ca5d9ebda864a73c9d18f31c83cb485563e20191df33fa0ee", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "61b828041b191f23031d600d6ff1dcc9ddcfe86c73d17004290206fea5c2756c", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "42a279a8df061d0bbb9a49efab2b433ba530d0318e080119f21046601b58662a", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "7924137c373ae1dc2e4a84fe0efef782e292d1ae51b790eeef2597a6191d205e", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "10f25ab38bddbfc509336eafbaf0933c6f97ceea0e4fcbcf8f0c90dd5d0b98b9", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "f35abe7ed81ccbf0e5cdbbf74f026da2e25095cfa20a285f2c36aee445539887", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "628b22ed617f6601477f09227cd12508f91edf5f9771f2e804bc6fc65132ef8f", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "f4d379999e1d86edcc9428ac3efa62ea73e987c734284e76c72d71bddcf47cf1", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "da31451570ac9a84895b2518f66970bcff5e19cd58e95797457da4bfe9e8cc5a", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "c9f595a1dbf1d1d1ef9323f37e337db1a11d5da80ef105cb64902bbeab87ea45", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "940973d5d62ba187dcfd05399fbc4bb04c6fca024b5047bdc15ce0b02b3c3c16", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "d6ae3dd39569844882b8b45d4ff3b91ab5bb287ef53a1958bf92bbe3bc0cc4c0", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "953c29d0bc180f7d219df232349e04f02804b22f761dbc713f9321c760f7b7b0", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ca547e287f16d3ecce20778ad15b56a0215eeba51def64ffe4fff7469c958a0d", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "012d1cb77caad1090e60f58954e29cbb436e5b1553df04eb164591e538871c7b", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "13c4c924820f99971e7001b85d5fa13fc46cab5e0532e5c247a6379ee0945bdd", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "ee105ced64ca650d6bb1410157e0c458934dece09c044abc279d4da0da2f6b81", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "a341ac0f23e3b4c4b703fbde99832d2ff2ae609addeb9d7643be40a14847bcef", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "b6e6d7265ed2ca59e3f8099ff111d4f144eff0a4a733cb49295668954e47b851", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "cd25d500441145cdccc7245a596b9d52116e564ba4760e768aecfc6cc2c54ec2", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "7f73b7388966d81a9858c1721178fa12254ba0282acc42da92a191ba0a4a68e1", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e7c0f715dc6843e432e4320ac13fd4861ab018fcc3a9226b4614fd4056d9c7e1", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "0b3cdec4e0bd323b0dfe5412bfc121009f23dcd8efe81aa5ce144ac89d7a6a28", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "e2b3cfcb5245cdbb79638fb8026dacb087adba67308ddad0241fad6ccf51d800", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "dc920d4073484dc1c8b8d1284bf693ae79ec9b460742731f15c1dce739c539ab", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "72ba32e4dd3865620647bb198187626de2c20173bb40f1423286e722d55ebc72", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "6a4aa321a038e89bcd9fff8ea884eb82893cb2d819dc36c491f0a9db4895ba33", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "8861ac95eb0ef0f29943a5e3fb77556951244e52005c2e62b488d2ab1596deab", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "78b768fe4420d8821e142851f0336d9890916d40775a782f41c9988e3c84f381", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "1cd5f872cf2d6425753cdbd7c3d1457f76311badac957bba3c45bb1de47ce7a7", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "44ac29ed2d800bfbc7ed539cb617bda632a3abbae86577f6a57933bcca53cdc1", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "ad4cab9fdbc1168976a4cad18b28336c8571596d0281ff3b39cd0fe085a874cb", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "23893da9d2347aeb80de64abada52a05d3cd0bfdacde24c8fb6edb83127be71d", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "6bd4082240759f485de2a0bbbd8a6535598d9a1cf7347935a61ff32e38a62efc", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "82916ef792f5c08e95a2383fde9316914d43b6c31df5a4dff0f8c908d70df151", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e6efc15628daff50f2eb173abd9076d794217bcc695235d58d6b48cfda50a0b4", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "63d939266d6a1fce1f0ea2d75d71a47b33dbee0b4daa98acd912e04dc8758839", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "38591b801cafefa4e9409801b459d307b456fbf8c1fabf97fd55835824c8f877", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "403b8c933e71c7ea65cc240b5f94fab39394da1cb92d0e2554525c28e8ae8326", +"TT_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f98f32cefdcfe10f7206bdc7080cbb473808862873d8cc08190081c538f363af", +"TT_es_cardano-test_derivations.py::test_bad_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_cardano-test_derivations.py::test_ledger_available_always": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "e9b3847f3a720e5f78c491b47551024d44e450ab1657bc4bf2a6751f33ebc230", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "d0e7ad188d6d7b34e3f1b0b770557d38bb36281de331f66173d481d33e2bb364", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "e79feedffc0bbc825f5bc74e33b2ea2037c5c070362fc433fb23a0ba6ecc5401", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "0a93bc0bc8ffb62138cb57d542be63a71d0dbf38ca12436d23dee9187f88f267", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "0ce8d2daced1aace077fb9d15d90bc4939176cb4064a1550a1543f207bd17c70", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "200f0ed4ec635a28b7cdfe87bcc3d8dbc721c7e72a2b5d89d1ef7d5ca55ff2d7", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "35ad3a411917cf7a51ad856ca5a4d4b37b7e7568ed2e8a61e77f6a625bc2c397", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "ea875f1c2609ccc700b7fdc3c634f87d6e5ac0358913e2209ab4b72967d594a2", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "37f3fa8259e80f116646cf79ebc18268669eb3b030ce005a6e4d8674acfd4ee9", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "5945f7e8dd35b0790652ccea8f0056103d8438d73f674e7e2a9490c6b01d7489", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "08fcee1c253e27c75b6e8ce502cf3630fc31098d5650dfd2098710ea6491cf8d", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "cfa2ce234d038557b9066be1672f4e16962b22b3217f40da87d7002f553235e8", +"TT_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "8aeb2a90155a3e78bede1123bca530a05ecbb3f91083a622366b7ad3fe988531", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "36b655795e8aa33fe5434f325362f323cb9f7c6bee7824bdb19db259b988c1fb", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "a04b9ff7ba1e9d139a7cf2dc3dfff85ab199054112e456ff4b0b2b3b7b7e7dfe", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "c3256b4594521fe662fa9fbf75c30a35c73b8ec6b97b091433a4bfbd7925454e", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "b21db34fd13e984fdf5b16a59f41b240c254a136169f68d83b84ef154c6352eb", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "b21db34fd13e984fdf5b16a59f41b240c254a136169f68d83b84ef154c6352eb", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "0cd7d7c0cbb114a7bb43757f1374cd3a6b799e224a85852b8096b5bd97fb97de", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "21c1d0d684ed6c43fd6afecb97f1aaa1b106c511572e00e76644b1924998d05d", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "66817d56ddef3c24e5f2a856c98586c18e8db1fc4b04f85c728f620b2975a468", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "09ddb38a197ee11127fafaa5db48a4ace3e78910cafd6fe5040292ebd7c0ff33", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "c83e897a7f80af96af3aa8fa810eb8769770bd1925d7e272d517999ae6670eda", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "045ffc2bc3bfb1649262c11f63a427c4eff23640e7bafa4d953f3e53ddd20219", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "5ce52a6e954d53430509bff2bb9e0a90192e6c69a69771e2b906741bcd158f04", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "9b1652237950f201ed9b2c5d1a8a863d0fade097000d280f0c9e5f35c66906b2", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "4fab82a3f588d3f1b61fc9e6060ada6f6365948751bde54438658f0bc1a48da2", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "4fab82a3f588d3f1b61fc9e6060ada6f6365948751bde54438658f0bc1a48da2", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "b8d93264b1ca9c339da96134ab2ca8b8aa8525b266d75897b819d3e22ab8ba13", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "47d9f52e6ff83f4397c5d5d3fad1dac4a24462f98ee40de0a847fcc44e0eb660", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "b3064d4b959d5d00622e0bcbb5423cf3c80bb99113d3b5a0ccb6a8e8e8591d2f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "53a98209138f28c9b6da9a0803e54760ba1f75476e9ae94d73682cb92b4a3fba", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "753b671d99e20c3ea69c3e170ba50f36e5852ab6b1d3604f51f637aa97cdea6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "6ce06be828693d632e9d5b413fdd8e506176d5e4c5a993bf7c8da62191c11777", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "5383fc1869e91d3dee263559235dd70fb3be4c91d4eda4e4650b8d86a70609dc", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "bb485b9cf01059d2d0fed4d5ead8d3eb13a74f3b840a7cb5e11ecc629d463998", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "b21db34fd13e984fdf5b16a59f41b240c254a136169f68d83b84ef154c6352eb", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "8b022fedd2c89b00d10bfe28aa304f97cd09905c9e81fa998a6526cfca4729b3", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "53a98209138f28c9b6da9a0803e54760ba1f75476e9ae94d73682cb92b4a3fba", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "d5afe58c9fab24b06d1b47e0124abe503cacb233a7692a7153b147c61350a579", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "6ce06be828693d632e9d5b413fdd8e506176d5e4c5a993bf7c8da62191c11777", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "5383fc1869e91d3dee263559235dd70fb3be4c91d4eda4e4650b8d86a70609dc", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "29e963a5321d3a8fd051bb953af57d9d274e57e680ef18221dd2e60d8e9b2d80", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "53a98209138f28c9b6da9a0803e54760ba1f75476e9ae94d73682cb92b4a3fba", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "41a4512c1c96aecf944761052cbdadec2c159b6ee3db3c8ba21b6b19c55d5a4a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "e3dad549d27804638c3528bee7908735c4a1a6bf489663fea9b87c806a3a6d31", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "3b28c1329d98b0860b595ee324ea11c397da4063776c4d8adf99cda2e185059a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "7954b01c8f4cfc9b0c677e184f4aa0c51d25c45e3068f71efa2dcd1d66cb315e", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "d49d2084c69f8d54753a25fa6fa933508d7b973275073ceaee41f82f5f11ae29", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "a93051c4a4c63e0f548f49e6a27bbf32f04d5f204035de7c4f301b04c9a9b0d5", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "1119d235a1fbd8edc9684179bb3d58461933a49f822d48053aba6cb351e402f2", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "93db21d5f6cccb73f44f439a15f2a3e41f802c61633f2475cf1ac76b26903ab0", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "e2fafe6d967e27db5e8f4c31786f9fb3e0863efc74a0b92aa0aa5ef916cb5b2f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "3f8317f7f6cbf6c3d1dd7ac580b6a8114b2c6f3696068413e85766a26998c682", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "dfe949600ce4933b7698410ada8ae69af52e5173daff83c9ec11e94d16ac2f82", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "17b8d4135f63df716a77ab320157c3cb727be439fc2de31ee77cf0c0fba7e19b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "9d155d73e89040c5e8e9d804c2faab722da82d42a7e404761380965dc252d449", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "27b4f63383bbb5cc9f77bdb04bbfbc5c182111fe2987ba8ee2ec99506fc8fe33", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "9bd2f3bfa8aabe71c063985804ff5aa527eac3bab45eca0f71b8a197c83d4502", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "612ac960c83c56206349ec03bd3ca43ca0ec1478601cf040ffca215f2630987d", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a87e1d7b1b3f9d5f0924dc1be0ae424aaa6cfc61d91bb092275f3b1b88b91621", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "3d51c77e371913d5c50a841133d6193adaa59d212e7bdae3fb16c563de9de9ef", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "e82d0ca272ac408025c4a97dc9e70e01a72744a5ced421ca8fb900f49398fa93", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "fb634f3c83603516e781340ebf3e35ff9c7f895c904e2b1d896a4297608e7193", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "e62590dedaeb0a6c6c89605457184c8246e6bb020371cbfa3b2c25dddec489ee", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "474c88d0901b1a32957cc6a35e72a92b196782d29926f74b1bae7d7c78c3a07d", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "474c88d0901b1a32957cc6a35e72a92b196782d29926f74b1bae7d7c78c3a07d", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "b40ff0a8886a6107c99606e54282da18b73a3f1b2c4daf621fe9614a2aadfcda", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "7b34c6d7e318e9900770b10c6abeb02c6e7cd6464e0d24d9bdfc41618d08529c", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "edadee1b21e94ae81154570bffddb6ba07057b61658619a5eba88fc1893dc2c2", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "1f480a0a732a21e7c3c2fed95607a3e1fd33c5ccbc1272bff12d6ce52138135b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "62c25434e7858f38f81054d30c89a06e4bcf5e0109f85952de2d4aaf8efd742d", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "691bcd35751ced9f7550746fe34f33d09325f71b475cc3cdb012551d32625904", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e13cb6ddd4b145bc4fb2b848d259761d61b3c69cc44d39bde590f2b065d70675", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "979b471565c3cfb4b2ace673d306fe02d465489eea2290584740dc9796aa8580", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "53a98209138f28c9b6da9a0803e54760ba1f75476e9ae94d73682cb92b4a3fba", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "099870a2563fceb61068a2ba0a60e30b96155accff6e2946754a7d50452da28b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "842f869a1fe72c5745bc8cb5898542279bb00e12097b55b2d64fa12314151488", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "61f59b3badd242a3b1e0bfb57408b2d93f8d90d4b9a8f1b0c622737539a380f1", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "14f49d48c4741667745d6b07ce6ab92032204bae3d31d045be017afb5ee881f2", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "f124ea72bc12924db147bba809fb2bd70909d47862caaf5b46ca5eace18ac801", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "704eafa8c3ded6b33cedc7751e2864969fee2f08fdf4f137f40ee196b987443e", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b03969c74f6e36842a73a2c600a05a2032a77d23227edd25370cbef6f157acff", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "53a98209138f28c9b6da9a0803e54760ba1f75476e9ae94d73682cb92b4a3fba", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "3637ea322fa4e1d02d49d01c4d5569fd9dcd4242d2524381654c2e67d9d8eb79", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "dfb2ed5f10e5a5dbf1620abc7533e220be86294d4f2319aea703c0a6aac8b86e", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "60d86a6029732f85f4d333f46eeb9aa8d0f36525ad5c36f490da83c7efc3dd06", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "0d1f54f2812f319e8f4447a5f4e56d177279d8f45147d1634d97ba3a266e3544", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "37c12adbedb549c70b1713245b6449d4db310d526e0fe94bb1dddc0de683dc68", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d26e1f2bf28562f030e7e02b8dcd297396e4eb218ace96b8208e23e76b45dd05", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "92d49bab3b6e3c672316d7b9c9e55c4d3e6c9995312a173683f49ec822262259", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "adaf91a28ca85204f94a1d9fec8a9bc52628927e900cf47e07137dee1acf2619", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "aaae92655e336cfb7bc5be20ccbc79109799cba105f4a5dd719a6cb6f3ae0718", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "d73b498ab65e7c995f0d05c15fd82ff52a8906b74172026909b85a0ad3e2afcb", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "d73b498ab65e7c995f0d05c15fd82ff52a8906b74172026909b85a0ad3e2afcb", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "208bbe7f4d9a7ce0da4a0c2b5309106d9aa8f0cccff4d22b9b68497c7fedbd51", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "5c7ecab9c096e7548f06134346bb5843acfa577763927191e2396717e47d46df", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0f8db83fc49244d4361d7ec17e5ba4ffb38a94bd4a52a3c4d2ba3f0d701517cd", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "ea764d82daf4a637f9721e5f73c2e2303f0ca4cdbc9fdcd1c90048948bfeba6e", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "26a4fb08e0c943da38e871068640fa82ae85a9ef5a6f0fdb3ac2bb84d4dd45bf", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "4939e9093114c08977ab4928c7ed1d9db7097141429e2a55988e03b3b344ced4", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "b21db34fd13e984fdf5b16a59f41b240c254a136169f68d83b84ef154c6352eb", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "b21db34fd13e984fdf5b16a59f41b240c254a136169f68d83b84ef154c6352eb", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "feb18aec54269acd07faeedb6a300840e5fc4f5c7da700974b64c0b12e7f27e4", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "aa4ade8fe529c712d87fd928916fb854b9bed46b5265f01b241390bf3df116ec", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "84dafe72162e19f1cb4148a9c7661f427999dc95d21b0e7614243650636d7540", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "36b655795e8aa33fe5434f325362f323cb9f7c6bee7824bdb19db259b988c1fb", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "09ddb38a197ee11127fafaa5db48a4ace3e78910cafd6fe5040292ebd7c0ff33", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "6ff3fdcd46d966ab682be19e878dee1b0274fe3a1d19cee2f5c2be3892c909bf", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "443b0d194ee2de66688dcf3de91807df1070e12aa0ad0fe78a1b44e592523db0", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "443b0d194ee2de66688dcf3de91807df1070e12aa0ad0fe78a1b44e592523db0", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "a0788ba5ed8fb0de4c8fedd372e18df378172b373b3a76621bc66a90e39235ae", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "d86fbd062726107704f11f88cde7fef8e30670d5e7980521f41ea35d063be455", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "008d848e8e394c5b0886f15700406c8f421befd6f0c22afc4dd85e95cf93d564", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "53a98209138f28c9b6da9a0803e54760ba1f75476e9ae94d73682cb92b4a3fba", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "a0788ba5ed8fb0de4c8fedd372e18df378172b373b3a76621bc66a90e39235ae", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "a0788ba5ed8fb0de4c8fedd372e18df378172b373b3a76621bc66a90e39235ae", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "847a634f5acd0168f40157239574e610fb7ad21137a908d47e02a77810864c57", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "4104ad3c56feeaf0fb3dd9bd064859ee5b7596ea654be332b5f9dec57dca56d3", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "333a154a997754d9cc64edfeda49ee1adf65c19cccadfa604a695a9ee8881bda", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "9c287e6ccb9d05c002b6f879e18976400d9135ab809b7d70118d803321319773", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "2754dfdf61f778f3e4d8d671a7ce45cb8025d02af3217d6adfdcf57f606570b1", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "861f79e7c5922ca4e398e21a5cf829f0ae2c0e8b81209ba6ddb049788015bd4f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "861f79e7c5922ca4e398e21a5cf829f0ae2c0e8b81209ba6ddb049788015bd4f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "861f79e7c5922ca4e398e21a5cf829f0ae2c0e8b81209ba6ddb049788015bd4f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "861f79e7c5922ca4e398e21a5cf829f0ae2c0e8b81209ba6ddb049788015bd4f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "861f79e7c5922ca4e398e21a5cf829f0ae2c0e8b81209ba6ddb049788015bd4f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "861f79e7c5922ca4e398e21a5cf829f0ae2c0e8b81209ba6ddb049788015bd4f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "2754dfdf61f778f3e4d8d671a7ce45cb8025d02af3217d6adfdcf57f606570b1", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "2754dfdf61f778f3e4d8d671a7ce45cb8025d02af3217d6adfdcf57f606570b1", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "2754dfdf61f778f3e4d8d671a7ce45cb8025d02af3217d6adfdcf57f606570b1", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "4104ad3c56feeaf0fb3dd9bd064859ee5b7596ea654be332b5f9dec57dca56d3", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "6181f2da6b923a75a905bfc87428817f661120a744f66c25f9c84ca3fc8b2bba", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a2304d61dd375e4f0ae7556eef1b9c41d9112d920baa4c1707f53b46bd012315", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "55369384c9ee5354a23c8a51c42ee4350eb17bca063e0a8a209c030a85747266", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "ae47b2530e7df3f2b29d8e1b960f1c87220322ababb00cef0f7ec73ccb66834e", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "c388e24b03f44514cb5ab14ce2b0f9fe1e0ac59ec4bfd45fb49239822c22e257", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "510f04d33e23f5e1bcb34666c921897f018739f70c902a0847b7902ee4c503cb", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "b0f76c38301d691d1100fbcdada557f269e5c2d53b214e542dbb98272063403e", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "a0788ba5ed8fb0de4c8fedd372e18df378172b373b3a76621bc66a90e39235ae", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "a0788ba5ed8fb0de4c8fedd372e18df378172b373b3a76621bc66a90e39235ae", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "66d3a0f3916c2c81186ea9d93bdc89606efff537acf4b9f310c703d48943a143", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "3200fe68ea5d31345348e83db09dfc2b375f70ba3ba0597ffae7bb9f9cbb6956", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "04e219d5827b2a9c99829ab667e779888f8b4d0903356d58b984a15a87a1e1ca", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8e28341d821dbf04cc3d92ab54f662cea54c686709eff538a18942266f30d952", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "443b0d194ee2de66688dcf3de91807df1070e12aa0ad0fe78a1b44e592523db0", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "474c88d0901b1a32957cc6a35e72a92b196782d29926f74b1bae7d7c78c3a07d", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "474c88d0901b1a32957cc6a35e72a92b196782d29926f74b1bae7d7c78c3a07d", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "5842a798e4f52ad2b42e859a935f72d661923bd68a9235998ea1e911182f360f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "474c88d0901b1a32957cc6a35e72a92b196782d29926f74b1bae7d7c78c3a07d", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "a0788ba5ed8fb0de4c8fedd372e18df378172b373b3a76621bc66a90e39235ae", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "a0788ba5ed8fb0de4c8fedd372e18df378172b373b3a76621bc66a90e39235ae", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "7f1e8f444de11ab28ddec78c9c0cd61636185324514e2f49d141b161b21c9b06", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "78fe59dbfaf52b1fb59e451796e77665c6f21442f8eed40118d58d3e886b9c8a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "fa84869abd3350fd6c3c1456ea7e1654e501b612dbf0f1ed1eec087a15bc5d6f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "bfc1c3c85f72de96825d06bdf987fc1aa3cd57ecce0bd6462f8994ea7ffb46b7", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "3dfe0688e2c262d752ff4c36d175c43e2599f4ddc9c9a7ce8e592e5abff5d03a", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "861f79e7c5922ca4e398e21a5cf829f0ae2c0e8b81209ba6ddb049788015bd4f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "ae6cf6214a117677caa55e0079df82ec689374ca1e62796984ae6c5b3e0d107b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "014bb4cb61c99fc4f94efd99964c9bda48d9db3da697fc1494bc67a0f8e68302", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "ef40c5b3c6d319bb00bec095dc98b2e593fe227fa7dc7814163c2d25b7389d20", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "45cdbf385a9dc5cb6b05ecd26363a5876c3f62ddcb6b4664325ab75f80b4c4ea", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "fff856d6063038c6456dcb4b0393e60edbbfbf86617be6c5081195d1c8cc505f", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "bbd3f37b629c45d409890a9038f7bf4b5c1661f3c5e327b34e5931013e830c5b", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "c50edea65298da3da9fabd6cfa3a9083a42498c8e4bfff4e7d2fa63ec63b1764", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "7f76040a094c79cb16261e467a103f09ebcace5fd79367c60e8f1039d60600a0", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "2fbaece24e38e9d68527a59a8519968fda95bedf4bfc34974b9b340be6c42cf0", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "7287d6c9ac821dd96304d471d219dc2ab3c2340787f9ffb41d4b1bf2f9023fc4", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "715cd120fe30d586930fd9ba6b7b189d1cf29eba46861738609ff25f01308d88", +"TT_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "7ffacbe556b0c46a3e3d80fdcfa87b82fb8c62f6da08526d054db26135c230fb", +"TT_es_eos-test_get_public_key.py::test_eos_get_public_key": "1ca93200a60618d3b628b1166f153df8ef365364992a5291798c2d6fb87cdf31", +"TT_es_eos-test_signtx.py::test_eos_signtx_buyram": "c37579787ccbdac5931a0595e2ae7cf5a499282d62f39742218f61d11160b69b", +"TT_es_eos-test_signtx.py::test_eos_signtx_buyrambytes": "ffaf48768ac3ac99c7d73d80335e7c6c81d4affde9fe7db4b7e43cc823511558", +"TT_es_eos-test_signtx.py::test_eos_signtx_delegate": "630dfdfe7ae5604d61cc665fa91628aac4248c1a49f6fec0f34bb8e87f6a1bbf", +"TT_es_eos-test_signtx.py::test_eos_signtx_deleteauth": "408c0c0c22a18276c568c59b41014aabb8b1e9dac5dfdafdd157e19edadbc037", +"TT_es_eos-test_signtx.py::test_eos_signtx_linkauth": "dbaa201de1980279e1cf5c45117a6f48d80665e7674d909a1d88b471f16b54ca", +"TT_es_eos-test_signtx.py::test_eos_signtx_newaccount": "e8e29db0961a89d8d6bbe6e9b44a1605f36d0687f797d9a2ff9410644b736e0e", +"TT_es_eos-test_signtx.py::test_eos_signtx_refund": "b9e981ff4ab8a9629ff7271188b30842ef0a0e3e065b839c3c2dffae2e5221cb", +"TT_es_eos-test_signtx.py::test_eos_signtx_sellram": "78ef39e5237c3de7f45ba93711f9ea3e619d65c05b3dfeab634c4ecc392e6703", +"TT_es_eos-test_signtx.py::test_eos_signtx_setcontract": "f33af78390722cd3db2beb78f6b66b8fc53144e0147317568619961b1a3943a1", +"TT_es_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "9da40586a271f7238887edd1c4ef13764c34646d6ef85c84ee46487d85a675d0", +"TT_es_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "9da40586a271f7238887edd1c4ef13764c34646d6ef85c84ee46487d85a675d0", +"TT_es_eos-test_signtx.py::test_eos_signtx_undelegate": "cf0eaa53d6e93585198f09e5a8828723ac8628b1a0199b0a963f740e044a1c5a", +"TT_es_eos-test_signtx.py::test_eos_signtx_unknown": "863c4fd39fa1f0ca53a37ea7e332bfaa633a8fb970565ac037dfe6b78de94367", +"TT_es_eos-test_signtx.py::test_eos_signtx_unlinkauth": "37ec01009cf199289fbfb08fb26ada3f71118e1d6d4bdb7b4cf60aa4a1306425", +"TT_es_eos-test_signtx.py::test_eos_signtx_updateauth": "1ed0cd475def588f5488eeda9c279afcadb4718b6f400ce4d5826553bb8756f9", +"TT_es_eos-test_signtx.py::test_eos_signtx_vote": "011112dea5f6ddc081948aa0abdc52bd958ea9690af4c3caa58f649a0aa1c670", +"TT_es_eos-test_signtx.py::test_eos_signtx_vote_proxy": "f83f5f802510acdd46cc34877a62a30095980f0f2b4bfc0e45cf7081553e7092", +"TT_es_ethereum-test_definitions.py::test_builtin": "8595a4d5d2492e11d6cac0e10ca90842e080da3107dfef35d61b86810c95e18c", +"TT_es_ethereum-test_definitions.py::test_builtin_token": "666c2c94fb6409012efb96222e75d119a9485d972079c473e80f83818e296bf1", +"TT_es_ethereum-test_definitions.py::test_chain_id_allowed": "ca076224134b53ce2b6dd813471426a28f0d87a3994a9bce1166196cc16c8bf2", +"TT_es_ethereum-test_definitions.py::test_chain_id_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "7970d5707bdd00b858604ce271103f2663f7219d1304930b5e69f360f0ed191a", +"TT_es_ethereum-test_definitions.py::test_external_chain_token_ok": "3d19f23df63310558db4c2effa268f89b6b791a288b6d9d148069fad4a98fc5d", +"TT_es_ethereum-test_definitions.py::test_external_chain_without_token": "2e93375510a6d92290d25a4b46b28b02c4d3e51cf45136bd34de21d587c8ca3d", +"TT_es_ethereum-test_definitions.py::test_external_token": "571fb1ddebc4cbbee3658fbbd9607115fe4341ec2bd3c627b524d38344788d9d", +"TT_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "e2c7e30f8150a070d382b07d4bec5299a79a0a0ad0c0fa1b587965c6ec9e03a4", +"TT_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "013f7adc20a8a483ba382a5434f45c19eb00d4fe075c267fb5310bf91f29c7e7", +"TT_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "7b792d447b55c2a75b97297bee0b7fd81ec8f8cf21009f82d02525467af0bd2f", +"TT_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "8b2c7719250d7d33740f76531ccd17d35d77b9600063d807b53c2f54af97773e", +"TT_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_slip44_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions.py::test_slip44_external": "6c6e203c93d6c9df1c44867436649ddde6864c4d417619577978e81b900e6fc5", +"TT_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_bad_prefix": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_bad_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_bad_type": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_mangled_payload": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_mangled_signature": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_missing_signature": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_outdated": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_short_message": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "d1bbcc55d9d01c9608ce827d8d9618b298ad35091c48fe72b2af586c6259af13", +"TT_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "ebc1660ae33b2f4d973dc3e22bf32788b2b265c6a4f0ddca8e0279124bb6ac69", +"TT_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "85009f0b50e51714eba158b7173e9bf8086812804fc84b62eb8806ff0c23a087", +"TT_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "436e3fe86441f54a0f9807339ee47b4f1364dbf90d7a61fac0428c99fe20e4a5", +"TT_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "e00ca59541ca0522ca39ab3009237d94316b83ec04d0b19c38726ccddce71192", +"TT_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "7ff1d585449c0d2c5ffc14b1792ee0bc0fbfdd919647b5ad274dd104ef9260fe", +"TT_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "09e7edc72cef9bf53851c2158b47490033c31fd5dbadd8692a9723db0aa70f6c", +"TT_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "c78be2e0f9257353bd39a92001d9ae5160f4e49dab6200ad2dae1122e2e8c8a5", +"TT_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "39e1a6c9fb0271fefb7fc417cd89edb66c7ac75a9c90c6355f4902ee85a53e1e", +"TT_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "5ed83d605f4591507762461b3dd9e4174acdff693fde2b82a89e57e94e857ab7", +"TT_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "fafcb9a98c050b1f82d97b5233d735e538265bd71e7bd2902ee4c79c5caa6c33", +"TT_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "08cebdd9fafd95e173a07d4352d7bc718b6055b8db18eaea47a97e0d8cce1c1e", +"TT_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"TT_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"TT_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"TT_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"TT_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "90c71a7c8d430ee4c14e7750d406e7e99121d30727481698662a203b22416c1b", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "89b03eedce7c86c5c5bb5b430021b7b19e11667dc0220c925d4deefb78272d9c", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "832dc7485d5aa8bb8075932dbf2bc65fa3125b381c622a37c31eb0a4a6e1ed25", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "39fd00b3df5eb44178cf2e4cf35b2b66f08db11396b417cfef6e55c1e2ce23d6", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "58b790bb0c71ea483ca3eeb5372b5ad0ebd2ff91ee564bdc9ab29f78d9abc7eb", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "52c181cfec7de5ff9aa3b339e453fdadf97158a6ac93073550bf9af86defb545", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "832dc7485d5aa8bb8075932dbf2bc65fa3125b381c622a37c31eb0a4a6e1ed25", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "832dc7485d5aa8bb8075932dbf2bc65fa3125b381c622a37c31eb0a4a6e1ed25", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "832dc7485d5aa8bb8075932dbf2bc65fa3125b381c622a37c31eb0a4a6e1ed25", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "c5e713349857830f78a307be006e05285749ae4f7ae0c2e4c46834a0a630cca4", +"TT_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "713a4f2bd4bf9537bc8bf6b501a62dfbc5885d5ee9989f9a85351a188e741020", +"TT_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "7423f6b2dbce00f7617d2e62ee992b3301693b26c21a62fc1c0cb72730bf65d3", +"TT_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "324f98d9c0e657145d057bd13af849ec1d0b12eceba33534e39b1ead42fffcbc", +"TT_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "148cce2964487ef958d9730ecf77bbd01647d7d48d7398ae33763f0ae469f7f9", +"TT_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "1cbd50c479d3816757453a34e43afdad3091e8b02723bb875126429b257ed275", +"TT_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "6a78326f31e518062bae529f696922658f992c0d9a5939327fdcc60bdfd87858", +"TT_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6d8e136a475298692483f14535ecb348f3ed4d2f650f07034086d53866ab6938", +"TT_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "525b004d595a86f82a2fd6ba35ca73cc391a43dbd38e4a54b00b9b12b2c65f86", +"TT_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "2dfafdc50beefa620c77206dec23ad71af1fba85e83376232d425dc17227e5f1", +"TT_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "19242103f83fea55fb4615eef3b787b28918eaea6c17aa01448d04050d33be5c", +"TT_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "d829b57892b2202f56c33e3c62dd5083545bad179394d8ceaa8022401f5c4be5", +"TT_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "ec746276d324992a22466208dde7bfcb196324512df8e4b6c1de56fe52f7c5e6", +"TT_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "6591e7a44d1c4daf5a5e5c3e2cbed8cc1c86505fea3679cebf1e4c44bd6588bd", +"TT_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "7e6f3dd0daa29609388dbdf66a17631ada8927888456aa3a3014a1ea0199db1b", +"TT_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "703b1d7ca2782e1732ba97825bbee7a7ed18e034177074907194f72451de4077", +"TT_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "941b39e1b54bfd4e308c9e2563ac447a9e85ea4d4f501355f334b4d8b1704c40", +"TT_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "7226d185cd7b50b14f2e6c045886d654a5efd506aa9da2d0851a713875faf634", +"TT_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "ad3ecfb1bf565be78252a1fb0175dc2b03d080ff2dd8acf0640f966436b64efa", +"TT_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "d829b57892b2202f56c33e3c62dd5083545bad179394d8ceaa8022401f5c4be5", +"TT_es_ethereum-test_signtx.py::test_data_streaming": "d27812da4b83a02cb5ec524bfe81ff9d75c9cf2a0cc1587b63f7ee6e2ce988f0", +"TT_es_ethereum-test_signtx.py::test_sanity_checks": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "3134f93bdd49433716141af5ab75bdb076979bedede706a3373ba1e3aa4cb11f", +"TT_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "d93d3d98889f29c176baceb87d93b80478a815fae98bf48e36a675a2145b6f30", +"TT_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "561682af2ede5421f0a578e11d017d775a5e475759aefa7c1cf3b28eb3b90bcd", +"TT_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "5e9ae9b5e9b64446fb1be1b767ec4099eb5cf92da622e5e61658f7c072fc7074", +"TT_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "561682af2ede5421f0a578e11d017d775a5e475759aefa7c1cf3b28eb3b90bcd", +"TT_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "3134f93bdd49433716141af5ab75bdb076979bedede706a3373ba1e3aa4cb11f", +"TT_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "3134f93bdd49433716141af5ab75bdb076979bedede706a3373ba1e3aa4cb11f", +"TT_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "46d067217a8c6b81168e54371ae1dd3c96ac070e43af090f9a1e5306d2e25663", +"TT_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "46d067217a8c6b81168e54371ae1dd3c96ac070e43af090f9a1e5306d2e25663", +"TT_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "3134f93bdd49433716141af5ab75bdb076979bedede706a3373ba1e3aa4cb11f", +"TT_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "3134f93bdd49433716141af5ab75bdb076979bedede706a3373ba1e3aa4cb11f", +"TT_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "ebb543e1b0eb94c0cb2ce3ea4dd66f01b48a19847bfaeed1d5134a0dc65dbcb6", +"TT_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "585211df8af046a93eec5c6f3417c64635cbb2254c0699768343cadf448c7df4", +"TT_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "d766b9058b317b9a6bddfde8fc7a272e6fe105d727bd6d00e091e8dca8e24ea1", +"TT_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "3134f93bdd49433716141af5ab75bdb076979bedede706a3373ba1e3aa4cb11f", +"TT_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "3134f93bdd49433716141af5ab75bdb076979bedede706a3373ba1e3aa4cb11f", +"TT_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "3134f93bdd49433716141af5ab75bdb076979bedede706a3373ba1e3aa4cb11f", +"TT_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "0961d40974d3b578f9e52e7fd943bcc52fee9c6eb3e9a80a08a42156532ed976", +"TT_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "dd6178157a7755a933cfd6c2c7e39175bed1fb68463213f42f037113be56c77c", +"TT_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "ad78d7e61f0b4f1395201bdc1716227c13321db78c78620dedc3a84bec0c2215", +"TT_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "ad846053f77af73747aaa1d669d7d87d2ffcca3d145dced5c16b49012562a9fd", +"TT_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2fb766a08eac056d3a919556e2179bd6a4939f2be0341ca32007a62a9a0b39a0", +"TT_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "6a00b837e6ba74c73cb03736a6a6a531c9c5039b024cfa16c198c049c85ef6fd", +"TT_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "3bcc4916ee48ac32301b8c92e33bb1785b3d124e8bc2f4d460ffe1906a74e001", +"TT_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a286607afffc1ed6731934ad0f0581696afdb7bd8ace0e7e4d8e2270572b575e", +"TT_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "3bcc4916ee48ac32301b8c92e33bb1785b3d124e8bc2f4d460ffe1906a74e001", +"TT_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "2fb766a08eac056d3a919556e2179bd6a4939f2be0341ca32007a62a9a0b39a0", +"TT_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2fb766a08eac056d3a919556e2179bd6a4939f2be0341ca32007a62a9a0b39a0", +"TT_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "aad562df4a9fe738afedf021eb3174f3bca2fe55b02a9dc7c09ea1ec676e5533", +"TT_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "aad562df4a9fe738afedf021eb3174f3bca2fe55b02a9dc7c09ea1ec676e5533", +"TT_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2fb766a08eac056d3a919556e2179bd6a4939f2be0341ca32007a62a9a0b39a0", +"TT_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2fb766a08eac056d3a919556e2179bd6a4939f2be0341ca32007a62a9a0b39a0", +"TT_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "bd2bf3eb3e5c9d7a1a1a74b4a41474e35f227eaa907ba768c6f332f3e35fef14", +"TT_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "40651b47dbfe4789ac69ca1663e3459dc00f7c9b43e6162746f4cc3ba25a798f", +"TT_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "813c56fb291283047b7fa973db368033cc35a332c4d599885953f463d72b8b0d", +"TT_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2fb766a08eac056d3a919556e2179bd6a4939f2be0341ca32007a62a9a0b39a0", +"TT_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2fb766a08eac056d3a919556e2179bd6a4939f2be0341ca32007a62a9a0b39a0", +"TT_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2fb766a08eac056d3a919556e2179bd6a4939f2be0341ca32007a62a9a0b39a0", +"TT_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "0961d40974d3b578f9e52e7fd943bcc52fee9c6eb3e9a80a08a42156532ed976", +"TT_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "90f0807bec246e4ca16c438de6b35a29d417f7b813ef523dc708405865efc077", +"TT_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "1c9eb776e493a13753d98297365366e8557fe703e95d7fbddb458d3abab07ba9", +"TT_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "f3d80bef299521367680546a3494f6d739a0c74c080b98ef3b9d68d1921c3e88", +"TT_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "d4763c84503e1bf9de8689cc462f1cecb4aa66a66f76daf88b31009d8352ebe5", +"TT_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "5b1664bdffb707014a9febf73c4bd93c915e2818273cd1ac30ba749bdffbd4fd", +"TT_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "b12d78103fd21fd6ae61911792eb67f3737c69d152bd8cbc8c4c12baee59f7e3", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "dd6178157a7755a933cfd6c2c7e39175bed1fb68463213f42f037113be56c77c", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "ebb543e1b0eb94c0cb2ce3ea4dd66f01b48a19847bfaeed1d5134a0dc65dbcb6", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "fa2ec52795446e9dce21c5284fd483abbb68d136261fa8734e8bb17f378b08be", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "d766b9058b317b9a6bddfde8fc7a272e6fe105d727bd6d00e091e8dca8e24ea1", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "5c393d71b2efba9431522a8228a666dc7ef7324292e7a696541999df66dbda71", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "3fbd017cf9f1c4e2f81498d77b5e7b0e5b7c7e1f43c93e4af52afca5dab4b961", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "dd6178157a7755a933cfd6c2c7e39175bed1fb68463213f42f037113be56c77c", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "90f0807bec246e4ca16c438de6b35a29d417f7b813ef523dc708405865efc077", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "bd2bf3eb3e5c9d7a1a1a74b4a41474e35f227eaa907ba768c6f332f3e35fef14", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "36de0ae002bd01e8c460466796535b833470b0cfae99fef32d6aba50c36afe77", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "813c56fb291283047b7fa973db368033cc35a332c4d599885953f463d72b8b0d", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "eea49ccb37279f0384b46476a67633de513609886eb36f9e3146cc07ddff1244", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "bb8159a47bffad9b4096a4f491e20c1aac7d98ffd42a111c189c3656b97afba5", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "90f0807bec246e4ca16c438de6b35a29d417f7b813ef523dc708405865efc077", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "2c1ce1038a00c04aa2d97c569def74b749be0191dc678f8fe1fdb64caa3c4d37", +"TT_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "2c1ce1038a00c04aa2d97c569def74b749be0191dc678f8fe1fdb64caa3c4d37", +"TT_es_ethereum-test_signtx.py::test_signtx_fee_info": "286d7287729053b7f5e2cb242aeee1b3c6444787745ec2c580097793aa6077d0", +"TT_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "d3beec0d8a9fc0b80b6cf6bfd669437a1dbd91ddcadd9c4ff3014294910b6b8c", +"TT_es_misc-test_cosi.py::test_cosi_different_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_misc-test_cosi.py::test_cosi_nonce": "21d338b0ddfe1727f3593944d85d90e3f8ad53427057436f5fdae710d4ad348b", +"TT_es_misc-test_cosi.py::test_cosi_pubkey": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_misc-test_cosi.py::test_cosi_sign1": "21d338b0ddfe1727f3593944d85d90e3f8ad53427057436f5fdae710d4ad348b", +"TT_es_misc-test_cosi.py::test_cosi_sign2": "32ca276dc962736cf704765c8c4123e47394c7a6508f9f432c853913ecd20373", +"TT_es_misc-test_cosi.py::test_cosi_sign3": "3fc23f836cf7a7acd9c8901577317653cbf2608ea3b7df5f5aff93fd6a1deb74", +"TT_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_misc-test_cosi.py::test_invalid_path[m-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_misc-test_cosi.py::test_slip26_paths[42-0]": "d0f123b206ecda115b4182faad79af8ca026dfe0198bec32f02c0340a5c2cef7", +"TT_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "8845b5f1ddc080dd7241f430f291ee8f3c86738a56ef065a740d39bbb2fd87a7", +"TT_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "70b45f79aa3aaf82b67a6224b4323e7e5da9d60b2aa0fec37288f7c2fee1d1de", +"TT_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "fd8d9e4f7ae7fff4211fb8384c84c0f86cdd8e404d07a6b7e3ae4fc2afea68cc", +"TT_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "785c65ee040240aa76d900e4dc3b767f4e6ff23407e9fc462f1c18f6649d71f6", +"TT_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "03018303af8b62850ad43146c29520a9cac2f50c31f48959bc6572b67b0262a4", +"TT_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "d9983f355d7ae330d0714682dbb38c31058c5ec4a1c9bb346620bee6288ff100", +"TT_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "5d55f506b6433a6694e98c9bb4914659ac60fdfc6601ac5a431e40e8d04ee794", +"TT_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "6daed930a7d82428467a544e7af6df75f4431e13eb367eb4aa529427efcd908b", +"TT_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3bd26a7b7dbde8d2cd892f0b6a86ad2dacc8280a8a57320e05e0be194b6d87b3", +"TT_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "6ed296b68f18d73c8cbd0aa1e7e701305e47bf4154e8b5269086683d6a72883f", +"TT_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "c7f2d7daf07d6be3663adfd131af6d1f73484c87445ae7bea3e98ee59b78951c", +"TT_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "d711d80c5566a324fc22100a8753d4f76d244af1d321c139e60fdb802840b463", +"TT_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "afd5c732fa6559b24d0176009c132933b5bb22bb40a65bff417024589dfa8d59", +"TT_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "c0a9248a5688a973f3840181db4083be9809ec58540c9413c34024464471f736", +"TT_es_misc-test_msg_getentropy.py::test_entropy[128]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[129]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[16]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[17]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[1]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[20]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[21]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[256]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[257]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[32]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[33]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[3]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[4]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[512]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[513]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[5]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[64]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[65]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[8]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_getentropy.py::test_entropy[9]": "ace507abf5b4ca812c2bd83aef868940eb26f7cf0d2776d54a2ab4456044e0f4", +"TT_es_misc-test_msg_signidentity.py::test_sign": "4db5bca79e6e7775a0210dda8486bf96091c74cb25e0e503f5f7456c87ac7238", +"TT_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "3ef6cdc4f7b9478366b4267a479375b0f10a2028f70e3fa49ed02126d2ac4443", +"TT_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "33c9b2be1ab6568e7ffc6f4e38b2e5e38215de496d6acea3860e1f3be7161ff6", +"TT_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "438bd85abf9ab4ee0d8bf3ccff838e8e7219d362c8245a9a0b1185d2c3cae80b", +"TT_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "50a15f129339392fceb9a25815eb3830794e88f66a381731830b6990272f058e", +"TT_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "7fd4f34f7d93d0a3590a6dd7ba133c7f40c667d1a08fc219765afe74669fd65c", +"TT_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "ae5bff0d80027e61b139278331978b5c23db563a584ba12ccb44596474f4b3cf", +"TT_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "b39a890645bc08c70a7fabb9962546ee0a60b84a669d892e8f634d9fd2d5b2e3", +"TT_es_nem-test_getaddress.py::test_nem_getaddress[False]": "138acf0bca207ab75bfcfabb99d91381897db0d415a74634fcbb67e3595dc356", +"TT_es_nem-test_getaddress.py::test_nem_getaddress[True]": "b00e360423cc6976b0a742518370740a5707d99f7492ccd8df7b7c12787bb5ab", +"TT_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "66a2bac77b134f6be5c7aaf4bfc7a57980e98d9f63cfc4bc39f80e54b93fc2de", +"TT_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "75ab37891cded01f0d7f7e4757d0c044d4e96b061bc7c8753335a0ec648e62df", +"TT_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "3f0d69535dda57663cfe49ee0943c8a9ad30804eac21cd455c40848b01e4733a", +"TT_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "d2e227cee9f8079aef97b7e7bc651ba5db2c941bd866a16891d070e6a9719be4", +"TT_es_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "75746db3a87811e26a8e285ccfcfeedde65b0925a0fbd56d841866327bb9d488", +"TT_es_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "6615404b2c591cbbd9b94ecd1a8c49a45f2ee1433eea07d3601d600cd8563804", +"TT_es_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "7945add8743b7f188cf13b9c0dbcf86a390b799b1e4e375f79f56318f881b18f", +"TT_es_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "40cf421df25db023be9a20a51debb49bbf09b62e89c5f94f20d5ba996e0246a5", +"TT_es_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "046c2b3cb98f37004fa4845f429f7f9652652933ae47add6064c00aa3104911a", +"TT_es_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "da36a306afa73b0deac600d93b668062e962a94172ec6000de44eb7ff56219b9", +"TT_es_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "71478b8c7bf946ec1ea102b59f2549cb9d4711acba3c40854bad7f27cf135e03", +"TT_es_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "22331851a47f0c01e63b106e5b47d0bb9bab5021518e879d4bf08b9b9ca2baad", +"TT_es_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "3c23c8e8429d970c437dc528c8e2cbde317fe7f6a28df8454e3d7fe3fae33f6c", +"TT_es_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "32f4a20e513a71f765b5b655060193cbcff4dfa02f3a7069063507b6c9cfdfdc", +"TT_es_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "6a2c0752cf76516fa5f9fd8087f20314e61f0ee799d5b24574d78a84f4a38b87", +"TT_es_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "4763dd0b40b504db6688261557ae3a719c5c1b5f6b5dbeba1581e59af738cda0", +"TT_es_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "106287f88ff8b07155a8804b6124fb9ac00fbcd630788dd7314dca25f150dbd8", +"TT_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "ee29414aeed8664fa3f80b6c43c579f240f3ed938ecd82becf396f2cf9bcc6b2", +"TT_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e9ef52496e7de70a85df1a534672a03330b42c227d4e209211e85b22e007c9e0", +"TT_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ae8f203df3f83a4159d5e7f6ec966549b9f352bc82aee88e70e566bf9c3fb349", +"TT_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"TT_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "7a590dd6447fdc97189ac58bc55a2bf6c29faafa3bce5b498179c7ccfa9b3bf8", +"TT_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d41382affe0670a989125cd2b781e58f4bdbc47f1de31cd50add6cd4ee718e7a", +"TT_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "ec95e55341c957cc628abdd2899edbcce65250ad85ff9237b1de4974cf5ba884", +"TT_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "b906192efb527f2e25336cd184b8b9d8a014b605881fd27195cee6138d188561", +"TT_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "14f83cfdaf3793d050064018a2207067843ce51f62723ab8e42743274f0f75f7", +"TT_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "2f2a398eb5bdcb2eabe7d93944e1846ff53a0678407a935722c3032a435e251d", +"TT_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "38e2ff117ca382852d451202908c911e26b2d86d21eb8d46a449d817520e2a21", +"TT_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "7ce2a3f6d3f1582aa03369557be9b9eea50aec0b5f63e9826d0c049156e57b4f", +"TT_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "1f49d7b60640243634ffb1b438d931e327be324af2990a9ebad85eab0e79d38d", +"TT_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3da6503787748797a4626a83b68b77433d45f650d139196f83d2ab6136c64bea", +"TT_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "2d1321bc1d00b7fa5fa7766f98c29a16dd88c95d5985dc3a559e82f18e122242", +"TT_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "4b7cad168296aa3ebb0b5a45eaeeb427ddee4391c90056cb870bc201c282a6c7", +"TT_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "757446c46a347500eab5a78eba509cd2624d72738b015b55235a1b694541a5e5", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "cc6dc5329143efeea0e2a97bec47fff12f2abd04da578185e7b54397a8188dd3", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "ec95e55341c957cc628abdd2899edbcce65250ad85ff9237b1de4974cf5ba884", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "adec3d8af72d3d6891f179e8a9182c5ae6b90ca318a3335e36a33848a17b7655", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "0cab524a120597a4e72a9586cc7db4d93d84baf32832b16943806dd30c7df534", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "6f6fa317f677ddb8de515cce399bacafb1e37785192eb9a33114a835811a6d3e", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "72bc77ce5ddac292b8e7ab8c4ea7bcc490a4fda25e4d80a3ca88f63f9ebc7273", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ef098af8248c9865d7486bdc3066dc044c16d330507d1d4b75a0132916f71644", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "dabb991c4f26a92d5476189ae968759ed520e5a2bcbc0719855083f1bc59c3b7", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "5e5d3a4051eaf770c75e3c8fd6ca00426ba5f6f023da64cf2560b582287e9e3e", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "8709edc3b42bf6c0b3c5c4769f9d7a6652efafcfa3c8cd1466d02bc11110530d", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ad7e307208771afb552d3343fed61051557a82b4a36237d158ec916127e5805f", +"TT_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4aa5fd64470530b629f308765b7d0eac123e2df68681006af9eb62521eef3abb", +"TT_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "28ee448d5c2920e564bcc7270c617581b3d07840d151fb3a03406d05b031cac4", +"TT_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "bdc6983f2c7efe42f9e0638e3432434fd65c9fae0210e75c1416462b9bf6ffda", +"TT_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "1ec2b9e19605ae8b3a42c70f7440449c7649a966545b1da5b513fd76ae28d886", +"TT_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "95710b72b24d22fbb7de60ab79696e73878c3bc48987f8023dca0c17e87b02b6", +"TT_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "e2e4e22abe03251c14f97d36f89e01862daa48aa7f2deadf82950b5020d42488", +"TT_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "f00dbcd99b986e81f79efdefe3405bf15ba9969d9ebe880e5b4d395332aba3e3", +"TT_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0839c4d0e30b6b396783dea3c6dd29ae0cdf8bd764aef34b4dd2bddd267befbc", +"TT_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "268d883cb241a704969bacc79957d7453c5e81233797132261bfc65a55b6a127", +"TT_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "2040878268f18b26fa0263c77a3bf7ecb5758bc55389e8c3d4aaa8b069571aa4", +"TT_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1b2820c08a9b52aa2943d019e6bff49ac0acdf402d0b1a80a3b678c539ac5bc3", +"TT_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bd953d0caa5aaa7ac84393ad2b49334af49e2f058afbc6b09600fead1a1493c1", +"TT_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "accf82e2e3608cf5088c9ad44cbef44d8d5521d0b8212273b8f5bb671778c082", +"TT_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "41322d286142838e23d80c02f0fed1563f0958c892555b2f0fabc65be2d2e54d", +"TT_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "72a1bac9839300d219495a8c1a431fb6526f467aee1f840cd6fa234337fbd4aa", +"TT_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "dd7f2cf3a30fca4c22191a69e61473d363c8cfe1f11b60de2530b989aee402b7", +"TT_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1ed2575acbb816910099365193b286455d7f5e91298ca4cea64434b107616e96", +"TT_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4cf1d4a4098407bbbc82a06b0d725057362940e8d781ead5beeef1a1f090df6a", +"TT_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "548ed2cd50ea59d95fc8dcba897dcf913dbe294ad444ad1d817f2f824e36396a", +"TT_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "922dfd7826ba8ec2b67204c2bf0ad064bdf4cc913baff42ad1c3232d30d833a8", +"TT_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "66059e4c29b92c9f9b628b9e8c529fd87267c246d3c83b65706a9980c893d353", +"TT_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "641cbcd331b6d444d167f07d28366e25d5d80f88e5407916c469234753196eaf", +"TT_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "2ac2d9760d82b32534a6f1590f65a1799562ef8749725abfd7e2855d28465a8e", +"TT_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "9360a8cb7ce5d37720a039521f287277fbef22fbc290f082e15720d53c17dff7", +"TT_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "89f90ff40d591ff77536c5db9b2cf5916c31589d5188b36234aa278d8966c490", +"TT_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "6752953ce3120a0e56792a787c067e51d780757893886c740d044eaba61b2bf2", +"TT_es_ripple-test_get_address.py::test_ripple_get_address_other": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a4d13115d43b9b6444557bab13b9e863549c194c6e700de2ab93f03024577871", +"TT_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "98fe3b236a56940a9cc3a4b09a027f029fdc141c01266f69fa625db9b1c07132", +"TT_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "445765fab1a5842e3757d629172a1ad388e93bbab357990826214257acf78e46", +"TT_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "13c05bd3fcd0aaa4a82d74559f9680fb46835ec959ba85bd3aaf79df6e47caa5", +"TT_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "657eae0b9a941b18702e5a679d62e529e6cd926fbcb4b68ca5ca985c07c82869", +"TT_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "42e5b855527f95c687206b7958f103a25cc3ed115ae72a839c23b73db9d59127", +"TT_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "a6aaf77b2b0b2c57ee59afdade4cba1e7e89178aca03159f74e542f3db6a0e31", +"TT_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "1fb9d1b75e78b62764442038434825f2cfc6e8aba039b6aa4dee002fe6d0e231", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "a99dfc9ba039d476b06b78f7c922f095abafb499af8fd7180af05ab1e4a0efaa", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "48b4105b146df495cb96a37995dc863061f58fd04d2eec28c3f2c36975cdd6ae", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "7c76847f1234d6f2d56eed745f860cf2ba173fb51ef9a620aa4ff1fd74e5850c", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "68ec0e1d0303d90def8f97bd59e314162530e2180a1587dfd4697c00fd378cb4", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "120466692f73d717a17e8d74330df9323581ea37c03d58aa9056c59390cd2f87", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "7ed852415c2b6634c663891736be8626bcd2d2a641ebb4f6fc5ccfb09b536c3a", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "77f474fcf6bd29eada8ad3c423c03dd38ec2b3818f0e0763f6620606807fca4c", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "90f1756b59cc6831e27ce92308940e4663b59d5556554c6429de84e791153402", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "4ae35a0a54c730e744552a647bc2af1a03c8d0ec0dc0cb01215922bdab6d0c99", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "d01299de4903b3426a49d89945de1ccdd6dafa5a9f32653c501b4777928efca6", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "ddc50d871322c8f3e49d58faf917f77e27af677af1b5888f5a0fedd2b2dffec8", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "94ca6cf636932385f7c297eb7c314ffdffaa096e6cf907bd7a4f80a790cdd13e", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "877a4112b1394f233ba804a392d630fc50897cbfb1231111f8d94e5cabffc93b", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "4955c89ea12b0c1dd6383a7857c0f759f5e8beecf09ac23aa384262f19cc205f", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6ea9fed1dc29e01a8699d4a5b6c1e0fbffcec5f013fa7a11f399e4d6b0f55024", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "4698b845d6e9046265043b14fec8da791fcda3dbcd5dd20858ec9c62d03eb9d2", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "9eafc79cf1f1154a74ddb48f2168d726cad41e84cf6a3b8dcd19ab647956ee55", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "5bc9a771e79a8f1c985286935978923aedd24e4f42c4ad6758e1b5974445109f", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "42b989f075503a653da138c85784e333c2d41f667a71c00a1835e79b98414f9e", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "5c83849549ebfecd41830f765acb791a8d5d4bdbd9b0783960c08a2291a18c10", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "5be1928a9602301e4f78e17c329ab72cbc95238e6b3cac27b4f013b1e721554c", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "9075de2d94970e71f480947c06c213c57dc562c3ad685f0ece2ab5bea376abc2", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "b9835857711491b8543cb513c266f8a71cef693336832fecebe5a4642e74cc28", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "23938247a7f2ef19c56e4fc2bdccde95a59228d58be35f93565c7e778bc47ed4", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "87ea8ac22a4d16cbe53bd2d51a323aca36ab4f3ddf3dc4f40877bed30dd8776e", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "5ef0c1bd71c8b9395cebd2a6f7866f24b607cdfd4f616c4e3ee94526c6d07c49", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "58406f3bd9d4e599d614c43b3c6796823eccd66402db207cc0ce9b9060eed706", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c5b3db877bb42256bccee32b88566215f7a6936e524fa9bfe2f1f20eaf184b24", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5011ea406564020cf50380dd93e3430d4128a27a64b936e1336d937f95b129e9", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "ab8e5bc3dc27d358b39b02f6215eb37f09cf235bc664de4ed8ea24036622ea02", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "2295c10678e02f34dcaac7e74f834470176abc196dd1cd17116d3df5b2d3d519", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "16e70cbadb4c0cfd9392387bd0c75c0ce627fe749d82156782082d2f69226254", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "61fc4b5d3a139046d69bf8ccc7edd8fe217f876ed6d83e8d7629b4a1a857207c", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "00d1aef7d21e4c8d6d5911b0eff57ce09045fcafe26db2f029192c84173c4d9e", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "93701c1ce0200a8d27aa30e6e1006df16c98e4ca78a2a67db9360eb8104d86a6", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "762b3f9549dfdba9a7fe4e5ea9492c40d6ed3139242cf681bfbf937f4b729cc9", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "66949e74cc82fb0411159c31356df43f28d9f22296b3bf88c2c598ce5a939ff9", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "dd555008a92c862fadca236ec3f19dc9f16ce45158021913c21756c4cfcd11f8", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "50fe1047c95b7a1e4cf61b2221de3fefe3b941b78e5952354cb9ce1a3b7ed699", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "e48e9579423c6f05e87358a7db570ce0b27ad5540252c67ca712c93e038fb94c", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "0a5017bc58013f19044726283a4a68ab6774a77eef9fc0d46645a7b8289d61ee", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "12c185afc2d5e9a9dbd372316d7fb34d92b44f0819e1c49f5ebbd8f7f0ae2aed", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "d14935c6d117d8efc072d7373d60a785fb460e7449bb203e1abfabb61523226c", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "a148cd2bebb1033413d1e7702d1ad8d94a8ad984fca44c64a6da2474b4a6a6e0", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "0735fb83d6ab56af7cd88fe9778bd4ae9068c7a7a9287b9bf1ea653d2c5ad69e", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "1ae5baf875068f8401339665f20f5df95f650f7a5384bf738e0f11c009b6afd0", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "bfc52eb6b3cb52ed023c1fa4846cce9e6180662ffd6efea7786636e1283c258a", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "e03a472be144295144e8bdcde68a59fe837d0a5c26acc694d8aa0d068d97d6a3", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "cfce818e86e86bc420d8e2b6d9b704bbdc5ba0944199a59e0e7db439197f938d", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "bc854a7cba53158119478f0d142dd600babcbe9c7d3a2a5f99c3e3a2c3e62102", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "e247948811fc2217ca04db3be0bba7ef550a6e9f37d263ee3e3927550849128a", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "2b2a78440fa2b23347de15d1a7334e87d1b7490a5fd78e7ba4c7b7a3076e9a92", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "e6bc023b90a20a138bab1a8648a1b99d6855ec470279861130dfcb4775d7dba6", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "10f5c71c7809b36ffc872c18e0934c476306a03365522f34307f4df13345e461", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "843034ce1eb1f34a705b6c850fbe80216c430e14d528a373604be0e34f3dd6fb", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "c1ce4145b674c809f9106a763c4ce5f38a5d59ea71f3976bfdf892427da72c6f", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "40118adf15a69a8111db8444a5e1bf5941ef059ef90b5cf6c6166b80e5779cf6", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "3ad5a7879a74dc2765c76f6a84dc2b7a0028a5adbad92cb4423e05742f04ab50", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "23938247a7f2ef19c56e4fc2bdccde95a59228d58be35f93565c7e778bc47ed4", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a34803505b176e0bacd500a6f3240e011abeae0fed9945850a95fda08473f5ea", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "0c002fd5f5f11eb12d69cea82ce68180cc2519a043b67e1660ad3aa8eb343989", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "c923d9003a550ad68a344131a4d2fa44c593e4ef776aab606d68f2a58edb1a81", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "485365f16121c86d1593ffbdd47212b13f008467cdf70124497de7112c4d5fa9", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "b647f44b47b8a805c60f39260d956504cfa4b146d8fa830856ca655b062711da", +"TT_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "4f34e0bd71765b5ffd522767493b0f2b3e5d90ed4c4a6c43f8810ff05e12decc", +"TT_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "a35cabadbcd0aceca1cc58b2c3cec689d1b56875da6f0f225dfb130c86e6da3d", +"TT_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "f44ee5a87951b0b72ce360609593eaa47f5de1c6df1499ac89f23f521cdee615", +"TT_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "c7e8b492e6d21ed9c075f31534b6a8cc8030780a61033bb0e639a4051f62b248", +"TT_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "ff7de1a60f39493f6247d07809cf2b015fc57ddccaf6012065619761c6cc91dd", +"TT_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "cb9b30dd9d39a8f64475a1ec88314f63aae754254ac159b0d3b90e7b1ba845f7", +"TT_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "3165ae045720fbcbb21b823d11bd972fece5b9c37048b320b389d5e9a131654a", +"TT_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "4a988a440cd7e18135a8341ba6e2c76a01c724562e82b9905549c3a87d16f4c7", +"TT_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "51090ef70279e6831e8c51bea15a4fdb407d6ddb07f8f2123a7ae440dcc2aa9f", +"TT_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "509cc2fbae59380f9ceff212ac22bc0132e62ac07a49c1af1df62131d1a91347", +"TT_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "3f783252ad7aadf324b3c71570ea44feefb029d5cf1a72d86ecf87c3f50032f6", +"TT_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "f54ced342baeed4c1a126a71ace136b92fd6ac82e38343e869331da4a0f4b017", +"TT_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0538c16439236b9ae39c2233adfcf4a05651936ba049fccfc851803aefebebb8", +"TT_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "f681ba61e04199e9fb822e0ed929efbb139c0148fdd55d4535ac350229a1ddb4", +"TT_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "6c8eafd96a413a1ad1b2ee70d928a0418d89cb5821ba14d0ae6fbeb2c937c830", +"TT_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "4227131908ab1c8e25d760276836a2e6ace659c836d98df4fceebcf8e90c54b7", +"TT_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "6481dd42b104c0f58ee408b472c9569ce6ae6a07f00448fc66f1a6f07734043e", +"TT_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "26a9df036e6f4dfac5c86577eebd5b29c21da19f43333c5a0d93b268b8bcca86", +"TT_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "75434a7e091110fa6532d5dd9ef5bced467120e89befedca05eba7e8c69d5692", +"TT_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "a0c6fecea2af015f833c9d3d04e88f1546c82f69f852fb919851ace51d57a3e6", +"TT_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "8b6493ea7c00a5d8c21b395ecf9cf43257a2291a58a6185037398a5ad080da09", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "9f095dd70c9c00d08ca7e0f8191b5870952d19d2dad9a24d221ebb2db753a1c9", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "abbc00f7dcd826b17a941097623f9369d6e7731e5c968ec665c4fda7783e22ac", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e1b87caf5cbb8b325de6309290e0ee5782ecb819267f7e5a225d8e14564bbc47", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "f146c308de73b5e8c1ccb50588dd5504f800fa4ef576cd362e016f833a3da3d8", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "046d96670af7be6485e7c8d8b664a1e6e0b9bccb2cc3c8e78e46a625041c5eb6", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "367fe3e0ab9b4457fb768455f45b25c1b9c4edbfb2878789a25e22e20a3a72d0", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "ee5ccdaecbbd13d6131acb6af775d6cbf88b0a53b95ce6199bffb9323625d036", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "07c1a56d45b812e1ff242157eeca3a24767e92a7ffab601b514a86f0d7639c08", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "7e423f97398dacc9c796216e79bbe7b4182798de1064ec20fa7b13a350737ab0", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "e2cbc871ad9699494968554c0834a83f2413410097cbb805f43c376f4dea4406", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "d628508849d0400b73bd52eafc59f755c6c6dd24ab3d138db03c4fb085dfa0f9", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "3bb6d652363dce1a71e718a214b5fd09076617574cd78b0d62ad09be7b8c1b5c", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "d817fc3dcbf9daabd17f92bf95e03364584343e5be38f567d7c8f81194aa00c6", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "741dbfebf99c2194dc34234816341327a2b0445782ed7d0c98576be5f94feb82", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "af0e0b42ee3e8210f9ddbc0a94bc9318080c91443e0247f9c3cd2618494f7127", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "1785302a2e91ed381d083e67383fbe2aa76dcfedfe439b5876568d4ebaaa7927", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "add4e06dafa0a7b9054df9bb3d7b7ddd510286441bef7acea00aa15fc7845556", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "022ec9aab7e1db3c6ab4917861e3ff9ea19b396b2016d9fd7c60f2bedf6dff8a", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "35f7d1bc22f251a8219835782e9c079aee2ff96d4582579feacf7d1af1e00af7", +"TT_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "eb0fb567ab4046fe33b37ccd00b2c7a104a996eebae8bf88d96f6b0ace17c66d", +"TT_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "24be71f4e08b7224cec36a66ae4d0fba885f1e3ac00fa94ff85328e89457a25c", +"TT_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "170e823d594ffc9103105c0c6ef973a3c3225baa708381fb889276ddd41b2a3a", +"TT_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "73bf17f5aa204120da2f691168f6d6e63fe452a1356661245f05b06bc97778b8", +"TT_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "5d3f9637614ccccf43275dbb30016530554a62fb6830e403ec4817a645c0a93b", +"TT_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "02fcfb2caa2d99428c84544957cb94bb47a83be835e40540be4694c7167f5e5d", +"TT_es_stellar-test_stellar.py::test_sign_tx[source_account]": "5b8b7fbcdcfba25b40872042b401a80c04ae3acd8bd99d581fde31bd2185a168", +"TT_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "628070bfc2a090c4588f5b77df4a14944d7c4303187617d486dbb26eeca12646", +"TT_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "b64ebfac083c16b7f06b26132ddcbf501a78ac92815b4e56a12d7b7740b668c4", +"TT_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2b2f4329b5869736f4f5f714b579fb041e1c9305f7b74ad0658d97d9b3db03e5", +"TT_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "add4e06dafa0a7b9054df9bb3d7b7ddd510286441bef7acea00aa15fc7845556", +"TT_es_test_autolock.py::test_apply_auto_lock_delay": "e3bd5fa26f5f4e7a07db56961f9d7d8204a119c91fb2f0cf0bf32b6fa8afea9b", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "98b41f18813a2975d6888ad29918a3be1e94d63628dbc7429c8a8013d3c81573", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "98b41f18813a2975d6888ad29918a3be1e94d63628dbc7429c8a8013d3c81573", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "98b41f18813a2975d6888ad29918a3be1e94d63628dbc7429c8a8013d3c81573", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "98b41f18813a2975d6888ad29918a3be1e94d63628dbc7429c8a8013d3c81573", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "98b41f18813a2975d6888ad29918a3be1e94d63628dbc7429c8a8013d3c81573", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "a9c25ad738be2bd5aaad094ba26ee7c43de5d730612db20d98bdb602c4170e48", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "4a20369cbfa4291e9968b7b01c84a1b28cfc0dc8cfbfe3ada4771cf479425ccc", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "c1ceac9871beb408c685c83854f51ce134756a19bff72f1c0635022b31018eb5", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "10038723ffa9ec0ab90d54d9ba7235993a646ad27b1ecb172cd3ee6af707dd44", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "1a6f59b82f0c82d6b079db6656f6dc85475d432e63459c2b9519a2078eabbcb4", +"TT_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "335f9ab8b220144e90da97ec5ba159f4c1790aba587552863eadb4ee84a857b7", +"TT_es_test_autolock.py::test_autolock_cancels_ui": "0677789e9121161d6ac7dbc70564f25d60181ddc5336fd334b50060128797bcb", +"TT_es_test_autolock.py::test_autolock_default_value": "bd01c4effd5a97ab75d68b3a8f0efd8fc90abe39098b42f9734875cb212b11c0", +"TT_es_test_autolock.py::test_autolock_ignores_getaddress": "acd4aaa6ce8f36a8a7e2e82685274f7628b3fcf7a94c408e20993a34347a89bd", +"TT_es_test_autolock.py::test_autolock_ignores_initialize": "acd4aaa6ce8f36a8a7e2e82685274f7628b3fcf7a94c408e20993a34347a89bd", +"TT_es_test_basic.py::test_device_id_different": "4cdf9fc0930bab5f34714eedbf6bf6c1ac45c2b2f3754a6efa9b692415ae0030", +"TT_es_test_basic.py::test_device_id_same": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_basic.py::test_features": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_basic.py::test_ping": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_busy_state.py::test_busy_expiry": "da280d408675fbdbaddefe467ce32f0fbd64726f8935dc5d49b9d2fe969f7585", +"TT_es_test_busy_state.py::test_busy_state": "47f838c7e2ea858dd1324c5915f3c29ff0c1b19726bc0e44d0ecad4acafc5b25", +"TT_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", +"TT_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", +"TT_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", +"TT_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", +"TT_es_test_cancel.py::test_cancel_on_paginated": "e7867645a35ee40b80f8a3eeaa122571367a3d3a1f850f89f5f7b14ce28522d7", +"TT_es_test_debuglink.py::test_softlock_instability": "3193f9c55f640d6791256a4921226fd2fb3432cfaa20d286ae4f10e431b6d281", +"TT_es_test_firmware_hash.py::test_firmware_hash_emu": "6f9a2eb356b7054881d6b60116f6f54e4884835b3b3881c151ba6ab5f32f8560", +"TT_es_test_firmware_hash.py::test_firmware_hash_hw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_language.py::test_change_language_errors": "559e5bc3584168694b4e6fce6e40b4f49aec5fa8f64b9180bb74f87a0ce5c7a8", +"TT_es_test_language.py::test_full_language_change[cs]": "03206aa38c65ca06508635c12d4fa2fb3bb0d3ef362f564ee9d11ef098799259", +"TT_es_test_language.py::test_full_language_change[de]": "c0d5a6d46007e5d51eff3342134bea616dcead13d493c0214d0fde138c4c2f2e", +"TT_es_test_language.py::test_full_language_change[en]": "f6988d3ee4b8e02b8e975fae09bcdd848764b13a023ae57232d45f2c3f0139a2", +"TT_es_test_language.py::test_full_language_change[es]": "738d7da92f2fac9b7e1df40c2ef9940329235428e09230acd19b6d7eb2e6f9c2", +"TT_es_test_language.py::test_full_language_change[fr]": "f76574e36c9f51df4cb8d168466db23b724be973b0ed1587ca2429a3bbeae853", +"TT_es_test_language.py::test_language_is_removed_after_wipe": "4f07c62d3b1cfc637ab45b9d1b3eeaf3d110190378683f6a8833b479fbe9e8cc", +"TT_es_test_language.py::test_translations_renders_on_screen": "3c17f0cf806fcc658f37caf24b022a2b38cc211cd54732ef46ff5d24960098f7", +"TT_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "0b71b7579017e7f9282c0d12d98845e00e56307bc499258e16c5f4bb9f75cff6", +"TT_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "98b41f18813a2975d6888ad29918a3be1e94d63628dbc7429c8a8013d3c81573", +"TT_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "98b41f18813a2975d6888ad29918a3be1e94d63628dbc7429c8a8013d3c81573", +"TT_es_test_msg_applysettings.py::test_apply_homescreen_toif": "98b41f18813a2975d6888ad29918a3be1e94d63628dbc7429c8a8013d3c81573", +"TT_es_test_msg_applysettings.py::test_apply_settings": "c5e022247bd3a50453318587b77a7f2e7e3ec039c5b65eaabbcee5d25b3a7173", +"TT_es_test_msg_applysettings.py::test_apply_settings_passphrase": "6e5ba9a4addfb5aa4e6fd408a34c84de4dad557f61d29a1384d16fb980f6077a", +"TT_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "52f0dc994ecdd94e6cd28d570a14c1ebc0e0541174e57e28a91a6eb6bfcb0bb8", +"TT_es_test_msg_applysettings.py::test_apply_settings_rotation": "794d320424decafd37fd17d37336a3b48891017007ff20a3763b7c2883665fc1", +"TT_es_test_msg_applysettings.py::test_experimental_features": "e477b0df2fe89baa1bb6694acbd6d1b443bf54ab09fd97364785773d9077a080", +"TT_es_test_msg_applysettings.py::test_label_too_long": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_msg_applysettings.py::test_safety_checks": "65f98f2898901942fe09edc29ceb197fbb1a4f9533b39bbfcce1d4b3fe4c5c34", +"TT_es_test_msg_backup_device.py::test_backup_bip39": "c2d272724b94fd5491f3bbceaf036807ae3cb648ad7a9c1e205db84a24f21165", +"TT_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "3f6a7d2d561b584c79f60113d1157fc0b571de918043db5c4a89b0cc7fb58d5f", +"TT_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e734d2cb7d8f548e6700eec039a69632e75f433add4ace8bcf30a619d2caa493", +"TT_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "989c96479d001092e39ee26ecc4dbd8061f6fe0f23ab47d2cdb3b0b0cf35b299", +"TT_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "268625d0aa212a4a4100a971ffa28ad6052a818b5b070aa9b81abcb15d6c105f", +"TT_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", +"TT_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", +"TT_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"TT_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "7e5e16246a60400ac1ce9ef28c80d7454256707d61deecdac69b53600ac87f3f", +"TT_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "f2518c2dc937cd94867e4282f095b168ec9ee2f65a593615b65c9b2e657532fb", +"TT_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "21e57ee0106b01b79122a3aad3b25196c02baf9fe3e2eef9d4313120f477e17b", +"TT_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "58b7df6bfa10b5a358209c431babe47fbd819aeed3b6e18a517c2a171ae2b5f3", +"TT_es_test_msg_changepin_t2.py::test_change_failed": "1688f816545dcd58008e6895a1502d1c24e92312e4a432e74d9c5b2c12e471c0", +"TT_es_test_msg_changepin_t2.py::test_change_invalid_current": "2319b31b4d276a1bffff6ea01f3d2fd3b5cfb8f43a4e893bba0a418fcb047d1e", +"TT_es_test_msg_changepin_t2.py::test_change_pin": "e28b6754ef37c1a6bceb52f253efb97b0feb2bb25321966bb407f0d43b90da6a", +"TT_es_test_msg_changepin_t2.py::test_remove_pin": "c440f3594eaea328a2fbfc53c82e742ab97da1c88dea1d33c15379b53c154052", +"TT_es_test_msg_changepin_t2.py::test_set_failed": "3c67153ab6a8b65678cc3fd323afeccf21d5d30f8eef61fd3007ed1828dbb7d2", +"TT_es_test_msg_changepin_t2.py::test_set_pin": "a7e090141bd17c54105b1c4c44d1c4cdb674d00abe7f8389aa5a0c20cbb50060", +"TT_es_test_msg_loaddevice.py::test_load_device_1": "6f63d9a3433ebfa6097cb9715e3359218578b28bafd436a2436e7a37840810b0", +"TT_es_test_msg_loaddevice.py::test_load_device_2": "95c017d7037c6dcc4f97d8da5bd47fe65e6374ca1fc206e5ad3444cf7ea75e05", +"TT_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "6f63d9a3433ebfa6097cb9715e3359218578b28bafd436a2436e7a37840810b0", +"TT_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "6f63d9a3433ebfa6097cb9715e3359218578b28bafd436a2436e7a37840810b0", +"TT_es_test_msg_loaddevice.py::test_load_device_utf": "bc69a142dfcda0fb5bf4ba7cfbcc67d4b1ed7e31b6e7f320ec05674dac9aff1b", +"TT_es_test_msg_ping.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", +"TT_es_test_msg_sd_protect.py::test_enable_disable": "74c87c39b19f0c59424b20133c5e4176e78063d9d99f4b3be04f2168e5db2ce9", +"TT_es_test_msg_sd_protect.py::test_refresh": "6170df894ce9be78ed399e6352b0bfc02f1f06c72b87db00de197019780e1c97", +"TT_es_test_msg_sd_protect.py::test_wipe": "ede6a31b78d595362635831e7eaca0338332d9746051b694951a868ecad03505", +"TT_es_test_msg_wipedevice.py::test_autolock_not_retained": "acd4e9c7337a1a809f806fbac0b711ece01067599a3dee7b8994c137d5b6c0f9", +"TT_es_test_msg_wipedevice.py::test_wipe_device": "4cdf9fc0930bab5f34714eedbf6bf6c1ac45c2b2f3754a6efa9b692415ae0030", +"TT_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "4c2a0f5fa98a199b86162f3ada4d173d01bc069fae5a067f9f3881b940eccdd1", +"TT_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "4c2a0f5fa98a199b86162f3ada4d173d01bc069fae5a067f9f3881b940eccdd1", +"TT_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a69e17f7dbde5cbd18bf465d6ae896adc1ad7149546492223c091475c876c0ba", +"TT_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a69e17f7dbde5cbd18bf465d6ae896adc1ad7149546492223c091475c876c0ba", +"TT_es_test_pin.py::test_correct_pin": "98b41f18813a2975d6888ad29918a3be1e94d63628dbc7429c8a8013d3c81573", +"TT_es_test_pin.py::test_exponential_backoff_t2": "bf4c47ab103b94891727f04f08e669b6b1230c37c9b74c54483f90a24fe8b448", +"TT_es_test_pin.py::test_incorrect_pin_t2": "3eae1a0aeabbc27e4393e07087eba860870ab5aaa188499b077aaada35e8ca5c", +"TT_es_test_pin.py::test_no_protection": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_protection_levels.py::test_apply_settings": "5da55a92401495d03153a8b627b18f71de6436ff7cda7de93cfcfff809710443", +"TT_es_test_protection_levels.py::test_change_pin_t2": "b7a66a54807666c924ac524ad33a9d28976a3ff263295152dea5b758507ff7e9", +"TT_es_test_protection_levels.py::test_get_address": "22e0fc42e8a1ab818a9eeec94c171f686c03808e86c46fba7cf86dceed330b7c", +"TT_es_test_protection_levels.py::test_get_entropy": "3134edf229d6191ccc36608e9bccd37968fffe23253fe51a911b50d73d8983e6", +"TT_es_test_protection_levels.py::test_get_public_key": "22e0fc42e8a1ab818a9eeec94c171f686c03808e86c46fba7cf86dceed330b7c", +"TT_es_test_protection_levels.py::test_initialize": "d96b56dc3b50c9e8dbba6d94a71819860edd9d6c7574498155a9dd96e5961a02", +"TT_es_test_protection_levels.py::test_passphrase_cached": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", +"TT_es_test_protection_levels.py::test_passphrase_reporting[False]": "77c587d6d4e08597f54ffb999f5861e8ed4c65f2082713a2446c167f1a6ed40a", +"TT_es_test_protection_levels.py::test_passphrase_reporting[True]": "c9d291ccb04c38d3a1c3925b80695b18f6857e968d4733e8f7bd59ffae87c317", +"TT_es_test_protection_levels.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", +"TT_es_test_protection_levels.py::test_sign_message": "65acb62f2a841b23904695ce6f2ec3318a3e66fbc9a1bad3f27a54ab65919bf6", +"TT_es_test_protection_levels.py::test_signtx": "ab894b1fff73e2621ec834d14b6d4ef3bf84ceaa66fd8dc8235cc64e9a6db49f", +"TT_es_test_protection_levels.py::test_unlocked": "939538d5322dcde875c4bfbb86a0c5f4f45c3e644745af26498e00c751270df6", +"TT_es_test_protection_levels.py::test_verify_message_t2": "9d41828c65066132866a76410e7c2ef4ff40b56ebceb7d710a2225c9f5134236", +"TT_es_test_protection_levels.py::test_wipe_device": "4c8fa9b574626b90955d34532ea4dfd96c507d6e94c3e035dab3c7313ad8dd20", +"TT_es_test_sdcard.py::test_sd_format": "a1e974b373e988ceec8f0de14ac41adf1cc7734a517b31e00b869c7499ab9200", +"TT_es_test_sdcard.py::test_sd_no_format": "7781a282461cc836af82ae20c99bb0d56b8faa4905e5c14ce80d309630a83a98", +"TT_es_test_sdcard.py::test_sd_protect_unlock": "1ddc62a5359f70916ce72faa898fec9cb8badfe050a14fccc5ccacf89a04dcb6", +"TT_es_test_session.py::test_cannot_resume_ended_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_session.py::test_clear_session": "23a8d68a4f60f02187d510af96a5cea519114cb378b60e2c41f34ff7fa7951b4", +"TT_es_test_session.py::test_derive_cardano_empty_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_session.py::test_derive_cardano_running_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_session.py::test_end_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_session.py::test_end_session_only_current": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_session.py::test_session_recycling": "a69e17f7dbde5cbd18bf465d6ae896adc1ad7149546492223c091475c876c0ba", +"TT_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "5dc2bd8e5e4ecbea92c1ac5f6e4e227a2d55b008e0e7a5f359187d24279a96ff", +"TT_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "39aae1926c250597be6c1380561e60ea81785344667a1c7e2ab021c6d3cb60ce", +"TT_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "64731b127b28a0da53f9a669754e48badae79864c2301e9b33d34d9f2fabc925", +"TT_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "043c657294160fa070823c7132ad397505cf2ee8eceffd626c9a5abce7d2ce99", +"TT_es_test_session_id_and_passphrase.py::test_multiple_sessions": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"TT_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "f9f511bae08ad9aa62b442d061b9a31416bb123e8dbc6cccd119fe51133ca386", +"TT_es_test_session_id_and_passphrase.py::test_passphrase_length": "568499a5174c9c1121ff3380e465dfc7b15f745b375832580507689176555087", +"TT_es_test_session_id_and_passphrase.py::test_passphrase_missing": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", +"TT_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "a458d28b0f961959146ea5c3a22cf25eef0c00ddef75f0241a08d94261fd6f58", +"TT_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "c2fc28e95e5ea0f1d0a4f8fdc4d91e37513abd2a3b4538caf63f83bae45f8d66", +"TT_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "4f6c0b921172b0a20882b35a0541b8b72734f7a3b2e4443e123c5a92a0555c5c", +"TT_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "50516019d8fcd37b4ade011cfacac44516424c39baae6f99fbdc60c99fbbd063", +"TT_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "0fc96bb10c703ecf306ce88913dc1619f5ff2877ae2797d6054ebf3ad71e3ca8", +"TT_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "d6316534a4c2f9a7459fb4644d6c5941233d228abe8890a1f0efe8a2e363cd5e", +"TT_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "6d74fb47d1a2873fcf0cef577af54aa6100552c1cda19fc53110d43e451cee54", +"TT_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "2e2483373952ad8e73125dcb66b120c1c16bb72acdab7a82c0d98c3a3f432861", +"TT_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "eb7af74ddf8dfccf903bc89df7d7e3aa7b82639fb32b8eb4be6546018252601a", +"TT_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "044b47ae3868f45ccd58553b56c39de50976d609a8ca477ceabd1613427da5f8", +"TT_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "a8de0c56f0cd8e8a88da4845dcfbbe52f2bc69a95aa3e48b454e5d2a646214dc", +"TT_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "270b78a6f16ee3f6e254549225b2eec1ab42325ba888884606b3af630da0c692", +"TT_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "fbc6b270afdfd4ff4fa5b033895173c650e543c2f79f0d246ecf872b494b320e", +"TT_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "6827e98b82e132f9baab5fba1233919fa197222b0bd44e27dfef42a92c14bf4a", +"TT_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "98fbedeb1d441c707dc8aa511ba9404f909dfcbc01c02be017188eaba160acda", +"TT_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "5b803aa536d760f533908c882534f5427123c74b40aae21f657c69eb742f52b0", +"TT_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "cd05b776a0670e0db33c2d7b81ea33efd726f61513ee5d18be16f54f4a936008", +"TT_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "8bcacbac60f30a045460b1868953daa60372f8e9f36175cba8f21148fb3409b1", +"TT_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "1f6f0ceb666eb47a1130f87d6256edaae2b9fb72514e60afbb90a751f3a02692", +"TT_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "835472b47ee40e214c0da5953baed12cf57d7ddcb2779453175fd78f9596e65e", +"TT_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "51bde4bfeeda105a1ae513b07b025515f81c7d7f40e85ec9162c3ea4a0a8528b", +"TT_es_webauthn-test_msg_webauthn.py::test_add_remove": "3d478d683af59619bfd63154d5781f5e30b378082e543cb7c2dbca4ed2a6bd25", +"TT_es_webauthn-test_u2f_counter.py::test_u2f_counter": "3d7035e1f034ac070ebadc0a0bf2d17f6dbf7941690548cfb4d2411459a2bb59", +"TT_es_zcash-test_sign_tx.py::test_external_presigned": "f8ef4e6d8e6b2a0c3469d6fa3d980b4caa9e9a876d23561ea296613ab70c3b92", +"TT_es_zcash-test_sign_tx.py::test_one_two": "479376de48c051e4bee40b748f3d8277f14723ffa83433339067ac9f15e86f1f", +"TT_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "d94c2c3b055bdc9825ad396e346f6422efdece0805c515e2be0c36d65bedf9e3", +"TT_es_zcash-test_sign_tx.py::test_send_to_multisig": "128c4c945e4d10ac6809848cd80fa0b8fa7072820a8b66b7c8533d6f06ee388e", +"TT_es_zcash-test_sign_tx.py::test_spend_multisig": "9088e3a45df0cc1831cf0d3bed529217cd2ea840a6998e8316e41191cd8e2be1", +"TT_es_zcash-test_sign_tx.py::test_spend_v4_input": "66de95545c7225df53eb1c42d232609a57690c4195f6318afcaa5d744a20f03b", +"TT_es_zcash-test_sign_tx.py::test_spend_v5_input": "113b501967d7655b98a178c71d0725494423f39c6a7b051294327fb091ff26ff", +"TT_es_zcash-test_sign_tx.py::test_unified_address": "b58c8358e1fdc6c618f860674a69566d3004806f704bccb0aa91102a96f24f8e", +"TT_es_zcash-test_sign_tx.py::test_version_group_id_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"TT_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "b0fb29788b9dd249a9672933e9b8e4a78e6e9e5253058b6268347d8101db7f7b", +"TT_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "47aa3afee808e2ed8ce3ae88d967097369636378ba07fa8ec8b0eb19a16d7af4", +"TT_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "8374edc922116e0c48a25f3d0ea1910c8144b94482b3a29724578f9dc923ecd1", +"TT_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "c565aebc6526038d4522ba640fd49cae18ccf6bd72f836e5db9390b44addd967", +"TT_fr_binance-test_get_public_key.py::test_binance_get_public_key": "71d3787fc992e02ed66a86dd715c214f8ed7d32e3bcc050df09c1dd0371ad72b", +"TT_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "212dea2db97f5ce7c22d6c98edfd566b4b10e7c46971017c8c421bc14c6d4d86", +"TT_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "c027bda53a49ce74a9660546db897c2c8731f305d428a80ac8a09fa9e03c6daf", +"TT_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "9eb0ac90520a7d51a9efd6ca5bb897e36a15c18c267e159d0416af3bb276bf0b", +"TT_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "212dea2db97f5ce7c22d6c98edfd566b4b10e7c46971017c8c421bc14c6d4d86", +"TT_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "c027bda53a49ce74a9660546db897c2c8731f305d428a80ac8a09fa9e03c6daf", +"TT_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "9eb0ac90520a7d51a9efd6ca5bb897e36a15c18c267e159d0416af3bb276bf0b", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "9f2ebeb53978410183c02fcb267ce857b6640742eaf7455677609b043b8b06ae", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "c4e97910c3c88d430810dce1169b925b1a9e26bb777563600ca1930613dbaaee", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "edc8a9902a0f9af1d7b9b530bc53ec0fbff916f28ff610a29baee8e9824e3d32", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "1d7f29c03761d8c497f489efb2bb6df4010d0f38fd2bf806eb313ed227f1ba60", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "13d37125dd515c35f274b4de0a278037046f7adf297ffbccda1b631a4d8a62d4", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "13d37125dd515c35f274b4de0a278037046f7adf297ffbccda1b631a4d8a62d4", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "304658e9bc0948cd9594ea133d9bbc8bd9d08d6eae2825d073ad97d21e16bbec", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "eefede659da1ff2262b59abc38d637fa7367df769ed0141cbf6639f791281465", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "23d2003b46c8b19e1cdd171c79937f3b2b4c059b4058441b35a6c2a70a8f215a", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "0e6ffa0e291531a9086e8d46adfd5d53c8b121c73c731df04ad4c75b89cc53b6", +"TT_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "0e6ffa0e291531a9086e8d46adfd5d53c8b121c73c731df04ad4c75b89cc53b6", +"TT_fr_bitcoin-test_bcash.py::test_attack_change_input": "20f9d84c6724b81d1b7d035d4bfd53f1f04a143935249a752dd7a155e0527e8a", +"TT_fr_bitcoin-test_bcash.py::test_send_bch_change": "20f9d84c6724b81d1b7d035d4bfd53f1f04a143935249a752dd7a155e0527e8a", +"TT_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "a33122eaafa002908a23f7ba172cc67c413b028f47b74dcace959a19d14408c6", +"TT_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "e76b0c9ac13fae8a326eeb7117acb7cc5906826093b6caa6f1be7806c9bc740a", +"TT_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "9fc691b1bda9060671e351827527a316a369d038198a7f70ac0333df4c1f0aae", +"TT_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "c5f13e4a4237803cf63e5ed9f51e230a687756b2e86acf242454eec6f510f705", +"TT_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "c50ce0a662e7dc1a5be033bfad5d7059edd777f0263ee2b7024d14022337173f", +"TT_fr_bitcoin-test_bgold.py::test_attack_change_input": "a02d27dd166413068b7b8aaafe8335eaf21fc40851299619f489c75269d024a0", +"TT_fr_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "a02d27dd166413068b7b8aaafe8335eaf21fc40851299619f489c75269d024a0", +"TT_fr_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "e70cce616ff96f62ca9a1d90736bd87667c8c20660c680eaacc0e40e44431bfd", +"TT_fr_bitcoin-test_bgold.py::test_send_btg_external_presigned": "e2dc5e658a4e9da0aa9ad0bb02eda49d9a7566865421b2a73255039eb848872c", +"TT_fr_bitcoin-test_bgold.py::test_send_btg_multisig_change": "4854a4b5b4ebb69abcddf29cc546ed75aeb61e15fd4d833f347d0572d7ae999c", +"TT_fr_bitcoin-test_bgold.py::test_send_mixed_inputs": "412f13ca1dbfd6215a007d73c658f2ae11dace5e02dfef532e078cae66fa0159", +"TT_fr_bitcoin-test_bgold.py::test_send_multisig_1": "5d29d3915d122fa2e47c357fc3a2e83aaefb34fe8d1455639df4372f7fe1eac0", +"TT_fr_bitcoin-test_bgold.py::test_send_p2sh": "d135e22e45623e173356dc40295c7b152adb3f1c2c19780abf7ece9d8f911edb", +"TT_fr_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "b5991e159a2da322edc5ec72638f9f3d728530d30725d6bf32f39a8729849163", +"TT_fr_bitcoin-test_dash.py::test_send_dash": "1583e7a50e3bb50e4282109194310f40c53c226abdaab499bd7e980a1f4b47f2", +"TT_fr_bitcoin-test_dash.py::test_send_dash_dip2_input": "566ef95e72c08c60032b3718fb551abdf48c0c5641baf0e2b520a7e77854b585", +"TT_fr_bitcoin-test_decred.py::test_decred_multisig_change": "9980daad574a7802710d8324dfb126f4f0e8c0992d7478e59fca42616aa00e14", +"TT_fr_bitcoin-test_decred.py::test_purchase_ticket_decred": "954165f070b8f7dea41f3409f19db150f6d669ea5500eb9b496eef47480b01df", +"TT_fr_bitcoin-test_decred.py::test_send_decred": "6eb1388def4d0890b85da1a4ee64ea6fef66fcdacc3194ffd5bbe2b6483ce9b4", +"TT_fr_bitcoin-test_decred.py::test_send_decred_change": "e2b6c92d77a65dd92148e8be874669f07ed1a36144b2f05f9c89236dd935855a", +"TT_fr_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "020f9b62b7b17904ed84640cad31335e3bb0aa13d5b2c1cbe403b916f52f0242", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "e582c6449a618f226689842ccc957f64f18de746255ad142c4707725922565ef", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "90f8dc4458e1172f7c332bf82c94fa2eecfdb8023fb4e9cf2404122e2ce088a5", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "44f88044f89030e12003aec257d45464953df6e5f7bd113cf39aa3091ebfc271", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "53f835de29e80d321e4139793f81529da633a3fe38ca48e75513f44765b49584", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "a3f3d707413b06d99caa2eda6cc7f91a77e074b063e349fe3e9e726e752610a3", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "29cb7024491c3fad789a8cf8e957b28cd3bdab67a16f53df008537edac21c0c8", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "3733e6e505fddd2cd6cbb9fa33b7941363281b74ad3155bf1fb3c917ec3f0087", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "6360ac7b56447922f7c3a8b967ba92b5ae4d81f940c39d05005d308ce163ecef", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "70adb935f56df02b3cb530c7a8b5c0d9f190eedff23ec676aa2233bf61c8839e", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "85e577d864420ab5b701aca75be38815624b83f2a1e6deaf9f5f115dc7487ba2", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "c7f1b1f278a37720172a018a38037bdd2319d8634a3ee94288a59c9a475435ff", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "938dfd3719ba22c86a54ac442e783c79a9a2e28c15d2b69680f1c59ac181db71", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "52b3818b309af0ed8bf3f1877789fe2b3e600b9813b1e558d40c17339128213d", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "960554ead497fab6da8f8326e649d8789878a3485d62baec382eec6ec74a414b", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "cb6b45720983f00ee4114d4e92bb66aee0e14646710b4222ede8dcf51a78d8e9", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "fc092910007cf33c3c4f79e73e04a4aabb0289c4453ec2099f47413ea5d21cef", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "4282d9801d60082ce98ced8b8dcc1751d46efb7942853673a30f027faada1fe3", +"TT_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "85ed163eb4f8cecb2fc081fea7fa5d8afc82e02c3b6af4c1cea0db1870e3f941", +"TT_fr_bitcoin-test_firo.py::test_spend_lelantus": "a8f1cb1391b7d8cc788ecb18fd241d0b1e3b867d1bb4aa1d2401d0b6a14a940b", +"TT_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "a62b1296175500e8cbbae79c5d9acbf08cd7bb2db56ba802598cbe8ea199ae24", +"TT_fr_bitcoin-test_getaddress.py::test_address_mac": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_bch": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_bch_multisig": "319dbef3ba835570e2ced0abd8b6a2eb2ecb9f73a1e834aa2fc137d562a0af1b", +"TT_fr_bitcoin-test_getaddress.py::test_btc": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_crw": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_elements": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_grs": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_invalid_path": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_ltc": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_multisig": "43a06936f544541fb3cb177228f8295fd82461fdf06f5d0b066e168c725113cd", +"TT_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "40e27a9421e2c2368c20f367a9cab958aaee23cbf7ab9c2d258a316878354c75", +"TT_fr_bitcoin-test_getaddress.py::test_public_ckd": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_tbtc": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_tgrs": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress.py::test_unknown_path": "e9af54a9868bcd173a8219924d7d6524b12f41feb2c4a54289f7c42ff607c8cb", +"TT_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "b194655f6cb752b80c8847c8c80ee954268e235273048c940df0a4408476a73b", +"TT_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "79c75a5bc38e932d998c4fd69e03894c973ea2625fabc8f82cefc1c3da59b09e", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "1eebf60804887106ea65a7b2fe440d4c01e1dc5c6e6c4587e84ce19f8872d296", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "7fb9e7f0eac4ba03ea81b6b42ec065b18f888e3cbd0b084aa9c9034f9be0870f", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "5e839645154aad708a1951a80b804664242e5c5b6cc5bb5cd4a878da8125c68c", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "17693ef954d7b577783545af36a362d9167ca9b19e4d818f7592467ca02afb35", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "d304c664b314dc27eb8c103bee4b77451a57c629134393749b503ef9e64fc9e2", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "e109da427bca0fd5815309ab2c9616e717b97e4c9b1e1b6c14e7693354625da1", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "a0f9936fc340e1f6ad52544d317e247198e57b77fe6494482828df11bbd217fa", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "736612f03919d7d82bb6e2fad8767b8fe444cd69ea5679bb162fcee3bda794f8", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "741570d2068be64feb02adb07d22ff05cccf12b3ab079390801633b5b74fc2da", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "fa4890476036073b12f5b05d787cf083be7c93c8e5b74e8d52b334e2cb55bbf4", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "561893d8f6ddbe3814ff826dba4f2551236a6b37fd11bf0b32f5dbd34c163179", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "08e20f1b07091b2bfc2f410af49f7e12c8803adadcc6b281a4967d311315be65", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "c68624e91497f32ac3746e223fc07b42dc1cf6569f1556a152970d99efbf676f", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "c2be7f0020f8470817e1a0911832218a0a29bdf15374394b9f42ebf894f32381", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "0aad9052315c4d147a4d094b3762d18bf839688e464fe308ce2885b5ceaa9d35", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "65aa193e0a8141585b991874fc970ad7418b35053941b4790fc59fc9c955424e", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "cf0e92bc6608f37cc66260252275fb60dd038876c55fb70efa54fb7edd87b4df", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "126427249a6bc873d32fa8c14e2949b4f7f6b060eb2eb437bbcb7e762def7811", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "66ad767153bc798201dc407b5ba2fc66156a0c9b378abadbb60e248917583139", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "94b4631bbe98e3220656f4f48e3ae3344ab19e8a005ce4718cba37d53e175f06", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "544a91c07bd19add222d841a0e0dff5728723d7c5e64e5ba5c94937d65ea96f9", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "8a67cc3ff5c0ca6f1e0bfa6bf052e4b2c4b6cd1b1e2c2a6ae8c4a4948760225b", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "8a67cc3ff5c0ca6f1e0bfa6bf052e4b2c4b6cd1b1e2c2a6ae8c4a4948760225b", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "327f32ee145117531035d2e905605735fd4a7c03ad9d3bf53cff6b129822984d", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "7f56846dc6593e1001703fa2e7c400bd280ada12fa6bac7b051c0bbe0527f914", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "de730631dc7a8973fcd4f8239ea2e404b70e7752665140fe727a53d82090930c", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "f354b015316e38f96d4bd123bc05e27dc303f4b22b5b0c5ac9eb0cf5da2275c8", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "52b09d51c7fe62f6a8c344418f000d1ef6d36f7a367bf317dba16ca902f96bca", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "c6f722717c1455bc618d460dbbc8fc9ea8bb3a205e71a827633a72291054dbea", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "5138c89787411f1c76cc879d6d4124fbe8d19d180a8c319817332e3018700c42", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "1b52bb3303ce8eabdc706810745a149a250cd39be5d355a73044325efd524ae9", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "cf765ab42fbabd4af9066c73b908b19ae33330365d4109ae0ad782b4da2534a5", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "19b622fd8696d9c8206f3f70618b4ef5192cbf6e45ee48734c1b59de28df59a2", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "565a2d4e1d5a8c1aa8425fad7e4c0bfac87ed2a6e3b09f7fc235d2df957bb062", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "55989f12ff82297950d0ee1c3be6d6abc47148606b9d91b2b9b138a8aa6f5012", +"TT_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "3c22ff83f1ca4f2cc5146d354d9fe1593b77b2e9103899066fecdff3852b951d", +"TT_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "3b96063635bee38d54ba35f84e46d3071316bd69b529fbcf9ffcfa6523a76a15", +"TT_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "90f8dc4458e1172f7c332bf82c94fa2eecfdb8023fb4e9cf2404122e2ce088a5", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "d579527c5b43c5565d293d0ad84d0e5fd2951a614481293369908ab26cdae60e", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "31fac4f12a4004311c8c49978ded24b0ee96b6bb5721628b7ba353207a66499a", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "694f2ced28c7e03b437f65e387e719b24567c541b65221d35a6de7ba8d319f73", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "a67bfc3f3005384daaae6178e4c9ae3108a2cb918c44603d7e83ab593d8348e5", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "20196d5e39f85ca9acc1672e8ba8990b25cf2fdcf2047f4ddf2dbda56410cc47", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "77aef05b0940d11d5f80616bfa67adad4a2da0f27869f71cf5fe5f04edccc259", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "a65f528b0c738853b2d2e2505367ae350555a3b1e9c7e4b48f58ceed41adcf83", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "2e504e7064ad8e1b73b0b0e70d76a0e0674490c5024a85bcdc8545938dcceb26", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "c7f1b1f278a37720172a018a38037bdd2319d8634a3ee94288a59c9a475435ff", +"TT_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "549e9486a09d429d525e64ccada6ec6ee011f00d372daddc9417702a19c50476", +"TT_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey.py::test_slip25_path": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_grs.py::test_legacy": "4a74ad2846ca68c50829eebf4357907572cc8757605a56aeb388e4f6c881df43", +"TT_fr_bitcoin-test_grs.py::test_legacy_change": "3b35dcb70612f64a95a34f1dc20bf9bdaf7710f46e891aa09258401696638b06", +"TT_fr_bitcoin-test_grs.py::test_send_p2tr": "a6475a667b8fb59cd6ef6e1fb7216550e392726f07166b996b46a17c75d67f42", +"TT_fr_bitcoin-test_grs.py::test_send_segwit_native": "9f891ac7fcd710a09933660f8ebd3b99304b3432191fff7789a1e5f90a02d8aa", +"TT_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "fb9c4b398777bf18703bbeb5fc8d72ed552897558d0143145f0e8230e1724a1e", +"TT_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "060d9d926ad4c5600a974a5dd1f98277259fc282f2a474aaa3713abc7b8cca2d", +"TT_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "57a7531d4f4927e45d7eed9c84fc86075ef13126f3bcc7216f3cc262109d0736", +"TT_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "478bacd19f4fbe984b2d8e75012465dbca82367f55a48f6bc731fd628e06b1dc", +"TT_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "76b1b9cc6b8697829fbbc37eeb77f04488f28c4bc11dc16c8bd8e2a7ccce3a3c", +"TT_fr_bitcoin-test_multisig.py::test_15_of_15": "0ac287cf7df41bd103c482c9f4749c2cb98a2f86d6ba8ac12aa23890c630b238", +"TT_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "3be22ca7f640c47f52cb54c38c26ff6e416ebc2593583fc4cdb9119719245952", +"TT_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "77c350266af9f394e03f7ded527e1caf05c006f82d2d12ea6d1c2a25e6e2a31f", +"TT_fr_bitcoin-test_multisig.py::test_attack_change_input": "95f4727ae3b6d7eb1d49c1b80226c97d4b9e08bec9ce6f313bfea9a3ee9fed60", +"TT_fr_bitcoin-test_multisig.py::test_missing_pubkey": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_multisig_change.py::test_external_external": "a3d98b7d5d950429507bc785cde38c7692039c549c340b5fc63ef66ae92ea3d9", +"TT_fr_bitcoin-test_multisig_change.py::test_external_internal": "f867dc55e3cb28820c7d650ea454d399663ba86313f0dc9a75ad08d4586dcdee", +"TT_fr_bitcoin-test_multisig_change.py::test_internal_external": "f2577ec9b30de24e479a9e055810d612edc00c9d7ad143c0b710593041bb409a", +"TT_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "8a981f158f60b495d72b9c884b5447f1a8f00a5bf011e9cacd6501487401f94f", +"TT_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "cbf367d60aef3bbf10f3e5fdc024354d1fb0b424ce01eb9280f210b22dc53d65", +"TT_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "ca4ac1f0ee46f8e97c7bf02400113baa1a44bbf852e9f500036aa5c72fc45846", +"TT_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "b7d23e6cbfff56068f7b28482614b959d671aa24e00ca804a2c04658209ee400", +"TT_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "f38b6d3381afede5053bcf26766739a72dc5a70cc6ecb5a5ca1ca1930d7ae215", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "6a370eaa0e0a025ef698815801da599410da4719f93952d9a56f2486fd18c482", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "d534729fb93e7a58ec64e46965e3d121837fcf962e75bd908653d94aee3a804c", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "392a15c087938f8a118ab223813b5784898e4d7c268f75e93f34e3415c9babc7", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "34885ce1db3860c9c832aa349ba5ebb688c7c54cb1159dad933d00603e4948e2", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d04a9b3e471c4fc9e863bdb70b72fcb249910e1988a04f396dcefdea6da17fb8", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "e968dc4fd99adadfbc87f11b31093d49420a72b0da72c69973507a5bf14871a5", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "51c235d1df129a0dfa397ba115b9b123bd0ed6a8adf3c211bcce4a8138ee18d4", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "a5d7b88acd1c3d7481493571c023aa4a8a51479d3c8824289c8575c13ac559aa", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "f1efe58b944086424d6b8fd69ae67d10408d7d4e37f598d8378a2a3cce2b5912", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "68a2dfc51ba76e5ac0dc4cdb0a85ada7e3d5156d4478768578ff4a3d16f34609", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "6ab9d81a6f9e57c0ee53c386c3bb8f436a948b59413cf0ec45f2b6912d85b29b", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "e949c406313d9a72bd234c6c2a3e8298bfb401064c485d65a872156fbb141c51", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c8d1f8497abb94d04da5488ac0ea8e08ca72f1c5f30563443748d1bcb1f43ad3", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "a4315e16eefc64506ec19752e8ae56f476f63eeff3afe1efecefea2f75fc8b4d", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "ff67a4d7d88ee2294b96253f14cabc25ce151bc31a497a3eedb236b2578b9e5a", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "e0f0fbfa9e69f736058436659051c85b59f963e671fbcd16be8bda9652c05515", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "ac4ce443be06d575faf391fa33c8e6fe8c123c079c23cff01e1e1b56bd0d12ce", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "92c4aa7eb706905744002cf776ff7b39275f877e985a3bafbefaa646525a6bd0", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "99c08bf5b223011cf9f7feb66c50954e23623d78b28a19085d50d37ab00e13c0", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "e88826a4231c8a138b54d03eed1a9e76f6f63e6293c8ce0452ea591132214683", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "f320a0fda30341ffcf70f0b5f64d6ae4503be2f0388b248ddae4ec023757b79f", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "d84e3448c392a3660942ce11259fd5a2fce22fe5ad3875001d21b566228d357e", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "15913f8388dff8ee3346e935deb2dea0e4169c60195aee64501b524ea045fd9d", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "65d7e3badf4a4857ff65a4e13e28d1a62d5d1d23f37bc36d9d719e31aa56e9ca", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c500cc6ced96519856ddbe46c13e4d3433ca725a5b4406d0b5d5493c1ba25d64", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "088d7e3f9e774065c71044f413b42daae3c5d839f94ad2b3de4bf9f64c02bf23", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "e674973fe177bc9c74c3987b94772cd4dd9b3b2dbbddb15e89346c7dd82e452a", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "a3ed41112cca1674b619b84a529ce805d844fe1c2024e2c35ef3ca44e7dddee1", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "7c0cf1c6e477c4c54923afe991fd81e136e85399c1ad55600eeca5e80b39434f", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "2f307ca397091b10bccfa7edef542cc3224a13466dcfabd26933c00b36160e4d", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f97f335c0eb562cf4407ac4044b42d2a1d75aa63fc2f0bb3659e0e01a7c1761d", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "7d476c7f13d2637cae2656996c237cab4dd2a462f92801c2aa9dd25d258ecf3b", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "2f307ca397091b10bccfa7edef542cc3224a13466dcfabd26933c00b36160e4d", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "2f307ca397091b10bccfa7edef542cc3224a13466dcfabd26933c00b36160e4d", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "2f307ca397091b10bccfa7edef542cc3224a13466dcfabd26933c00b36160e4d", +"TT_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "844f0e0d264d1e321da77bad8bebf78d20d86d1963cad70741f6da44e8f7874c", +"TT_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_op_return.py::test_opreturn": "66715a80376af52f9adfb9ca343b3e04ca9329bbcb253949dd33e8292151707e", +"TT_fr_bitcoin-test_op_return.py::test_opreturn_address": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_peercoin.py::test_timestamp_included": "5fc8ea00919f0208f23f9a6fd7c9bccb93e3a1c03a0108a3537aa4e04602c978", +"TT_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "e4e8f087e6bfaff509b076ad2d4a385671d0d3feeaedebd9a74db84a047e66c5", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "4a3fe2858fd933a479d873169ee70612f3032d96b70cf9289809f55f1e7e1a65", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "4a3fe2858fd933a479d873169ee70612f3032d96b70cf9289809f55f1e7e1a65", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "3fe58339eb70bd9259b43461f3017b789af3c594f35525c41a2fe66764fb7e40", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "d10e503034eb9eb72bebeb2338b1a594d480789bf4efc31b78abe1f17d2d30d8", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[decred]": "5c7233e8fcf5c6560dd83e0cd3bf9530ff5f4ae5f2953488f9282fc63bafeae6", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "ad3a4a410bedf7466173b16a8e657b6e91bac751319c2f06a27e00d004e65266", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "8a4180632ae18910b3fa0c3aeda39d5d2e14a4a7a417b691fec5c99f0cb5f346", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "86a82f700088e734b683166a8750bea64b2b1296e5eb56ec47a92218504a4f45", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "b3b342f50c424887c7b09e411335b3e7f2208dae25bb51310cf62a1e973861c6", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "11490886cfb48fec2d536c9cb9743a107426512cd6af51ab2f9b8ac4e3bf0c94", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "11490886cfb48fec2d536c9cb9743a107426512cd6af51ab2f9b8ac4e3bf0c94", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "9a226ea18fe56a0030241f0921c70b1c8b05ab6e0990d3373d368b1714ae3cb1", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "bde83e4a647b13dac55dba92b855b1f2f3d6930e757a92fb357c70bbba6b28d5", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "80bba3b93e551cceea969fbab9ea1e2b8d95e5169fc0e1e4c13bdc3a39b27804", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "80bba3b93e551cceea969fbab9ea1e2b8d95e5169fc0e1e4c13bdc3a39b27804", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "a91538a81b3745a3ed0ec1fb5646ea473f5236277c970aa1e02bde4eafc2e4e4", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "a45562ab25c19abba0145eec2c7361674b673f4828d69a85c365f8d48ebc7536", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "1b6cfed396dc5676b1e974d2949be19b6df9706e9b2b21a5834340668eb9d63c", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "1b6cfed396dc5676b1e974d2949be19b6df9706e9b2b21a5834340668eb9d63c", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "fbfdc061743579d54915f4f5d4d5fb137b784239f947de8c0fef6f0c9250aee4", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "6f569cd7f5814111c9dbe4423f39da55016435e5c83e5d856cb72d883a81961c", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "725a1360129adc13bc068d1fc030cf0f1c5f215fcf30692f8393090d91aa37f3", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "725a1360129adc13bc068d1fc030cf0f1c5f215fcf30692f8393090d91aa37f3", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "77180b4a27f161ecc4c4c1d1119aef0d32e83933c8b5f9f5f847ab817aaa6772", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "313b3aa3566732db3109cb11598981cfb10585173d3788462750fe829bf68b51", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "4a75cb0055cc2e0997f5f2d1602f8d2905730f9fb745df30a40c1797e860de30", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "161ab1b257422040e9c3b5f4c769e1af4308741da84771d17fdf2b76594ed284", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "21ad5ddaf1d0db547a825ecb3050559aa87e8b9bc560f1394e8816aaebbf4a30", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "bf22679bf92b40ee7fa2728fb6c1c70a60b89222a5b38a0e006325dd3c38f955", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "a778389243eb3c4c0b4f10dab28345b4b5d44646c4ec2beebbf6c578846a30de", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "36d0d3d7e1c764c4911198bafae26be0d3d9097e8f686496ce25135ab9aee15e", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "36d0d3d7e1c764c4911198bafae26be0d3d9097e8f686496ce25135ab9aee15e", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "c4cee3d54368d09194fa521d38c8a574cd08e26292804bf7108de2e3d7e7ed21", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "bf07dc339ad9694027526c179bd3f59eadce04b3526fe16563c9e1fe593439c9", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "7b329be08ee82ab7e3f1c5b13b512d5668cda4f954fad12d0dfa641b10aab931", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "7b329be08ee82ab7e3f1c5b13b512d5668cda4f954fad12d0dfa641b10aab931", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "76a0e74cad8635592d9cdd1332a5b8a026115d20ad40ff1dfc97f384e5040a50", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "5dd81ea89375dd384cebfc053ac13374277af969c1001b91c5866508f61b8ff0", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "08535cb1b9e5a6beb3cbf9ee17399433dcb4254524df86e982d8d8ec9c0d6194", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "08535cb1b9e5a6beb3cbf9ee17399433dcb4254524df86e982d8d8ec9c0d6194", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "149b905d46418e7d5501d649bc166b2374fcdbd5a74d5df94247a17ea1111524", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "5e75e90620979b71d7b4176508831be53b74c14281949b2fdf80a1ad1a30daf8", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "797e25ae7728fc02209f60da8dfc8b999c18de848bf6996795bc309becee3a3f", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "ed18f98b8abf7618c7e62cea53f63a318b6c01d6c564e4a30c1e2f60171f5193", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "704633674b6f30a72a024d43fdec63ad489b39f687aa1603ace9d25f8630ff2c", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "caa0635e3f479cd2b255b2f94b646f48ece44c8580d0b3f5964041e8266663a3", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "3277e9c31e49b9e0fd1989a08644152548ffef59196a9b9fac1c638df0da0de5", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "31019a7cd32b40618d3879207218c283edc2ab5f3b300303e04e1f5795555092", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "1bba5e5cf09878cffdd9836631b8c016519bdcf7820b7b068e56f25ed316210a", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "578bf6d2f91accb8acd5852dba67510ea5f5cbacd686eea15bc108ae3c7ec06c", +"TT_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "f798d315408ad830de51b4d833aa26b58a55dfdf24632324e691bcb9a1b23127", +"TT_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "ce5352d13e8f6d28d224da98c012bb0b8495da71b0e2ccef882be76f01a7a076", +"TT_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "226c2d8cb37682e9173ca42bedc4ba02a049163ac7520606fd2cc1e25211c2e6", +"TT_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "4122b6b2f83e9afa561e98201245c028d04eb3537e665ae781a8e2a4baa043cd", +"TT_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "4122b6b2f83e9afa561e98201245c028d04eb3537e665ae781a8e2a4baa043cd", +"TT_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "3d47dabd03057498fc5334381cf27aeeaedd0c87d57febac99f4e84eab25bd9e", +"TT_fr_bitcoin-test_signtx.py::test_fee_high_warning": "4b80c65a299e4b9d82d1eec4650f818803a4a624532aa4d987d0726d4d18ac17", +"TT_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx.py::test_information": "ab296dbf35563502c9144201c3c3626761de015960fc51dfc6d0122a91e7f8e7", +"TT_fr_bitcoin-test_signtx.py::test_information_cancel": "a8d9beb1852077518b4a983507cda7c89cd3d2f148508d1f1fa2e7cdb34734ca", +"TT_fr_bitcoin-test_signtx.py::test_information_mixed": "54df5be37fa706d5b62d59f7186e1359617dcb92519ef0fa4381e41ae075f190", +"TT_fr_bitcoin-test_signtx.py::test_information_replacement": "818796902e7ea6190ba357105f0e011765ad00d877de5bc3ff8056cf534fc547", +"TT_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "16c34be2f543d58fc55a991b85f1f6b7401b7e643e02ae9afb99bbb64d91c4cf", +"TT_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "ded136b184fbb42b20e8289cb7ccc333ce5509828b82d6a80412ae448786875d", +"TT_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "485afc6a6cf7dc18a5046fc60c2348aa010214965f2c90576416773533505717", +"TT_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "ded136b184fbb42b20e8289cb7ccc333ce5509828b82d6a80412ae448786875d", +"TT_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "485afc6a6cf7dc18a5046fc60c2348aa010214965f2c90576416773533505717", +"TT_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "5bfe8042aa7d31d2e573017b8ed1bf79f34d35e8b49dc1be6ecd336056c89423", +"TT_fr_bitcoin-test_signtx.py::test_lots_of_change": "b327cac244f1fb0846ea87f904ae355fd4145c03b2e83448b7d4ea30d7efe915", +"TT_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "61dccd23c0f8410df5619fbc40f98e0328401a5e3468ee782d4bd42064c1bad4", +"TT_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "401985d2dd1fff4710cfc9618d3798b3b0ba735184ee87ebbe0cd5214780f527", +"TT_fr_bitcoin-test_signtx.py::test_not_enough_funds": "f49782653fa8a422e28b50bf5dea01a56c95eaf8c6913b9a83ab676cb48feb31", +"TT_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "2566f0240ec0ef78eded21c9e8535fdf2b180db5f5979e770bfcb82f2eb4edbd", +"TT_fr_bitcoin-test_signtx.py::test_one_one_fee": "a6762995b83dfffbc2a3982af83f06e1d3fa480f2037bc64843e152df3ed1e63", +"TT_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "787733cc9c90b9a4eee2728297d8c59bdb0f116eaff345fc29a31615e29e21b6", +"TT_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "6c0b0550aef4fc8a093b563dd9c50fd58a5b57419addfaf1b6726c46780a4da0", +"TT_fr_bitcoin-test_signtx.py::test_one_two_fee": "d3d5295b1c85b0dbe6afb5c2af8604c5266cd42f6c1c89e2c037605c48b53316", +"TT_fr_bitcoin-test_signtx.py::test_p2sh": "c6f45d7667f7a80b728aa0eccb2ae4457bdd77e69170f3e7948cba20b36996d4", +"TT_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "345249dc6e528982e962fb59b19e55e8179d6a039f5da469448a45d481508615", +"TT_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "345249dc6e528982e962fb59b19e55e8179d6a039f5da469448a45d481508615", +"TT_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "345249dc6e528982e962fb59b19e55e8179d6a039f5da469448a45d481508615", +"TT_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "345249dc6e528982e962fb59b19e55e8179d6a039f5da469448a45d481508615", +"TT_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "345249dc6e528982e962fb59b19e55e8179d6a039f5da469448a45d481508615", +"TT_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_signtx.py::test_spend_coinbase": "31bd9792aacf841cf105c0caa2cd417b150c399488666c9b693e1c5fe08f7d94", +"TT_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "b16bf92bbd5f087eabcfe7e0652b34a4f9f7b992d0c2ae80feeae888caef79f8", +"TT_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "b3381ff97614f91449377a86cd04971074ae5afd69e3b83f41dd629452397821", +"TT_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "4122b6b2f83e9afa561e98201245c028d04eb3537e665ae781a8e2a4baa043cd", +"TT_fr_bitcoin-test_signtx.py::test_two_changes": "678afa68722ce9f77de518d07108eefd977bc29926f82161bb5eb3caa7c2a325", +"TT_fr_bitcoin-test_signtx.py::test_two_two": "f34e47aaf40ace5e250d5607002f2a0c412ce5f2fd314a8e0c4201671aa67f9d", +"TT_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "a6762995b83dfffbc2a3982af83f06e1d3fa480f2037bc64843e152df3ed1e63", +"TT_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a6660166e239cf2ba451359e77bf538ae8558b9df3ce8093ecd371767a87d8eb", +"TT_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "d2314fa43bc42c56b86d5c21f8aa5280d05cfa40ac9da9e2d7b7fd56ea1e4619", +"TT_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "185ad83ff27d8523c71c7bf6352eaa636e6392446dbe9fb77337eb37595fc35e", +"TT_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "a6762995b83dfffbc2a3982af83f06e1d3fa480f2037bc64843e152df3ed1e63", +"TT_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b9e3e3d3dd3f04ad7017ace3119b86ac9df9e0e5003333d58f9da9755dee38f2", +"TT_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "4f389e06bd5eb57f2937839837616e981ea082077a02a4470a4a98eb115f0ce4", +"TT_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "1d61c97844136b6f0af5155aa1c16e0649eebf11b861ae8ea0e1440958b35557", +"TT_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "9546fec4a7a8fc932d50b27f17af372ff3eaad809a95be4f3ac92daca44dbd3f", +"TT_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b9e3e3d3dd3f04ad7017ace3119b86ac9df9e0e5003333d58f9da9755dee38f2", +"TT_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "0f1da6ecf9ca27a789bb4f186d78bea9d597d45822beaa39a660bf4f04ffb944", +"TT_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "ba339c4009583affde5e6362f1e243aa22c6fde0cf7fb059dd89b8a90e6846ff", +"TT_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "a20a29b8e764284eada05544231a38f15ecb2fa1141fc895579f63b28d95cb30", +"TT_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "a87b4be1a5c491e597d930070b0cc509c75ff55bc64fb2e68821bb808ca35bc6", +"TT_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "908318f355da6b47d190d666627c0ce9d8d0a763041000f79519d2ba9ca2f21e", +"TT_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "95d502f5c711d6eb6bc8dbc3e5ede5eba2436f4774ad25ce40f3ae3c566f8922", +"TT_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ab7aca0506bfad8c8b030018cf24eb52b3b73cc3a4f517783bd728f13aad9c0f", +"TT_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "ceee96dcfc3eafcf8204f0a10cfb3b82f0c9e3990ee8065da2c82e5bcf0845f1", +"TT_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "789ce2e7045ae3ac7a36ce616f12da72c48c0d936cdb52039782046acb091f61", +"TT_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "f183f37ea41856e4b3786bba1ad11e004d03e490e8d47f0ab73697797763de6c", +"TT_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "e2f11a1d98cfbc385a4f9ea65879975c8454f51e961dd5a7d725c98d9024dce3", +"TT_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "2441ce8ac4d4efbada46920a9711c41d7e0edb42b82f6b049c7e49629b224cb7", +"TT_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "523971daa163fcf866c7696ccc1dcffa15e74ffbfa11ee1c44112fbdf3e41b9a", +"TT_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "fceca9f6f53170ff8925a4236294dcb369891b0eb2a48d921bcd444e53072877", +"TT_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "523971daa163fcf866c7696ccc1dcffa15e74ffbfa11ee1c44112fbdf3e41b9a", +"TT_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "fceca9f6f53170ff8925a4236294dcb369891b0eb2a48d921bcd444e53072877", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "256ccdcfd7523666c8e9378ae3e0c16d7ce9c1a9100f6cba1eac79fbf11156e0", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "6c46d13bc81cfd63fc3299fcdf029157d262f6c7b9b3ad9dae79c4560299df84", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "fc14d7f9747f9cdc8db0452a1e387db734b5f294e59578a56d6cd1dcb9c3baa8", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "f21d1dfd4b1f55ae55cd91bd9897661b7dfffc6cd399347fe56e93995d402a29", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "f71b5293189949d763a6801f89809346a26f710142abda2a5c97f33f8098af73", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "11fd667b7def5ec174c56eef3b88e62fd2a4caf32674d1e235ad24b2938b4234", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "2e69af91dd1102eda2c224e960d6b6f3db03334eef009c01994ac119299c1640", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "83065cf8fa7abb5594e12bf7fa383d01b3174f8136800625d5d086bd80c64250", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "e7b436bf1136b2f953c5865e715a9d2b23d7a29cb17d2b25143a9208113145b9", +"TT_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "66b17d83911cb19fe3872a8acadbd3a395932b8517929f23668365adaf90a9f4", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "a10af821d753e360152348bc2609bb5ae6a08d3c1c62ccdbb7e05382c375db80", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "a10af821d753e360152348bc2609bb5ae6a08d3c1c62ccdbb7e05382c375db80", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "a10af821d753e360152348bc2609bb5ae6a08d3c1c62ccdbb7e05382c375db80", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a10af821d753e360152348bc2609bb5ae6a08d3c1c62ccdbb7e05382c375db80", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "387e73bc3e4fa803da820bbf049323113a2a8d8943b616bc37abe72bc7c56722", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "387e73bc3e4fa803da820bbf049323113a2a8d8943b616bc37abe72bc7c56722", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "387e73bc3e4fa803da820bbf049323113a2a8d8943b616bc37abe72bc7c56722", +"TT_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "387e73bc3e4fa803da820bbf049323113a2a8d8943b616bc37abe72bc7c56722", +"TT_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "88f7fb81da88f546ef235b4a2bd2eee2e86adbc8988673168f48cc5e2eadcc1b", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "acc919e386389bcaaab5aef73f280ab8d4240b6bc98b1c27c3655617279e73ce", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "39fd4d1f216263a948da35ba8c4f651b83e9ae236d71b53c28dd5801493e36eb", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "39fd4d1f216263a948da35ba8c4f651b83e9ae236d71b53c28dd5801493e36eb", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "1f772dde5f95da834f9c1951c7182e94337aa63a4bfacdf96fbe824144e9d960", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "80fcc80366b9c49a208574eddf1ac70d48a1a3b04845c6e8ce4c43580836d17e", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "a23559fe6850ac00936c6a7f55a7358f3e0bfeef8456492b884a9cc1c448724a", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "1f772dde5f95da834f9c1951c7182e94337aa63a4bfacdf96fbe824144e9d960", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "7e98e65f9e6c185e538b2d703254e7510b2e9660c8b531b84e23a498a23c1aec", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "16cbdd04e96204c119427972bb4423fe60ccc950d5ebebacf5d6ccdf2c317db1", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "16cbdd04e96204c119427972bb4423fe60ccc950d5ebebacf5d6ccdf2c317db1", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "16cbdd04e96204c119427972bb4423fe60ccc950d5ebebacf5d6ccdf2c317db1", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "aeed6b2ae2df24f8f985a0a284873426eed4e745173d8d6bb4aa9f40aa6c370b", +"TT_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "16cbdd04e96204c119427972bb4423fe60ccc950d5ebebacf5d6ccdf2c317db1", +"TT_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "b1db3210b6b476734e0cda8ab0e5ee1874acb5ecc273b31fccf315f01a5263c6", +"TT_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "53657bf2701a476076b42b19dceed0bad12baa8a1ed8887f1f3ab9c411e0bee4", +"TT_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "ecb7f64fa6f6116b2e6c7b7025d73c20d1ac00b6ee8de4fc89ef492a72ca004c", +"TT_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "7e8b1f60882053f39bacdf48b8e15288bb4ce307289b4a1881694c5fa78864b4", +"TT_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "e49da8f0c55ec1f522ebd0247840b705bc21b6b478e103ecd2cc0e7995860f35", +"TT_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "8f2c13bbcd3a3db44e34342c1f70807e0ffe364525bc20a7959deee71a4329f5", +"TT_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "29516ee5f7f889c140ad2ed3f0961008d9c2d7d407c8cb3834bca6aa477f0813", +"TT_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ad1cf982649691b00b513b9ca2503be583326dfd0e2f650ba441c473e05dc47d", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "4a3ffc001c37f08adf5d7d51fd06ed6808b59f11652fb9cdb895aa85259ef2b9", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "05f0e485aeaba6cd3d744247a6a0867f2053436ec50fc37576e2a2c979f3ab37", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "a04109a396cb003601f2b46123f4835282022a864f53e52df2953dccf04cb1a9", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "ba5e8cffde27b773417be6c8ade3c3500726282e18f77aec96961a37991ce621", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "01d2c939b39aa30b23ea86999a0cb476c2b54f074ce58ca14319c17a3e224403", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "308ed57f6eaaf140e3280137a868bb2d5f240b37cf9b89b44d7be1fd27b9862f", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "b9e3e3d3dd3f04ad7017ace3119b86ac9df9e0e5003333d58f9da9755dee38f2", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "9c64528ee4378846aba5a9d48b4afbc42b64bbd27025f33ca64f87d1563b2083", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "90e473a5c520ff76afe0b065af3a512ec29bd873d1ee1bb1eeab4dd08e294dd9", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "e465d5b639fa5f37debaa8260297673e504d7dc95c7e5d6cc07baf3a68331160", +"TT_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "3b9617fc379f4a3602cdaa97e3e128050f361ef54322f17798d07f0b947d9ac2", +"TT_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "ae090b57e1d70b34fa2632fa683bf22326df79de0db2cf8ecc5211571cfd2924", +"TT_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "c5c0c4ac7e698c2f07e1fcfd5712d922873ba82248040bb32f854745896b7d9c", +"TT_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "eba49f0679eec477b7ce4663dd135f7d815d23c37b2218d0431c056a08aef5ba", +"TT_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "78f1b6e76c2324e6e338b561f479c2c8dd7c6dbfeb85faef637bce289a48e5ba", +"TT_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "fdf6c5c6f5e898a05366b67f5304191cbf7d729b4c6b8db7b4ac46e708d9bc0e", +"TT_fr_bitcoin-test_verifymessage.py::test_message_grs": "fe6ff2dce42da6b591870204ac631ebb4e8a7014fba61b652bb9d208da4b06af", +"TT_fr_bitcoin-test_verifymessage.py::test_message_long": "0c3283c2cf2ccb1c6e5cb0410ae8c9aa3a9419dd4bdb17d5c267c00a521196cf", +"TT_fr_bitcoin-test_verifymessage.py::test_message_testnet": "bda62a6a0a7d3ce80922cd6eecf894c85ead9a282a62a9660160635cebbc3ed7", +"TT_fr_bitcoin-test_verifymessage.py::test_message_verify": "9881e27b48a1b071198eaec308c45bcbf7037d847f06973b761c4fd6a2833257", +"TT_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "a08b8287dd3df5042e0d0bf3847800a462a5f380d5e8c07a831845e64527e9f6", +"TT_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "9a2ab8b84165343211ee7b068b02bf754de8d92179e8c6cdb5739313993ea60a", +"TT_fr_bitcoin-test_verifymessage.py::test_verify_utf": "c98784d795f93f446f24ba8c5dbdc0310819f109a763dfd4b6c111d3ce41ee53", +"TT_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "eb5cdc3f6ca78730da50143908ca22138301b95642b534e10821d1f04bdb56fa", +"TT_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "f1cad038714fc76f05d00045f6fbd78ee5e2735dc889be475f0690299ab64720", +"TT_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "ee5b576df9fd751d00ffb146547888bac5a36bc1f2ea7d97b1321cc64c65cf06", +"TT_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "098e797f9571e517b5f02578337cb5681cede33dce991b541d24153cca952485", +"TT_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "af93af1ab4079530ab1a3f37eb62da1cc0c9e6bff9321d8baf474c7c0e346fd0", +"TT_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "36c28bf6d57de067ce7bca77ae2dfaab7e02abf5d48cb74d974d759222df125a", +"TT_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "6f1230cd6c19b222f1d9900203e0295e3fa51e31e3a12dd2bfdddbba4a965664", +"TT_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "60c9d30a246eca016e1543c5e982b78e66b99f5e756d2f3492af2c6da111fbe2", +"TT_fr_bitcoin-test_zcash.py::test_external_presigned": "b2f883afba261909c6c26f9d8f68e63d0935e9e06b35aa11a1640e45ad5c7bea", +"TT_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "c7f42484f0e51e8e49a7fa7153feb3ae27e80b10e72c4435c025e43976d1f7ab", +"TT_fr_bitcoin-test_zcash.py::test_spend_old_versions": "ccb5a027605839ba51f4effbeb8560af458e8e5835707bc70ef3859c732a4897", +"TT_fr_bitcoin-test_zcash.py::test_v3_not_supported": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "f582cabc1f68f01f5d1de32d19f2574e90d6cd843c4ecacebd5a5c95e0e0135e", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "491ab8047e678a470e6c073566cf8102280d3624e3ee864c2781a3567dab9916", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "f65a90232641d1e292050632c52c6ef4fca8a556e8a5ceebb8fbb26d209205d9", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "06d858eef198c81d74d0d5f9ac62c18457483884c3bdd9ab89c609f618f0f742", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "762e69b917386d68e3f7cf981ab45a0ab3a4cf7e67ba1af73d667d82f223cb03", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8d4c985416a7963cf5cb9451e88a67d82e4acb0d32a7c62a5de4ee13ebf0bf03", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "39da213ac49e6bbb7bedf30b2a64e4424de299134a4e622de42c5d4139c97ca3", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "5d683632278e6d299cc7ddff2c9d654449dc48375cad3894053447a7640467b3", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "3c2dcf6977174357a669ce2eecfe757a68001bd181c7a1a30ac5c785522140bb", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f627b8d887b3ec3eb01098c01e2946a4c01270cd811d97ef21f52fdd17bdc7e3", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "66b56b87a13f3a95fcf6e9f94af0d6eb9c37e3fe0c455615e7fec8ae2c3eac08", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "82a42e40675329d08658ef5842810160d512e7d91ade3b63276694210e0cd2e8", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "db92380d81e205f68bb8c008c37664a9c52051448d37dd3f9d538dc388543eb2", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "61f6b813e18825d44be606c456267d40d0fec4eecc0e3007d980921efa59fea7", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "8536f37eeb738d6a0d4dc27d4a5ef0b1e54c64c4ea438bbc2022b47b3dfcab41", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "0564e41ca75ba6405e5b3abc20b93e1a9342f1606ee082588f27268e956f0d79", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "607aea144a5338fdd267b20709285d3af343eb1c4edf3beee50a5aa5512d13b0", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "5b3a586ba428eb43ecc32ebf3eb1eb7824bbcf09960b3bfaa192b43128467bc0", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "d833ee43ae1b3f6f7fb85bd67f437a8f42f0f6bfc6baf6a3b709b262578c369e", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "bfc8de3dff91a758017d2fe8bd223145247fda0ca22d3b4dad884e4684fb4c33", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "36cd43de715e7993201cb37bad55cac7a4b1e4864b840b8dcce7f49624e4c6f4", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b5492eb0397ee24fb621ab3e3a21c6b77d31a884e44c3c6b49e3d006b12ac68c", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "e4bd13c9f6512e603e4e8e4a3543467146d7cbe7c14ed5787254d540a0b57ed1", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "9ac2aea28131ac46318e751ae2cc4c48ca0cdcdc231a4917b2ca17cff09c3e69", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "f8544ac0ad1820a330a7e9425d1d21579d68e6d3618c41c91b52a7d37c8489aa", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "ef8fcd716a483a2030e660200108da9bcb3fd46cb1aa583397817d7e26116ba3", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "b111fd2c751fc8d0c6b13a8c8095eb944c5911f29d9988b39f77e67733e5f1de", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "9e5e7e27b6643c9da9d02e745ca70c71c214d77f48bf441dfac7a47845befab7", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "143d4d0389a919bc6355056abd9379d7b0ac5d79d0bfb0471b1b68a5c0824c09", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "a8e358bcb7272638a9a1d61604912d3648df9848332968c283a3ad8ee4aa7597", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3a3e14185878f03c052523ed55bee5033dddb6d6a123f7cea33eb92db4fbcce9", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "13271847426963057ac06971ec1aee04ebdc4b33f6d8f8162bd3c282ca1634dc", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "968b4681b8dae74124c1713da950d35d98f346fbaa6936f97c88e57c8abb611e", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "301125e91ecc3986cc1e83920804f3d26169b3874e300632f2fcc82bbd5c50ea", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "952c02681e3b6b7f896c84256b1b745340e67a01b5e1292faaf40c05e7f02537", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "28803d7fe3419595a4e06503b9fdaeaf443c9af3a7024b7bc278a3c484ac8fb9", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a065c76f655fb77414a1e509803ac62873df05846174cb8c18d68e37993fbe29", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "307e9ee46a379b755d4b0a9db8edd90aa1108279c23c4d42a9f389b3c96e4939", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "30c1a1785b85a1f1b6a56f59f22f1610a9b1a5e9287253e40a3135604200cb54", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "e2227c05a32b9949e83fe330b52e0d28ca2d5737db4855aa978cff530d8761d6", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "f561f86dd44316865f121310f8aa8d6975b9224ffcb44ff2984b84418296f07c", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "afad5c31e868d242462d6ad7a7532e03ec92c98829eca229ff1c3f45d20f7891", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "024b896578c0d00b8d88c183e7168e4ca7a48941388a450479186aaf47de343a", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "56a9f18cd4668ccb5b7cadd5a5a6586db50cd660d7e6c6b6f62dafdc4f73b3e6", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "1f42f294e61d3113e7d6eb4afa54442432a7f56e91e0045bfafdef25e9d9b80f", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "f8a3723c4234431b62f7cd03a5a8897a2894d49954fea0dcd910cc6d45a49c2d", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "e782a3fe466e72a5fee65838258e4caac44f4da8a91e83133d857da16cae303d", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "7e63c9ae3a9481729e26eebeb3efc7372059b727f40b0df696afe487196349eb", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "bae0846a4f3ea93b9a4abd4a58e4c67521c9f475290d896d512b969b9dc8597b", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "3a75cc0b6d95270d7abc8ddf17df9733af89917a293895a872a64d803a32e97a", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "40e3b207fe75d864ca9d1e8ab57065a66aa4d29309302cd69d8330867a2df4ea", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "ad5adabcfaeadd1059a6d3f524506ee09e98455b3daa0bce533d0874f2740b10", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "ad4c069558702af6572fbf19d123d9c7ddb3f7b88683033e0fd2cdf69d439d1d", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "3672202c133b4ebcb10c0442bf1a8d82684a36a0cb57dac55d6c8271a4a31486", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "4931a9d46dfb20e1ef3001feb9495f5c4170b40508119773dd7189604c110ed2", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "8b03674aed4f43f0b3fd5b3baeea74a6208fb8d9cd1f05db04544a84719cefae", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "252f6d9d26a50bad6d9ac84e80fba73aced92aa36032de0d343084056b248b9a", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "85d881534e5dc608037fa42bd3e8523f153780748983b6e442949aa6cf27615b", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "efb14be5ae9daa1fbf48f4f69c3e69e919b1fdafb5416cea97c539dfbf5fc864", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "9e2d28bfe3b9e58afdb60b735ff60fc01c880277ace44f39ac5c46d52eb98a46", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "a5b7f98d83409e0dc1f5dfba9a2cfc6f2f9fbb4b68e4c395a57edfff28b1e1f9", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "ef6143e7e9e03e280256b6f960468be55f950bb65e37b004c02ea97dad48e670", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "d61d8e19d5340d8e1d560c21bd9619eaf2bfdcca22cab850b96aa5d1577e9ce1", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "056b0c64740d68865db35fd8887ae2a3ed7b7a45efb7bff5cc40a2feb35f9a03", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "b5019dec989cee098127b6f5e875a5b116e01837594581627b698131ec716ea3", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "21003c9910eae78bbf5bc2071dfd1052e293edc3dfce79c3fec87158a93d1c55", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "f6d7c37df71e497d22f189243f7c7a43da704a97f55566e4958c4f434a014e73", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "a021f75d5ca5a5f81bffd91ae325d51168dbba5bc65e37405fb617cbebfb3cf3", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "612bd60a4a587b8bd84fad1dc597f106e1ef07b6f4787f3a8732eecd2eaaeba1", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "743ff32670e23c79467b62654c981384060843b6687f28a0b52a32ea6725a69a", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "eeb9d78bed8e6534feb0d9590c3db3a44689f211aa947af52052c8274c8561f9", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "a4c093be71dae72b49d1436151055f8c4f77a8b358ecb44036da182f2a654f1b", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "5d02d129bdee3097fca7fd13cc123457f8ee5cd67698193035b4b633abdfc668", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "043e92ec3b83f7772df348ec7ac3b128892c742db9a2dde5c20bbfc14d1cf89b", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "38ceb9fc864f202267b62a450030e4c84388f1e29c00eb8f64480569d689688c", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "04b44bca791b76d2efeefd5d53628ecb15083523027b880b24e6591202dc9838", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "491b59670fed70f6fdac641ceed46385c55c8d13a05d22cb32efb72a5bf910f0", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "bea8b0a63a83ef9aa9fe5400d95f20d1407810b0fd90f703ebcca9b34b84647b", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "8eb60c2f58aac27facde629450c2962bf681a91c071e63a1a449d3b781d67731", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "7a4decd382dae953a14ebe47dce57cbf68bd3a65e42207d2d43cf2d001d832e1", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "fc111e530d5373df0237bd6ae7936f5ce6d9908da39bdbef5fe8c10e2e55b8cf", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "9392478ba07d60aad176352e11c9f460d210b7c4dae458d196e0763259fb6318", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "e18510331916cd950613c2c1605b23651313e7f9f5e9427ab1544dfc0feb2a4a", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "ca23d98a2a4e47c196207ceaa6b954025456475b2fc53a7aa5b3f415710f7ee4", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "44f1aecc2dd271f57cddbb53c4047b6fc5505b70aadb6f9231bda3a1d3f9d77b", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "3ca86e90369ae89c592c0fc8c64cae6ce1b06aaf3dfd6fd8c473d20626757d33", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1b68845728667b4ea1556008cf7e514f045840a79fd9c1d34fb37b6f8e0c7d57", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "9741b60c8d8ca15a9c6be3605bbd1e78489841861c0be7bc656023b0c915d69e", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "b546995d2a140452c5f1493b4fc2243e05b57989d48efd7de9a8e95fe36344a3", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f6cbca729bfde8facabf0fc381658bb8e7548c40b56db80e35d4d8b517e97e31", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "03476606199e68c21a7c65525c93a8ca81dbd7d931f75738261fb407d672b9b5", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e13eef6af03febf5d7f08aa9400791b1c4044cb6908e87334cef56afda165e30", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "391884287968f55e8abc707a5f65533037074c1544a87287fab07c125a1638d2", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "bd67ca1aaf9330996d00fc705b2ea9953410dbe02ff5cdf11336005bde5661c5", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "722227e5b463c56a62d75e722155a8ccd81b6d5e15de8ae51d3339a3eb3bcf2d", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "ceb2ced1e717f1a15dfc4fdd036acbadd0d83350227fc5cea723dfa49d42706d", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "705c3797a5f0c960f5ddbf51081df32df76f059878910a75f5bff3303d247d04", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "7aa783954db753388bc6c5e40a5f92beabfd22a4dd76a914390e5948bbd2a89a", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "6d0b706128f182b17e1b9040d54d27fb3537a26bdd87e93beb309c55b5dea0f7", +"TT_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "15639f17119f8e007bd9288281860a9184ba5cc7cf035adf6cac3fafd9ef11b4", +"TT_fr_cardano-test_derivations.py::test_bad_session": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_cardano-test_derivations.py::test_ledger_available_always": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "98c40b055897bbe20c61eee4395d8e38bbd57efa77729c57ca790f126ad25d31", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "c7ad93c7b9628e7b0bd8190bb09035b16c6a8606cc2162c880867f8baaeb8759", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "b354f6ca79cc64b282db2f73a2aacbf9f0b799054e9daa4df6d364c607af1ec0", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "9029b5be6d9ec4f9386a1bc60bb7f912f1be3c7966c5d14d83fc32fac1ad103b", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "3a416c42a4ca3bfc4bc30b5c10d02c2fbf14762c1ab9b2f0e3689a0679baeb63", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "2e28db585f29ebe776f321ad7063ede7f58b260e1608f1e8b83a5cd23c6322e3", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "f06d72f23fd6c22ae6efe4a7f345462db712e42ee604656caebd5634d3ee27a0", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "9e889e9ebbe87ceb76934b9954a96bd87ab6d99ef9df62d1eae08bd0cd0bfb20", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "c75e7338e82c31f8f510379c29649c463ef6a90d8beeca50b45c38089a22708e", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "8f0d8cf58cd661e79a1dc3f6d999f55a3e088cb4f4446234fcf4fc7f34dd7bd2", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "b0fced2158e2b735ac048ca93a7811e06139e6a26ca4bf8ef568999bd2b906a0", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "b498bbcf0ff052b3ce48ce8fbde981815e05961088b79adeaa04987a5d537ef4", +"TT_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "ce914b655aa17b3bea038a51e260a5c59122350d3d0bcac52896ee40aaae4ab7", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "c4bd0d2844ee9d6be9abe448a4d096538175172c0036f1570fca1b5956b5ec71", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "92569dca39d909b655c1c4bb9dcf0008f5ccbec68b74fb6b1f56dbf7f7a9fb7a", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "da03351e3abb70d38038b03d624c706ac6c4da112ec0949942eea9d1b312e414", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "7bd9eb29e64fba39bf30a70462317d4faf0369385bbeab63189b2580ff3d32c0", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "7bd9eb29e64fba39bf30a70462317d4faf0369385bbeab63189b2580ff3d32c0", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "ea0154f539e4cbd7a2bd44acdd879d1d64ae834c3392503f4b9049e92a3e270d", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "1dcffb32b63075a1f833c7c6c707381bbd7757ac00adaeba26e4f6ac3bffd774", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "95c40f3e4fb3c701789ef7f976f5b2c6d26b1a69abed232c15b6b136b1396645", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "dcd5b329900275326b6249d2ea7f37e20a4e532af9c53853f94009c820ec9db6", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "c505da4bfd047e82afbbae0216b36e1cf6564c30a9e86f58e37c28c2cc208567", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "21d78782385d120a1571df4c7206a919fa8495c521665f92da136f3a42711068", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "2e845f831a8bb1218e28fcbe9856e73c6e3281cc7c1f4b9b88801c87243ab3c7", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "3f381cc6ae185a21191a95cd81949dd434a00881f6498833f5639f4d32f55ecd", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "93640a42c5cb538f3b03e85ede9af68db9fc02cd7fd12c38e49f459602d36d1f", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "93640a42c5cb538f3b03e85ede9af68db9fc02cd7fd12c38e49f459602d36d1f", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "9441b2712a7db72eabc0ab5c24312b247019724bebf2e2e1bf773e1e340ab92b", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "77f6c5bcc1a8967ba3c614f5f06fcd96cd6da6a25ca869ceeb30f6c8025fbdfb", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "36bc8a0ee01e472c42fbffb21d29d791ac2464b39090e79a9e6c1e4f08621ac7", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "73b79f0341981b134285b9200317dcc6ff827026a3e3a2c894d1a170cbc30709", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "18c1fcc5fac73f66f7ad5787135d2f78037d43c78a2e875f27a303adda6e33e3", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "ea7cfa6600ffd57d08debc189f36ecfe4340cbb3834819b8691c571118f3ce7f", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "ae0d1f858b705165a3902c35c9ff9e88d858f187e01ca339dda16cf51682be72", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "095006e9f760def5f337803f7605b2df0700e684c6990912b5944b455a1648df", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "7bd9eb29e64fba39bf30a70462317d4faf0369385bbeab63189b2580ff3d32c0", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a8f5fbb1fe29b95efe5f183629332c9479a14b431031d92a7b003f99b7a11eb5", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "73b79f0341981b134285b9200317dcc6ff827026a3e3a2c894d1a170cbc30709", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "dda03d344df0c937f3014b757fc3a737ce646d3083ea7f7733f7cef96ec2f10a", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "ea7cfa6600ffd57d08debc189f36ecfe4340cbb3834819b8691c571118f3ce7f", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "ae0d1f858b705165a3902c35c9ff9e88d858f187e01ca339dda16cf51682be72", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "e95ac33556fc80678aab8f2d515607b7ef7a7059937b249a9ccaaa43356ae2d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "73b79f0341981b134285b9200317dcc6ff827026a3e3a2c894d1a170cbc30709", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "3ba3041dad95698afadef1d3fe9cb714655169d3e4027a6aa280b139cc75a43f", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "7797cb624fc812d0bb9f7e15b6cde8489be74720e2a03f9dfa3f5d454ba77e6c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "cb6e869edf3107b8bd38bf1cb34bd7978b9873c729741d43fc2771e70b2d9e23", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "70b9bafa8cc0ac0b1d8416e8271aefe92f5b92ba68884facc8499d13b36d23a4", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "548333946239c89cc100c784d3ce66b5a67a6c2cfcef6087ca7d8aa45da75e58", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "41ab567aff4a3a869c489b75931527a65964f4d8439dd2999cf14cbe4ca09802", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "2e7f9a31ac3e63bc397f04acd47198c5c43e059aaa273be4704a42742a0390d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "3dea09b252d89c4c1966a7821f15470652e21c11df8c4b3c675c81ae0a40e54b", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "b69b7a9631424823dc9ce3281bb337db6f9b8bdbe5538bb3fcb10b6b7b6cf92d", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "9b97af10059c61fa7a5ea06385f9616f97e8d872c9675fb93fe2846a4de43007", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "624be18dc2a35e0fe9cc68e3e39d158dd3a12894ab7632c6749b92cac0ba1d8b", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "11484d9aa0042821989b6527153c55cef3bd5a0260175ca0125cb92ae50d5a22", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "ce0df8c927c46e2961b013013051a8f1af6512d16343307c7b49bb8405200d45", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "f49fac6f1a07f77672c738e7f01e81b7fe6a23a04f67c6c42a8dc37cc5f04294", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "e1806a7cd1e73fe56c0b5386acb6cd28079e9ddf011f1e819b753c467b38d880", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "75dbd75f618c94b6ca8b22df75707612384b17504ffc2365b9cc2f4a19f2c946", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "2eba82b9c9473769d2614067322c3d8ca103828843b53bc87e9669cf79cb68a8", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "2d51a55e0fd56e01a6c1f76716279b4ad8356e0b732127a3134fee3aee6e5894", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "c75fa6b7667493dd50f7e9a557650802d3ab58622ef010ad3ec51633cd053e99", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "44e244e960abc8d443c15da5bf127f442ffa74df96e88f235dc69294a6c39e57", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "19f11d95db99f6549f33ab88bd5f972f951889e31b296225833e91657ab71a11", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "5a3d27f9bfedd60d1e785ba5214afd2c3e67015493e43b68e525ae4db03cc0fd", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "5a3d27f9bfedd60d1e785ba5214afd2c3e67015493e43b68e525ae4db03cc0fd", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "a77ca1e9133bfff180a4251850e4dc80d1f60b57583f1e07547b0b0c54aa28b7", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e54378b0f65a2ba105447f51083801cc9fcae90a562f114e27827cac19633e21", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "6910ffba1b400db67d55c0128aa99999b7ce8750833b6e316c58390c71dbe508", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "af1389eeef79bd505e7392097059d486b5d4be2aff307c0eb9946b57615da534", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "ae2c448b5d02d56f7db4636e7db4b8ad15328dc6a5e5ce07e99d876cd6e80080", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "e92a51fd30a92ebd8b69c0d807f1099d3ccb99970cbe5d9ed8596459e36c9446", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "87c42ca9afb09b4e78c7dc3dff19e90d56f18f8541a97073b6386467571b459e", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "2772ae0b4efa8c0c065f9e0e488237766be4fe4e79f5633f80a814e7db4b8452", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "73b79f0341981b134285b9200317dcc6ff827026a3e3a2c894d1a170cbc30709", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "cb4e2871eb12bb3399a5db5819c2e9f98af7685d086c435d0925e23d1915f2b4", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b9db2ca8df0ac898653a80068dc33b3170ed113f7ec3bc21c5efd52c03e4a316", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "63328f50dd6c9e87063ff321000beea005bbe9c0bdc53e314d91c8c9b818e2ce", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ec82cc21b0c4341a37a2f5953e5b98cb04cf228d70fc7531dc9d999c726dc36d", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fcbbfed2ff6f029b0ed270b236699c0ca5efd60c1417a572d9fc961b75c3a166", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "1aaa68212f8a963deb74e470ac6f70f8179e89a887d31141762d7c5e72054979", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "79c20304c9015932448fb41ae4653d3c876d838e6214af13663e896bafc7f565", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "73b79f0341981b134285b9200317dcc6ff827026a3e3a2c894d1a170cbc30709", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "8fd4e96738b065bf30dd0df15822c42195fccddcc6d0161b07c9ef878196a3be", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "36e78eb92d7732db63882cf43383e7e1d0d26fc7a563daa1d90fed80b61d7793", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "2da0a5621b3654523b117e84a01d5d2ed6d0ad9dc775a04cd0da37c393832cb2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3531d0fdd1c477e3a95b80a891bbfe809a293069c78b3649ace155ab93e25079", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "62363b7471b972af83f8a2fda21ae5d5f72b6a7eda57129f2dcdcec9a2e25a0c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "a421e529ac0630da3d592ea975d88c60e51a0aa36a7b62c784cd0a30f8d10b4f", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "6951962923301cdb2bbe5bd5fde3d780746c763caf720bcd4401e587e063fe82", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "897bcc8958672062320d7817de00ac243cd58504e35627db9aa5b3eb445fb83c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "578be958d90109742dcf5e1e47dccd6b910efd14a7ee5b38ff826d4aa22f3ab1", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "31118333e9d0d8e707f57c86cbe797172789fb1d1b08e7ef3fccb058cf7f349b", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "31118333e9d0d8e707f57c86cbe797172789fb1d1b08e7ef3fccb058cf7f349b", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "c261ccaa28e03953d2ef66c98332e802c7784453b3d80500a1c01dac15d2775e", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "867d8a7861e2644cef9efdabc3fc71bb54c9e9b5694c149eedca1d70132121d5", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "1b1e3bdbfd0267f8d53e9baffd5b572eb8b032e14d376234d3b8fbaadae78c9a", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "8b4c45a8199c54017059c1d86ef95d8c551e065302931844e601da3560d39d36", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "bd3a3f7de67f4ce0b349129644e7e41f154254090874b743d5ce5fa5ccba76a2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6878d5f26c43f2136174670d750016abf79223861bc90962188701698ad09dbb", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "7bd9eb29e64fba39bf30a70462317d4faf0369385bbeab63189b2580ff3d32c0", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "7bd9eb29e64fba39bf30a70462317d4faf0369385bbeab63189b2580ff3d32c0", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "ac3d65a7aa376ac3a9759b631bf797dbdb207e4d471c467c7109521e500d5b17", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "02feed7bc9d46e257cd024701e2988a227262a9403d76066f93085f1f99e04a5", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "6e1c084e92b32c63b7f89f9cd77d53592e3b1c7f5bfc8b7af8ba9ba66f891f16", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "c4bd0d2844ee9d6be9abe448a4d096538175172c0036f1570fca1b5956b5ec71", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "dcd5b329900275326b6249d2ea7f37e20a4e532af9c53853f94009c820ec9db6", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "d78aa8cc367bde85e4b0a023091ec8c90656a53c261106b551e0ad64c198a4d5", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "7eefd5c1a614e9e3abc63c92ab87ed5d6bb5efdd9aff70dc836d14851d32796d", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "7eefd5c1a614e9e3abc63c92ab87ed5d6bb5efdd9aff70dc836d14851d32796d", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "981961d33548abc51201b5ba32ba134256bf0e68d44e89f2fa06f67208c2471c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "531e272d86f9778e6fc40a4f2ba46dc508bdaeba3ad03b2291bd4d1d7e10d04f", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "9a9b767031fc4782e7d737d9c6b492fd31e2e068eeaeb192f9eed02f162b6ed4", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "73b79f0341981b134285b9200317dcc6ff827026a3e3a2c894d1a170cbc30709", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "981961d33548abc51201b5ba32ba134256bf0e68d44e89f2fa06f67208c2471c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "981961d33548abc51201b5ba32ba134256bf0e68d44e89f2fa06f67208c2471c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "a32b0af267fb7a8e50ca75550a51fc13e20f407cf1b823f59c8de243437ba73e", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "c88156104aebfdee340e5069506ea52d308b51b7daa595fc0936180d5973bd11", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "9081f3dd35d4ea1adfd483129050547633f4295c1479a1dedbefe90350a7350d", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "482d54d375961b6741cf3e93340a9ce23b71c826f3c30235046ad5d62e27fc6b", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "177ecfb5e1cdef324ff8e0f320834ea3a5edf6b72b90099823d15e7990337f3e", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "008bf1af6eb56b88e4f05dff989f06d2b89522c6362e5d2cdaa4dc3f759464b8", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "008bf1af6eb56b88e4f05dff989f06d2b89522c6362e5d2cdaa4dc3f759464b8", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "008bf1af6eb56b88e4f05dff989f06d2b89522c6362e5d2cdaa4dc3f759464b8", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "008bf1af6eb56b88e4f05dff989f06d2b89522c6362e5d2cdaa4dc3f759464b8", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "008bf1af6eb56b88e4f05dff989f06d2b89522c6362e5d2cdaa4dc3f759464b8", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "008bf1af6eb56b88e4f05dff989f06d2b89522c6362e5d2cdaa4dc3f759464b8", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "177ecfb5e1cdef324ff8e0f320834ea3a5edf6b72b90099823d15e7990337f3e", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "177ecfb5e1cdef324ff8e0f320834ea3a5edf6b72b90099823d15e7990337f3e", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "177ecfb5e1cdef324ff8e0f320834ea3a5edf6b72b90099823d15e7990337f3e", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "c88156104aebfdee340e5069506ea52d308b51b7daa595fc0936180d5973bd11", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "6e2761c95f89069a358ba37798630c28d7c0561d1cd2152b526712eac0d12b01", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "799912fc1e8ead3094fc030660f65e3c7b81e3254ed4ee78a1f37bbab1222bd2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "af6d538902f3db4df0df7ee236ba6bd4619b5979bde1848f999336b14573068d", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "740814f7ec399a4ba8500f0f2bf516367f21e2d48805cbae78fe438ea52ba2cd", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "5fd2970521950dbc82f51ad1bac4b1706d6e86764fef1db0a0d7c3c38053da93", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "51be837cc1b047f50da5b1e7946a1f8f3e54fedb91e5fd69a1e8f618ae78461d", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "dfc40262c7dcc17e3d2acc8a7c6f644258368f6257da0fd4029c8bb4fc99631f", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "981961d33548abc51201b5ba32ba134256bf0e68d44e89f2fa06f67208c2471c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "981961d33548abc51201b5ba32ba134256bf0e68d44e89f2fa06f67208c2471c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "e116fa71b113e23e9f5d3be3a762ce8577b017908d9b82fd0b5951b07b1e642d", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "0f51063f2d7ccff736cb23449a9e5b27e374fb935e81991eb281c045fb24473c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "bb63dfd5dbecdb885a4725ef82b713cd46d3ffc25b036587d91ef56685dfe8af", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1b6a2366e9c8eef8d28b9ed1bccd6e3d5458959cb98111282c603a021474fc16", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "7eefd5c1a614e9e3abc63c92ab87ed5d6bb5efdd9aff70dc836d14851d32796d", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "5a3d27f9bfedd60d1e785ba5214afd2c3e67015493e43b68e525ae4db03cc0fd", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "5a3d27f9bfedd60d1e785ba5214afd2c3e67015493e43b68e525ae4db03cc0fd", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "16a020260c2af95abca75cc994976e866388e88413d9174f3ccda3638895dccd", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "5a3d27f9bfedd60d1e785ba5214afd2c3e67015493e43b68e525ae4db03cc0fd", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "981961d33548abc51201b5ba32ba134256bf0e68d44e89f2fa06f67208c2471c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "981961d33548abc51201b5ba32ba134256bf0e68d44e89f2fa06f67208c2471c", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "a40ce3de405a9563ab1b8cedb420308098bfe4947bcb7a364d09fa032c0d7843", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "57e56f2c0aa2e2384e764514d1f68e027bec11f262151708c30abfe4b13c7693", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "1c4a329c097d1e3f0a5f9f1e1d40bb5b07bb2fcfb6e548360cb961619d143a10", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "5f9aff43aa90028fc7650af7c1ce8a9ccb257259fe8c8bb79c94cb48ac2f416a", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "5949d6a698cbeb8632dbc3352d17cb20aa713bb5af8757d3ac963632b0d439ab", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "008bf1af6eb56b88e4f05dff989f06d2b89522c6362e5d2cdaa4dc3f759464b8", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "9b2f92bccbacd01bccfa9dde22dc9012f5fc3bd33fcfab2824a574019154c126", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "c1158337f8c607314959fa753314713d02539aa8701e1eb2ff99796c49962ad5", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c2c080c618d27ecd30c79f7641eb87053a082320ac5efa14bb2200cc040dd0d2", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "9a0cc81884c2271b2411ffeec49f69dbb2d8882e87d2d30bbe9fea1f205f70ad", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "1b6f493cb24447225b86e8698b879c140dbcd64446bd4da2b3f99ee0f8e266d1", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "17ef1e37f7b1b10a740202564f8f7ae04a8ba63de98a7ac6acb62897c2b5f88b", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "602ef03d458fb69d4cd3d0e0a0a2541aa2f1488bf7d635a0b5f45c7fe7c4730f", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "da625f1c081bf9091934c0b1d74f84fff70fce088e01f96e251ca699db5006d4", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "7f9a158191ddfe6a1c568e6b51343c8abc116e419663e1757cf7fec1207bb652", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "a01b8dd428930f1f58d933c3522e8740a334bb504ced69cef4e5eae013b62604", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "0096ab73e50c542fc230114c15a09cd163134e93fcd01f4faccb35aa22557de6", +"TT_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "93c5f815b05c8c35b39b74fcbe54a16bad00a49e35f270d8d7046e0dd0ec2b46", +"TT_fr_eos-test_get_public_key.py::test_eos_get_public_key": "c8197c8dcadd11b10b16a0801e239b189bdf54231321446f0b910a7bd1a8859e", +"TT_fr_eos-test_signtx.py::test_eos_signtx_buyram": "36db2c7cd01f1c4ff15c10f8b47c6679ef8bc01365eefdecbfffff136746bc42", +"TT_fr_eos-test_signtx.py::test_eos_signtx_buyrambytes": "fd2261830e5be875be279e9b24ce1d678e60c3b72e9452245bdcfd4ad8d46ce6", +"TT_fr_eos-test_signtx.py::test_eos_signtx_delegate": "5dea6ad30be1873fc36bedc8ac6bdbaac53716ad1023a4dfc272026931243189", +"TT_fr_eos-test_signtx.py::test_eos_signtx_deleteauth": "6663e2a28ae4b515fcbb84d0fec9f584bc22c4fa8b30bbaeb7bba921423aae2b", +"TT_fr_eos-test_signtx.py::test_eos_signtx_linkauth": "f1519ffdcbf59fdbd87169d7bf94148aafcc0a4dd102051392c0d69539d6a191", +"TT_fr_eos-test_signtx.py::test_eos_signtx_newaccount": "d08dd25be170e35520457be3e6d8c141dfd8b58c9a1896b2c4c31da444152297", +"TT_fr_eos-test_signtx.py::test_eos_signtx_refund": "40513c206f36fa97731faf07a2289a976b8e07024a8dbe64d61f90ab1cf109ac", +"TT_fr_eos-test_signtx.py::test_eos_signtx_sellram": "28e671e0f883c987d8f9f73b5028c4fdeafe0cb4d330ebf3654cb4d846ca9f37", +"TT_fr_eos-test_signtx.py::test_eos_signtx_setcontract": "4ea4025c275db8a4817b2f39abfa28beb6081f5b0938fb344fdc2f61c53f9944", +"TT_fr_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "a1c9652c9dfaae8fa7816bd2581186454e7b35a92ad19d101aecc9da2c4b64c5", +"TT_fr_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "a1c9652c9dfaae8fa7816bd2581186454e7b35a92ad19d101aecc9da2c4b64c5", +"TT_fr_eos-test_signtx.py::test_eos_signtx_undelegate": "f2bd760058cbf963cecf17f0cb449ac8e3fa42b108f5de0c49d75259e83b833c", +"TT_fr_eos-test_signtx.py::test_eos_signtx_unknown": "20cc6cecad96be09742f8e97e55b8f65660221c800e7811471d7a5e66e46d97a", +"TT_fr_eos-test_signtx.py::test_eos_signtx_unlinkauth": "77fce5b087ac9280ad181fdf05defba8af47737525a0a2486c81408bd23a2dc0", +"TT_fr_eos-test_signtx.py::test_eos_signtx_updateauth": "306c0acb63f9258337892b65a900989831f4d931a6560cb1e7435f9fec0e5bde", +"TT_fr_eos-test_signtx.py::test_eos_signtx_vote": "8e215ba759217ddd3bacdde24acc5d9bcad3ca52dc4bd17e000084b1202a267b", +"TT_fr_eos-test_signtx.py::test_eos_signtx_vote_proxy": "9408e00d3c2f34d3d2350c639de8b47a84c118bc67182a95b107b4e26f91ba48", +"TT_fr_ethereum-test_definitions.py::test_builtin": "30733ab3f6b212259fa9b456d2c9f0a530206ee4557cbb2b84ed6ed77ddc9099", +"TT_fr_ethereum-test_definitions.py::test_builtin_token": "caaa7cca4de0709475e6da82a24638173bdef6f1d320c21a760670138027b85b", +"TT_fr_ethereum-test_definitions.py::test_chain_id_allowed": "3eebfc51f16e1f7e921043ca27930b5655f72779c29933fdf72b6d9879c05aa7", +"TT_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "949f5fea711fb216d2019046baacf27c07cc57ee7dd501041d31aa7f8082eced", +"TT_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "fe0e791892c4284813c3957a4b802fc90be121203e9abaf467ffba80543cfc26", +"TT_fr_ethereum-test_definitions.py::test_external_chain_without_token": "0c033f1c2e616465c7cc32fbab1df516ffae8f77599346e7b08ee577a4efcc82", +"TT_fr_ethereum-test_definitions.py::test_external_token": "cf0646b4353d4c53e821504013e6d9dab699c4a0027317891e17be4ac8fea7db", +"TT_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "be6369139d1ee93d65d575e0bf86f3237b2cb187cc987cc2f376a546f3438389", +"TT_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "78348d3ec3413d911c7fc0866cd42febf44e9d81be3c5eb01c78f2c12e66f1b3", +"TT_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "455a68ac15fd2ce295b11e3440dedc229ed3f40312bd0687f101219ca4fd8cea", +"TT_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "f668ca5f8ac2f179e3f56a2a1ce691a09a49fa1516b7b3cc5c640c628d157d26", +"TT_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_slip44_disallowed": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions.py::test_slip44_external": "7e87a7c2f319964e1dbf2751684420d0911cb38eb1932c989f29e68e5a8e553a", +"TT_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_bad_proof": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_bad_type": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_missing_signature": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_outdated": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_short_message": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "ee7ceea05af6fc4385384ec5d4f8c9994f2a089ea0cfc13baf16c5d9bc8a360b", +"TT_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "731814380f6410af8564257c6ce6eb408fefc09449e6b4c1d0b44a8b37ce5dc6", +"TT_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "c24b42f3819ae5bb3daaebed6fc040389640837dd1c23a35c31d2d6aabece11e", +"TT_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "878867fd315679faf38381052b6fc69034287a4652a507e5129cefe9c11e557b", +"TT_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "7ececcf5321bfe227c94cd970f44a3527e7cd202e064073fc62f85632bfa86bc", +"TT_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "573afaddd6a31e7f18ebca9b5f0bac071fa00705a9929d792aeb38fe3a04d1b0", +"TT_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "1cd15644a43d20680fca69dd7e7267b370b1eb4da2f59e6ffefdae7139da1ab2", +"TT_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "7dc5d0ca8669f770dbae2d353e171cf9734abb8b9136bf36055df313e77e42bc", +"TT_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "d2271323b6e2dbc066dae4b3fae9c689691aeeea43279a6f9810055b980fb885", +"TT_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "190bf19484f4dc7b9706a34b0a7c84db362238c764bb2782023d2d944c4e1625", +"TT_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "cc2345fa61b2587c8c456bb57c11850693e7271faa95db14e7d0b73796f52ffb", +"TT_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "0312dd8b3f527643754f79894e59376dbc27f0e19dbdd1aa166a1e1c8f13cf20", +"TT_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "c6dbaca04dee853b0a71530706343409e1fc3a8270776f977ab069124682cd61", +"TT_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "c6dbaca04dee853b0a71530706343409e1fc3a8270776f977ab069124682cd61", +"TT_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "c6dbaca04dee853b0a71530706343409e1fc3a8270776f977ab069124682cd61", +"TT_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "c6dbaca04dee853b0a71530706343409e1fc3a8270776f977ab069124682cd61", +"TT_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "4ea8ebbc9adb533e36e1f7f48eec73d7f3bebdca0a30c47dde10b83d321bfc7a", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "cfef47227b03995c7226e744db044ceb633fdc699f9045bd3d32422a4cf2ecc8", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "0c8aef8a32e9e5439fe26909b7b215ac4eee4b3eb08cccface29a1dec8f22fec", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "705ef104a71f516ee23d4ea2009351c51b02a4950b1628085530a082dcd48d89", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "66bc341fa271bcaf4ca31f894535ddb7ff2abbddfd00f51efabe79771257e452", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "199ccc80f41b2be3d92c67e8fa7361881ab492f709a233c9279f07634851c82f", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "0c8aef8a32e9e5439fe26909b7b215ac4eee4b3eb08cccface29a1dec8f22fec", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "0c8aef8a32e9e5439fe26909b7b215ac4eee4b3eb08cccface29a1dec8f22fec", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "0c8aef8a32e9e5439fe26909b7b215ac4eee4b3eb08cccface29a1dec8f22fec", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "d557029767d39ff0efa540cd281951fca5cdc3b2ad940d5b2721c4a247a6ec2a", +"TT_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "fcf7d86c5a754597d88074451041cf911303e6fcbc032ac520636f92036c3f0b", +"TT_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "1d22f2a9f40461c1a76f4267ade09a744ec1dc4168329175bb456983a9022a99", +"TT_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "0b20fb301a8305fd57658ad6c5cf8ac820200dbe6f62ebf3c9b68bc4519725d6", +"TT_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "986d8f08c0b365b530ef44517b120c97f61cd2e1ecf6f02e7ef00eba9b98ca3a", +"TT_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "d61d95dd16721ec2a54323643dbcf7a176cd34fec5cf2067688c8963da1a3976", +"TT_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "024d25cdedb0328eb0c3c5bc7feb1ee1fe5ae8fee20845a8dda6378d00d6a14c", +"TT_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "eae91e7688558093a609c22695e60702544406f7961b28f836bfae0d50b76434", +"TT_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "6b459a4758bb5bc232326a3911f22597981abaec2170d9920c9420a99fc9dcc8", +"TT_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "6594253a3ad8a602876ba63bdebf98fadef5f66a9228da07c21b61149e5e829b", +"TT_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "8a526a3862fe2e47f1f7d1bc77e6020b73b1a771382dbc319e2e87d8f1344228", +"TT_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "3c53d5e20503f6064c423acb921a8a7b7d9c4838615597df3070318f0ad69117", +"TT_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "e8310c0db64e68dbde94da3b3c1c128a0b134fba3410aed5ac433e89f86c9ac1", +"TT_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "347ae19169a93721d1ba73ff97a6cef5e59eb4aae58db875ea33db6e53d5fc47", +"TT_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "17ff312346460fe03bf4ece3c80340d7a6d4289b6fb3c283bc44a1b390806c32", +"TT_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "a9918062810b637544624bff7a68ae028ccf61ffda4e0f21b2406216edcb456d", +"TT_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "77dff8b48aa2ebcb3644bcb91474c704f4f85b4828832e4ff623a69256454e9b", +"TT_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "cf051765783c78e6ae67a07db5345e9c68c80007e1199aa71d818075d01977cd", +"TT_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "9cf7477d9d06312313d4bd4d3cae1a032efae4ae1649570cc10b9c1bee61e763", +"TT_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "3c53d5e20503f6064c423acb921a8a7b7d9c4838615597df3070318f0ad69117", +"TT_fr_ethereum-test_signtx.py::test_data_streaming": "1811582437b24321d80f69d8fbdf83f05acaf85f32e637117bb679ddc8366241", +"TT_fr_ethereum-test_signtx.py::test_sanity_checks": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "eb80eb8d711475656699f9c2dac728968c1a3c95edbe748ebafec6f5b0a570ae", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "e44be03dda3079ab2b0b5e6e11b76bc38df62c817c50ea3607c5a0ee1d82b24a", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "aace6c56017ab05cab622075b8f072440744e5a46c41bd45ca0db8ed0f92989f", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "19a8789219a6bbff76bf3f1b7b4ad985d895544e6e5adc45f46a5bb23988e427", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "aace6c56017ab05cab622075b8f072440744e5a46c41bd45ca0db8ed0f92989f", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "eb80eb8d711475656699f9c2dac728968c1a3c95edbe748ebafec6f5b0a570ae", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "eb80eb8d711475656699f9c2dac728968c1a3c95edbe748ebafec6f5b0a570ae", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "8cf9202dae4ef79525cfb76c4fb1706e1dbeb433f98dc7aad93200e953ad4658", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "8cf9202dae4ef79525cfb76c4fb1706e1dbeb433f98dc7aad93200e953ad4658", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "eb80eb8d711475656699f9c2dac728968c1a3c95edbe748ebafec6f5b0a570ae", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "eb80eb8d711475656699f9c2dac728968c1a3c95edbe748ebafec6f5b0a570ae", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "16125ca33d1cd515642c30185867d4faf53cb714f7a0de1b777ac4607aa8b012", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a8056ec0be5abe0e3f84bd4a2462064f58e40d3ef21a19017e1e10e5aa0b82cb", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "fb14c3c33d87d5ab7ba1ed44369f569cff0f7524b1ef67d9833db2452f36c598", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "eb80eb8d711475656699f9c2dac728968c1a3c95edbe748ebafec6f5b0a570ae", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "eb80eb8d711475656699f9c2dac728968c1a3c95edbe748ebafec6f5b0a570ae", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "eb80eb8d711475656699f9c2dac728968c1a3c95edbe748ebafec6f5b0a570ae", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "400a92656e81217194d2789c15cfa72aadaf743f69216a28944cc69875fab2ad", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "be55b0ecb708148600c3095e72a4b15e9c93717e3f0ea212defd3242bf4aa651", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "84d5ca5f4810480d4845f4e6f0cad80e2a9f598cd3f10f289712ff3e5bbac431", +"TT_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "4609404051d6e3a5f8366ec8c79610d4e5afb37da1153636e92a4533b2cf082a", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "155e21e99a56d77fe1c0c17dde327c90ddaac0897b1cfbf048352d2e9e2b2ad8", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "5aba0fc22fe742739d77a6c9c9b6ebf8cf8d459447562757baed6be9690a870f", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "44b59edf9c20f6b76f27b8800e92775248887309ebb21e61e9722e8612bf8e30", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "594e371aa08520b85bf48be2772a76d0b01142f3534eb0109f134fd591e54196", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "44b59edf9c20f6b76f27b8800e92775248887309ebb21e61e9722e8612bf8e30", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "155e21e99a56d77fe1c0c17dde327c90ddaac0897b1cfbf048352d2e9e2b2ad8", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "155e21e99a56d77fe1c0c17dde327c90ddaac0897b1cfbf048352d2e9e2b2ad8", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "76048d0048a7d5631f08f1e29ba50ec214bc66c2cc07ec68cb6f390206a6c4ae", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "76048d0048a7d5631f08f1e29ba50ec214bc66c2cc07ec68cb6f390206a6c4ae", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "155e21e99a56d77fe1c0c17dde327c90ddaac0897b1cfbf048352d2e9e2b2ad8", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "155e21e99a56d77fe1c0c17dde327c90ddaac0897b1cfbf048352d2e9e2b2ad8", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "24af36e0f45358f4a7317d3f1b0fc4ed753a06ecc0d1e3301e87647ab33946c7", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "1e9afe360b7920a7512d50491cc5cba27c6b760fa6c385b3c626dde7b11cb47d", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "fa05529a6ee900f071d468169769ce27f8f3139c2f7dfd574297bfb756c157f0", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "155e21e99a56d77fe1c0c17dde327c90ddaac0897b1cfbf048352d2e9e2b2ad8", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "155e21e99a56d77fe1c0c17dde327c90ddaac0897b1cfbf048352d2e9e2b2ad8", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "155e21e99a56d77fe1c0c17dde327c90ddaac0897b1cfbf048352d2e9e2b2ad8", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "400a92656e81217194d2789c15cfa72aadaf743f69216a28944cc69875fab2ad", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "a3ae0f82b6cf21486028a0582c88de0a0bf84d2b5cd8521f1e8107de992d5b81", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "cd41925e43c2995cfc654be58a6b175e4498e9d1465515e27a79f0787b14bb4b", +"TT_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "0c90190b98435e1c9e45b70592e26b56106ad7a35885da963c5cab12c49e1299", +"TT_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "dd35f0d952e61272ec7733166636a9e652d4d7b91ebd151fb180a28fe1b681ff", +"TT_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "8ebc1a28ae564a375623e4ef9cc40b9b432a12fee2e2dbc12020927e0ee5750d", +"TT_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "3fa9458adcf3e8b24901cc32003a1abd7da34b9f96080a6f13887d33451dedbd", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "be55b0ecb708148600c3095e72a4b15e9c93717e3f0ea212defd3242bf4aa651", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "16125ca33d1cd515642c30185867d4faf53cb714f7a0de1b777ac4607aa8b012", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "4fc96863bc590a0d7b7de1ae883f85154bc1cf2475f911c24b00fc31ab9841c5", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "fb14c3c33d87d5ab7ba1ed44369f569cff0f7524b1ef67d9833db2452f36c598", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "86d8766675eee70a53de1801554ed49d88bc93a030988634f480ef955cf2ba66", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "721d7c20c64cc899badb60355373be7b41da45d04af0c45c100b39f152b30bb1", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "be55b0ecb708148600c3095e72a4b15e9c93717e3f0ea212defd3242bf4aa651", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "a3ae0f82b6cf21486028a0582c88de0a0bf84d2b5cd8521f1e8107de992d5b81", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "24af36e0f45358f4a7317d3f1b0fc4ed753a06ecc0d1e3301e87647ab33946c7", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "fd007d48401703a2ce534f9478ac492384561c67d3ac8f9e662ba2252439b3db", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "fa05529a6ee900f071d468169769ce27f8f3139c2f7dfd574297bfb756c157f0", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "b658fd63280afda18c7f8000903a12fd93e7d3134d90ee8c14b8ce0011dadcc9", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "b4e7b48fbc4d7b3d105eb2b07a79c01c70538655b23d19b890a7bdb9e485547e", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "a3ae0f82b6cf21486028a0582c88de0a0bf84d2b5cd8521f1e8107de992d5b81", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "f8aa91fd05cbe4c17c6a661b679c6a347014f47b541c4140dfae4b57d5907e4b", +"TT_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "f8aa91fd05cbe4c17c6a661b679c6a347014f47b541c4140dfae4b57d5907e4b", +"TT_fr_ethereum-test_signtx.py::test_signtx_fee_info": "66125b3e925dc16d13f94913985bdd033e33ac600ac3f4fca243d06e6c7b3986", +"TT_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7af18e89a7ba3c87cd4c8d71c0ee407a6bb923c0cf4ccf55bce6847a96fcfd19", +"TT_fr_misc-test_cosi.py::test_cosi_different_key": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_misc-test_cosi.py::test_cosi_nonce": "79bbd5a7bf7f2a65a652cb8e9fed51d841930219a125ae9fb2c503219104cf1f", +"TT_fr_misc-test_cosi.py::test_cosi_pubkey": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_misc-test_cosi.py::test_cosi_sign1": "79bbd5a7bf7f2a65a652cb8e9fed51d841930219a125ae9fb2c503219104cf1f", +"TT_fr_misc-test_cosi.py::test_cosi_sign2": "8e0df6df04ca13ecddd0b730d8b1ffb4e6674434ad6664a76d7cf3c0ff37dbd3", +"TT_fr_misc-test_cosi.py::test_cosi_sign3": "6ce4a2beed1bb9a5e598a0665c9e6294f7332a39f6837aeaf55434da1b78e413", +"TT_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_misc-test_cosi.py::test_invalid_path[m-1]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "0865189e0d685d2f1474c287828868d2edc0cbc2e754a0a7699e44e61a3f7a02", +"TT_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "7176881a7d6c404ff83dec33c674637f848be02b9b2d20e98a21da8444335fea", +"TT_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "9edcb9b9684969136542e9a1e4e530fb2cc62a8b70ea06b4c5c7fcdd5274611a", +"TT_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "38d300ae5efaf921d02af5aebe7dd85053d1a87ad59afb6596a1c33aae4af9e1", +"TT_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "22d5e99eb6c18670e5621cc0f86bb163080feb1b16bbb58c7a012792d30a3f9b", +"TT_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "a03567a9c05f97f618dc1b97c7a3bb26ee8dd53b1eb498fc715b7f9ef541b870", +"TT_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "878665493b50eca9640b2374742e1d4c9a7448297b5cef8a53e6da36a13ea246", +"TT_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a0800165276b35a5ec5fefe6a7fa022cf62b4045d24032959633b7db4df95494", +"TT_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "277c59356a1b70e645fea50ab348ab9d9fee7a3e4b5c955c4b8e50e0d0e873a7", +"TT_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "26994dff29bdd6ce64ae64898888a6af14c8d399a35c8a2dc6a30741b37124ec", +"TT_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "956dec3871162361adf4efd83eacc7076c35c8a2f79754ae55d6270c968c288e", +"TT_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "68466c6b45357b61fb790e9c44637ed6fd0b3a397d9bcbc1f762e6164b690323", +"TT_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "02aec76dc7e3ba5a43f906386fc060e1e4c30d11f295831f957023405318a810", +"TT_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "3a8df9b871e138a3c207e2fcc836017b88908d101e359c8872b7551083236819", +"TT_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "7efc51dba09e7a508d9628c67fd41c3f980343f6ca09e537c456feb36bb30ef7", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[128]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[129]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[16]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[17]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[1]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[20]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[21]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[256]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[257]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[32]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[33]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[3]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[4]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[512]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[513]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[5]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[64]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[65]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[8]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_getentropy.py::test_entropy[9]": "ac7d3a40a08a7953cd2db7cd056298f0ee10c6496dcbb25a679eddbbdee0ccdb", +"TT_fr_misc-test_msg_signidentity.py::test_sign": "0e1f30f8d5b63b21124e63c34df44283d62623a932afcebf57e5e139d9835af6", +"TT_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "e4fc17698ef188018aab97d434bca958d7588baf5ebfc1e943b944e31e551ad4", +"TT_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "320230bd3c1efbc1f73478fdcc61fc81027a135693885e5523c3067922dfdbb4", +"TT_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "4930f0ec974119e3b8f1184bd38541eec8839e5f2ca4c74b37f7276c4ab0e5f6", +"TT_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "b75a71fa41765dfd9b1ce996b1e46e564f1e43a9c54d2709514b238d51f5508d", +"TT_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "790f23c5266f633adcd9806c7cad2d2e5bcadf0fbeb545154e6c21af79cc0051", +"TT_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "7078ac7e86d959f45dd3279bf68034dc0d64525c896f0963e856f610ca5c3a0a", +"TT_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "25d22b17f041a2fbee5fde49db7105fdf4da23d5e99e5f254cc59a244b71f15c", +"TT_fr_nem-test_getaddress.py::test_nem_getaddress[False]": "26b0784f90630c678b34ca1016c015244e6fdacf518fd81ee4273feeb9eefcea", +"TT_fr_nem-test_getaddress.py::test_nem_getaddress[True]": "f2538447abc2864fbd23a56927a140aec69b15efa3a6ad2227a7fbcb352255da", +"TT_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "03fb6380c0576a6a448d4fd417eb86dd6f748459d249f098325cdea2d9b432cc", +"TT_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "fde4840a40de36f59fac11ab0d4e79a0d1c8d402bacf5083aa2433ea3bf95bb0", +"TT_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "5b9749ef23b263ace97ef431d9f8db8212feb5f2c680f6d1c1e2cb503c1576ef", +"TT_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "5c1d593483044a854015fbac15634783556b0c5d8c0ca7ab2215cb8ff3484d64", +"TT_fr_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "3d4f65afc0b7fc0afcdd4cc1887ed1f6ec8ee3e58108d327f0c35d564cc39fa6", +"TT_fr_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "8d92e6c26c9ac1ca5fd9e47ac2f1e8dfdad8507a27dea8a8ac87433b8eb6f31b", +"TT_fr_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "a845d4cd62902988650dec9bd8e4b9e0996301eeaf0707fc939288a9df9f8005", +"TT_fr_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "f86750a8a99bee8e6c6958cd3ee8de429582c4c176fda9c31f2754abb08c86f1", +"TT_fr_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "acdcaf47c4fe1424d4d3fbe28138c9764fad50a0d65a1da1e26a528bb7c06741", +"TT_fr_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "33367e609f467a07b17dfaaa72a96b33e95d55fe31ef10ae0d7b004031fb46e9", +"TT_fr_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "32cb18141f8f74de7804926fc46d03147275672bd4bf3d4ed5431f5cd20355e5", +"TT_fr_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "e9d179275611ecdc4c2674909847aaba8c53c1ed8eaa11580fb14c5cd040e021", +"TT_fr_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "7da4acdc299cc4c25a6290044d0f2b6263aa2906635294f9c05240d14aca1815", +"TT_fr_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "477b8c8b6f51caf01540a8fb805460bf4b494a22fe2a5309d6181103cf273312", +"TT_fr_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "79a017a7cc063c24db74aa0c1e7446827e97d94c18ee0973a36dff598f80b99c", +"TT_fr_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "077714e5930541ece06786152f8c11c97d013db746f7b4db53d51103f82d502e", +"TT_fr_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "a246a1cb34849611166ff5dfd99d832d1bb7d036a3cb2c261415e4636560f93e", +"TT_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "7db045ddc9701a2d842f4f456454cce163927acf0c219c9874738adcb50e5255", +"TT_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8792e937fb8b0dbfd3460677fabe0cb2f7dae3827bca6df1d7ec106b7e0170f6", +"TT_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "20678642a664e1937fe297aed72d0bdce3b44cd076e16d19911ad60c494cd296", +"TT_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"TT_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "afa4601f653013d056e7b68f566e05c694ff430bfdc776b779763b18a002831f", +"TT_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "47bc345a60993aab4cd2f4f88d6f0e9d9b18afa9d5014c59a1ed75fbebdaf5eb", +"TT_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b4b5570a52516201575c9a1afb5869259f870160155965b3437fbb4d94d0c069", +"TT_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "da8cfa601b1d9767916dcbc07558911f966e7f3b084cd7d6264c1b4190221878", +"TT_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d7ff85bedbca1eefeea891fc435864b214a82e09acf7be513743ff2213b1c56b", +"TT_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "aee011821be526f489da95dba67528d6f317ea4fc56a0ae5ce2ec263f9b24e34", +"TT_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "017b5a87a5f28d2c9b45e250095955f90ac334fb5ff55a7841715cf40ac9d988", +"TT_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f11de4ed95639d88d04c4c0d6e825771d0e323de6a00510569544af8f95de151", +"TT_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "998d751a739a09d1a8fc7636c4400181f84d7e3bc2023d9dbd6576cf5314e819", +"TT_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "589f4d2c58bc885bb57066312919992d32292e03005bb7b3f1f74a6562efef22", +"TT_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "5582e96676910b4fbf837621114245c4eb76106d0f12766ee38e70ffa5aefade", +"TT_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "33dc23343121240b349165f9c4ca1f1d7d4ba144ec17c8c82d1777cf66d63833", +"TT_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "768e5790b312ee81c82155212d793f1dbc2a9f0896733eb77ac4e0654a47c571", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "52f8eb8b92957bf14fec598c1832cd4deb83f325cf90b81f1764268846cafe6d", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b4b5570a52516201575c9a1afb5869259f870160155965b3437fbb4d94d0c069", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2bc1e4d2abd0657719ade715daf40ab722537e1d46fb6449c8563765993a3829", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a9ff388f1f22f156f3c25d05cc219e2576e44b746e619cd290b3d924f18a4765", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "afc594709e9a8f2eaca0c7c94d09d1e854e6d5e9d14106b32b257f37fd37b888", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0d1ddedceb5d39927256249d3b0709cf0ba86a2268223bbb719672fd1f11a2a6", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "c1ad9ee54ceb34b7ec5b138dd46b51e49373a98c4d9c4b53eb06d751067168ea", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "d0b32ea4a7c4944819f47e8916e6aa850882dbe194ff752d7ed5ba646fa653dd", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "1378b36e89ed477a186ab1b9963dae963e9cc07b5265f9da02ed61acee4be8e8", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "7212150b4b1f23e62a34e69899e4616e509ec0374c30edff39f945b1a3dfb81a", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "40b692877cb2de4e1f52b13260a45e79d2120f8296cdc25d2bf692b4413ecb40", +"TT_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "079bd36fdac3f06bb2346603e94bd9fb82491877512a56f38d31aad478d7c0c2", +"TT_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "17379212c0de91ff8cf1f5c649dff825af07c97da71c7c3651ba874c543997af", +"TT_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7ecf4f45b527f47edc946c147d626936d235002987ff58e280e0e43d4fd1acb2", +"TT_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "ff410e1628c69c42315fb9f5abcf23c62c0b3b54ab69c5d4a1afe9402fb441c3", +"TT_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "8a82eb6da11a97814792775dde0eb535e4278f31c9028de68433baaa7645f4a0", +"TT_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "52be3d54e477c7e43c92d619d8ca2e821a68f6cacc2bde3f539380c5afc086a4", +"TT_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "870a36545b5303bf2313aa6af9f5122ade881b208ce0c0914bd88c6ae0e70e32", +"TT_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "57a391e6d9eeebf6bbee436bb1f92104cc12c6eef9e5ccc11d0ccbb8ea810027", +"TT_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "80f5cbc5adf1b6a16def8f1eb743569bf8062c9edf11500fb30207fa883e4c2b", +"TT_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "34b6841bb4af8ab142d33d501d60104ead384b0d5334add2a17099146fe3cde5", +"TT_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8537ee6670dddab9cdfc1c3477e312d2d276fade523e4e1acd691afac3e4ae95", +"TT_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "9f213da56c8cb1be779dbb29bc24aa65d671ae18b35ac60ee627f92ddc8b44c2", +"TT_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9c74b1f9ae1425cd069f5b78fa505a2dd28efbc4f02354db4da864821fafb1a9", +"TT_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "5b15a7ce8a1f360be7bb94605899dd9c814e6255e7c2ef5b2b2daec7cf11a151", +"TT_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "cb74bdb9969d600db42693057cb742fc0fe69b32d9c2f4b2d81f377ee311a341", +"TT_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e3412807c1a1b2c4380be2f0de912e95221a3804a539f2a0bfb9613b3e6b5d25", +"TT_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "6df6edfb0be1335ec31fb74461477027dfff2ce0edf5d10991f7ece5d08c7e80", +"TT_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "169b07e7e7ed6f32be252650b3891abeb06bed5102515cbe11d5ad7917407c5d", +"TT_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0484f6b955aac642aedc5b44547d7cfb41d5edd9165ca9750c9122aede341453", +"TT_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "148a20e13f198e77225905f782648325572e6124b92171ca9c74ffad98bab4bd", +"TT_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "ad42e35343e754d5bf05b3d1cc030c60bcb792274cef5f84db8a4fa364cd0e30", +"TT_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "f857f7a1a14a9e1fc4aac4902d7ea4445b7f3072c6033e759e8678e3843d1256", +"TT_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "8cf7cdae2e28924557ab6b4c3c106e03b1bd4666f9a3373427693a40d3402717", +"TT_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "3052aafb0475d818c0246beb2be5cda3e0057a551162c57fbe260b4d3e708c6d", +"TT_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "9a1d0cb7deb999e904ee6f64db5f09460a9fbde134cb977260333f3d1c5400bd", +"TT_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "1ef3a9ad49bccce169efc55453913d7623abfa0ee247d5285eee3441745af701", +"TT_fr_ripple-test_get_address.py::test_ripple_get_address_other": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "541a1dabf1a0f82042e701afc65d8e7d4b9651f840c038cf4a732a07b636b28c", +"TT_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "5d79c013cd9ff3c4ece8561e0d98976c7519ad77b48fb0aaffaf8be85789a849", +"TT_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "418929983bcdabba79c64532ce7fc865f2368447d8581370ebb7911570c45a5e", +"TT_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "5da8527dd250d1446b5c026c85163a838cbc59332dc5b9f3a51eddacb8be97c1", +"TT_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "465d34fea908101dfb556e3098d8cdcd7870d7858d18ec77b77f4be312318b94", +"TT_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "c4211334b26b59f3710d1f79db93ccbca347af0a7d77aeb8d14386abd37e4c86", +"TT_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "b3049289291f264ffaab08bdb7db70843c121291396dd97bfe193cfd14a8fa4e", +"TT_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "4a49489e363be631f64c344f15d06c6c31af35bd859bb67ef7bfe2d93edc8411", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "1e71ec346a395a28531da1a1cc6cff15552740cc8a40aeffa170ee1f0fabd925", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "80b6ea16810e5af9e2c362e0b6e10908945cf9bee370da8add729c34b4c9ab11", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "9566c19511659cc4a5b572828edad9708010726032fff5abd30957bed3e5423d", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "203f969ca39106b6fef38bfca18e6e85a5214438b14f3f04dcc14e9e0e266acf", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "217abd22e4c6a0385d3d2ef4f0235bf2aadda485744e78b4e2eb062230452da7", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "213643f58391990cdd71d12356141b0c3c9a261cf92b5199e630134ad077fda7", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "cab0d038bb4641a043b15f2b953963d52725a2f235f80d3233c33e134ac76f5c", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "bc92e7941bb87a5e820c3ec1fa7e528cd9d75fbbc4cdaf45d0561bdab56d6736", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "b13056c4f57f3408dbd8e4981919a72d424eb48887a76efdadf58c75f82b66f5", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "9eefc1c49ada500175f6dcab91b5ed737be6d25c68e271e877ce40b913bf769d", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "524d45efc85e0afce3e031ba4b31939ef44be7da5ef1666e8e9b9bd1d9d80bf8", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "c4377c9826f7ac605fe27f782474e998cd4d2ec2f70d0a9f4c108d1b596ed6ea", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "ced1fc9da9e33b7317782a8e1d74a731b99ee039ce04415e35855cb6840668c5", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "0c97eb52e08fd4ca5ec3149dabc351a62932f15729fc4e8494df7165af8179e1", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "d0fd121ac6d581fb51312684c51d06f8b355a4c3c494f33e8d02835902bf5e5f", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "1b3a1e9fee2a0b80da024726dd02db2dbc741536d0a9aa048e289bcf5f36715d", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "966b4f2fbff4808ddcd51d27808fe028b07b7b2f9c8e33c504639902e24a609e", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9b38049d478c0e9a15c08249a4e4b00d22f344caa6583fab2e10e3756bb3251b", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "c506fc87c406b4a62b5f732d8887d1cf97efa7dc8ea322d0f454877b9dfa4e49", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "40ad9832e3ac543dda0cba3960ba1a44dbdca18bbb6922b5cf1c9171f756f2d1", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "79c75cbc00862e2653711b869d867c6e17768992139a91ad2e34b2924c54efc6", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "8d036ccf9d274c41fc65292d19947816345aa42eb6b8825c73941ecd7dda5c81", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "aba5d7ef31c18a340eecfbbe980f798e6f410e6a250fb0151f85ee98f9ada1c3", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "57109c2b2313df6d55a7a00468ef4b09d78ed1327bb5bf213b5727cfb5874127", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "664e355bb443e0486e08e5e13c332319beeb1ec8bd7b5aaadee6069c806ad5f9", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "3ab6b51537006893a44131eea48ef812235a37b7455bf86d8b1006f44057e594", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "2a939913ff02b57aa1ff3f926f08ad8ed07cf4b373d9f566525e4ec7e3f0bd55", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c7b5fac4133e884d397838dab226a24ebb01e837e7e5e1fb80d44f59c2fee5c8", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "0013d0f7e1db755ddb095ccd7b0652b8d3af80ccf5467f0558ade001a976980c", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "219c5ca0cf481b5b2da89d18a5f3ebcdb77ea4eaa597bf92fa3d5ac1f10e7210", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "09c85e6a867faeb936de8776c0ed35f85c0f3d782b39580ba296625be32badb4", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "3d8ec0faeff71a3f2184edfc5a71346d8e69cafce207c5b97b7ae7bb87e800c4", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "751d7520eac3518a4738c07924b90c59cb379c868ef08f93888a5de435ac57e9", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "4b8ec7a63efa63be43f963386fbfc86a21fe43a546536fb5382ba9eb2fad2928", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "0b4079d418a27281b9806fe73d45fcd08e3309b2db2cf8174f9d7d3ddf409b71", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "5736c2c718cbd8aeef48cae0f6b3e025f12a53ffcef7f94a8e3b3d5ecea1b7ff", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "1216caf8832ce83a77d8691a1f04bab4812aa602807b00b8831db0ea06708801", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "8f35300b4d80ca86d1e84da2409b6c2fe85f5eef6dafde3bbee1251ed4d361a9", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "44c7ce87940279533f9d7959995d68ebd2fb57c5304487e4d1b84330ba5d58fb", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "b105da1b9d645311d74d002c9146e2749ae4ed16c01d3ccafce25669c1a768a1", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "ad1747f1521239d1ff2a2f194bc8472e9cef6b4194944721845b1f51f32cfd5e", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3380658af16a1b77352302dbe9e2b861ee84fad6c911aa9ab1de4052339553be", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "0a5555fb732a74506e79d0a44d0d845be3e3fec04ff3346c5b3030d3e27b32fb", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "a43afc935dc7d37614d46155f3ebbcda2d63529a51fac8b2efe2f96f15869713", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "96f97320d7178e5d966f2380d707e102488d658b34f7c62f031f456db866c6f3", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "92ff1d3de38f5b669b69a9c884fbb11b2247b7060fe96056ae94b4fe9b653dad", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "42cf523f62b4e1b9ac84bdafa38edb2bacc629abbb4be1d47926bc237556b9b5", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "693c0f52bc08ffd185506ea82f1f3a0fd9ce5458de614aa4653322568f8ef152", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "f396a4c34d36992a0b37b769f1054248b57309fd807c728148c5a4fb029d077b", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "844538f6327eb885dceeeb3a7fe555dcf081a9d2b77e9945c1aa398e46266339", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "409f4f2595548421c6b224be23b39f1417b93b6065abec06609aaa90239b7ec1", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "00e2a0251b32e9aa4467820bac5c9885c6657936a5077ec10f9943a0e5be4372", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "534c548901f9e3ee8b4371eaee0a2b4a884027b5ec054924bfa978d07aaf7a98", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "2e08f021cf527bd88b392ed57b3e58f4c6e2bd1093cb88633ea7be03f6f6408d", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "2d7ec8dd5778207e4a68a7baa208e290ed1c13206cb1068ed7b41a22cebfa170", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "2e4a2bbce42f7a0cf7ba62a33dbcd869097bdd0d7c071b501fef0604293ba649", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "37b8d186324f6e6e5576a0fd8de64a3af1b80edd1d78faf86d8a700b623215db", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "966ae6cace0d2e985b2e77e27e49b889acd544a20a5b2f2973027ce4b3f053a8", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "57109c2b2313df6d55a7a00468ef4b09d78ed1327bb5bf213b5727cfb5874127", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "e30ba5245cbc3f03bd3f93038a9efb858eb8c0fa7440d23839f8f7aad854d886", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "21f2538cad4ded9785c8053e7dacab103ce1cf1f8c1e76941a90b501585511a5", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "a63e97d1edee3b2babd0b76c4ff748bfb9c4b1a490243d73d51c4c59a04408b7", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "a9fe1b7984add2fcd182f6e625ec370bd74ac63a3c686cc363fa8d1448af53f5", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "84a58534060706815593ddf7447c7c41791157f9c22ee7838f26fc709d70b1e3", +"TT_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "7161d78d65bc9c084588d8fefb2e7102ed473d5136acf4daf54e7bb87744cfc0", +"TT_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "adf37b8b4155d81457864ea1d7e2fa24d6902a950e65d7dd464e718db52cfefe", +"TT_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "37ec12a123755b784b81231efbc7618356993db7f66724a09e82b3b98768fb15", +"TT_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "391428a60b2b9273e5f154815b46128f76291e2ba482fb67abb2af4e7a8a40e5", +"TT_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "7e7874dc09c330fde73031f8c33b9c52dc37bea6730b313574f88d4fbcee3145", +"TT_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "35073683efe6a93a521b0b803dda8d351e69f6deb97b8a377841defd5f560338", +"TT_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "576fe28b99734e404e89ed2caab6a3a78b1fa0443223bfd365813ee42c22bb4c", +"TT_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "68bbc7e474a7accd078fcc018983aeb782498ddf72923d06e6becc14dc1807bf", +"TT_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "45116f727f262033d9410157aa9b0803a65a5c2d6ff3f6848e7f8f289ee7f492", +"TT_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "5c03b5f169bffe3b2eb6a0290f8a9e71d763b8259533a1f7588677343b3291c8", +"TT_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "0380df4e9e8e267bda8320d284e24993ecaed2ba9658124b35dcdd6396f46d2e", +"TT_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5c61129dff50e6b87c8a321c19c75eb8ea3acd9649755e81f5b0d1d807ab222d", +"TT_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "b9080888432221c3714ed9c593b6cb86ea84024d9b994875b15691a56aaa6169", +"TT_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "3ed9c35d9c5e219e8b829edca5aa4533c7454754e44ea2f65eb8bdd8fd346441", +"TT_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "be56905f1ee8fbe49577bf62a29e79f7d461de5f498905be23ccb88a4f3853b7", +"TT_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "fb077351fd0e6500f54f43743512897bef55109558adf7d61ed5ab3002c4f5d5", +"TT_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "70fade259ca348a613206f6de4bb59c2014d5350c7bf6032812b7614588c6beb", +"TT_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "52d2a620e1729397b2d65e154901402b727fb94e52353e4882bdb4ef8ccad493", +"TT_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "8e89992220055e4958d1cfdd03481b08e6b9647e2edf804cb20e75629139072b", +"TT_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "9b62b3e2e9e6e9acd8ef3b92986e085b9ee566a1d5460c4ca7bdccf3c6f71f4a", +"TT_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "cd211480d4d72ebc873430de6cfca1a1818a76e3c65dbb43e3a61f51bc658523", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "fe8eaf4d3e073b8ff41f089b297d26189917b3b5d04d2688dac622c1c9fd9903", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "60c659a99da31c501fa3c9363db97a034266a4ecc19a4655a5e69bbcca682ef4", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "7607b1ad26a091c25b852b36fa57a69699f5f8bd7f2129889426ed8447583e46", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "c337969fbcbc30ff8c6f8429fcb0a2a5460f688430652d16020e26e5ce8dc365", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "78bc0c7fddd780dbfac9b88bca9ebe7bf9cef23c7e766c2ba95d3618ebc1412b", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "ceaa80f96697da11b736035163a2b358dd3a0453af6d9c50ea05abaa975f79a4", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "a4eea34c27e37820e1fd69a4a8bff93f631c30771a363e2dc5dc072b34d3239c", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "de170417b5ed11e20ce99eb7d598719f1c8ea25e5414da526f551d8169eca699", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "36f86549fb675eef89b438ea173a05455a6cce28f488ec12404a5ed57de03212", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "b16e447e7f01932d865a57c5b389af6e656d28f741ed917e1ee5a6714fc97be3", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "f724b14d2f5f6fe737ef738d7ca4bf2c770c15d36e675677dc41be7ae12b089a", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "65cc8260b1a1a74f6189036c63a6d9d9439b1f5a659ead111839049d22edf28d", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "3d1c52dd7b6974cf7bd04804b54baf8e7d345bb6c782d950cde2cd38196f006d", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "de76b742630f1688b9e49b337901354520669da12131cac73d8fc71ead837fde", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "b388722a87325ba22cf91ddf3db8dc205f5f538c80cc3d9da5d98b503b8ebaf3", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "226c5c7745596b751bd97d8d5880f839a3ff650350d48c5df4dfcfb979dff8e6", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "33739d102bb2e4c3dcf4767ff57d0d2a0771541af3a7a87b3e50d31741814802", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "e389f3c0dde1674b39929369c79b25228179b3e99c77643074733d87ef790945", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "f24ac30cc12b37d19518687022705c49dfaef614789f57f9ac0cc309795310d0", +"TT_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "95758f2f33653df7616e97e3212e46b35ddbcaa9df6bda11d82535e5229d3281", +"TT_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "089b42b2971223e27b2c0ebc55b52e364905004c9936786598c3c1f471d8464b", +"TT_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "53d848937998774d65e12955e057a72a1972000d977b8cfa82b192b5ce510a51", +"TT_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "a861cd6b4c855c818227132eb4189f07c41709338764829f55914eaa7096e6b7", +"TT_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "0a9213d62f6d6b49ba67bf12bbf5b883409af3d1ba59c77c0a95942928e47634", +"TT_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "4973d73dc3068038181e090758d857b8fac376ba0005ba2d81cb3e160d02b2a8", +"TT_fr_stellar-test_stellar.py::test_sign_tx[source_account]": "314f8200b43064dd08c5bf69c9338e7d5d1bb6091dd66e217e2bc0d62d6fbab9", +"TT_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "4c545c80f3be82a0689234d1f48300e95a7c8f445158c1db120f986402fbbc4a", +"TT_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "f533c4c59b550143d6813019b50df9ac97b851c15470d156c8d1759593d9aa39", +"TT_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "3f81e6ed3c049d3b0b10866f55b786b233bbbab916350f5ff4a8bc148c41a50d", +"TT_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "33739d102bb2e4c3dcf4767ff57d0d2a0771541af3a7a87b3e50d31741814802", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay": "d76c0368550602ea59a55a0a3c0d90bc8975988170bbfe555fb73b27b3941405", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "bb519ea97340db9bddfbf4486f3ffb844f36e96ea077dcb8abe4743d54ca298c", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "bb519ea97340db9bddfbf4486f3ffb844f36e96ea077dcb8abe4743d54ca298c", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "bb519ea97340db9bddfbf4486f3ffb844f36e96ea077dcb8abe4743d54ca298c", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "bb519ea97340db9bddfbf4486f3ffb844f36e96ea077dcb8abe4743d54ca298c", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "bb519ea97340db9bddfbf4486f3ffb844f36e96ea077dcb8abe4743d54ca298c", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "58608c58164fb1f1c851ac7f44e434b999ae004ac4a738b7a4d96969c13427a7", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "7fb29c9fa012f552772c844c2771eaa560cc869da7cdb15eb022cb82c9c8b4d2", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "d3dd7fb3d69b2fa5bc1df7d55caa36c88df7bdc9387458b85ba58275409a8f5e", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "4620b989231ae5085ef82ca92dcfd672a774225ea72289a14b682315425537ea", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "71770c446d8288125ee6585075a36a3a5257c22526a0979ff528667aac7972e3", +"TT_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "3822b9b4505a5683bae6b5031e121e7c25280882cdf094609ee97d7b2bd8c70c", +"TT_fr_test_autolock.py::test_autolock_cancels_ui": "4644760c33e1f6146a9db53a19c01f00889de9795916612716c71bae6813deb2", +"TT_fr_test_autolock.py::test_autolock_default_value": "6e376c17f3710a50d77b160353f2bbf4a4003de0e559376e02213a34dc35e7e9", +"TT_fr_test_autolock.py::test_autolock_ignores_getaddress": "52c5d59bb4fb55af238611dabb816c3338473b72dda66488466c7b6b70dc015a", +"TT_fr_test_autolock.py::test_autolock_ignores_initialize": "52c5d59bb4fb55af238611dabb816c3338473b72dda66488466c7b6b70dc015a", +"TT_fr_test_basic.py::test_device_id_different": "59c327767e35b9e5b96ddf778ab82b8cb1efea285a7058c4690df51eb5d67b9b", +"TT_fr_test_basic.py::test_device_id_same": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_basic.py::test_features": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_basic.py::test_ping": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_busy_state.py::test_busy_expiry": "8a763430f33ee24dad60ee263203661f94ee8374e8672eec7e8ccb1de2653da6", +"TT_fr_test_busy_state.py::test_busy_state": "80ff5e618dad3a5565ee01be362f8c58914bc39702e8153e86ec161f07267bec", +"TT_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "c5f09ed0f93ffc88b602a2fc464b3d88cf22a8b132de2e825874df82b882baea", +"TT_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "c5f09ed0f93ffc88b602a2fc464b3d88cf22a8b132de2e825874df82b882baea", +"TT_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "c5f09ed0f93ffc88b602a2fc464b3d88cf22a8b132de2e825874df82b882baea", +"TT_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "c5f09ed0f93ffc88b602a2fc464b3d88cf22a8b132de2e825874df82b882baea", +"TT_fr_test_cancel.py::test_cancel_on_paginated": "6a5c9c9c22de4ca2487201ddcd9194f300794aab69892397936f8e40e4cb97f2", +"TT_fr_test_debuglink.py::test_softlock_instability": "6319b140dcd9811e1af8f1e922e6c12edc6e5319de74ec538c4b9dc3cddb431f", +"TT_fr_test_firmware_hash.py::test_firmware_hash_emu": "57385d922716c0f2e6647b910468cc4677832e93ba6e3b65cba465fd020d1263", +"TT_fr_test_firmware_hash.py::test_firmware_hash_hw": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_language.py::test_change_language_errors": "8c52d651a97e7869fe8c33113cab1b37776bc8c953206c4c7bf3ba48754f47c8", +"TT_fr_test_language.py::test_full_language_change[cs]": "c9ebad4ab0abbea88eb15d5fcc013bba92a867f741708ff8b52bf403878f122c", +"TT_fr_test_language.py::test_full_language_change[de]": "2841400f5d056a8c27016ba89ba2f44335eb2cce123e060aee5287e04804509b", +"TT_fr_test_language.py::test_full_language_change[en]": "1babd5731521f0ce8e7777f651df318cdd59df2dc9150c231880cac927bdfd85", +"TT_fr_test_language.py::test_full_language_change[es]": "eb009711e7f4b03b3e166f8af9ba31657c9e15597dc6ecae855f6d66974bc6d6", +"TT_fr_test_language.py::test_full_language_change[fr]": "73d01874c8e36d30fcbb5652c7054dd399ac50794e7e3edf82a3604e673d6909", +"TT_fr_test_language.py::test_language_is_removed_after_wipe": "4adfe7d0d7996a39805182859f191a78da09d228fb9c7deb44115518acb3d254", +"TT_fr_test_language.py::test_translations_renders_on_screen": "8dfb60c6019ec31ba3ac35ba013c4422eb90bf9fef5235edb09cd703e0a7748b", +"TT_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "381bb34fc998a906844b7dc664aed2c5037e3f45504666d71c21fbeb55d217c8", +"TT_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "bb519ea97340db9bddfbf4486f3ffb844f36e96ea077dcb8abe4743d54ca298c", +"TT_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "bb519ea97340db9bddfbf4486f3ffb844f36e96ea077dcb8abe4743d54ca298c", +"TT_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "bb519ea97340db9bddfbf4486f3ffb844f36e96ea077dcb8abe4743d54ca298c", +"TT_fr_test_msg_applysettings.py::test_apply_settings": "31392bcfc97ab237f6f3dbe7506093729bf6686ed63a886341b74098efd262f2", +"TT_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "a2fb464e4e5441f4aa70fed7a9c1dc3b9ec56de2483065035335248ed6fc25fb", +"TT_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c28d3ff8a736880f4852439ec34fa91db6cc8020c1e87f45aac6115c8f7a65ee", +"TT_fr_test_msg_applysettings.py::test_apply_settings_rotation": "19d05da3352736f303a9dd2b59580d0f6b51e13d8ea8e673cd3e8b88e08ac293", +"TT_fr_test_msg_applysettings.py::test_experimental_features": "135653db6853fb22ad3672b10236bfa7652d210f2286e0e9413744b18b478417", +"TT_fr_test_msg_applysettings.py::test_label_too_long": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_msg_applysettings.py::test_safety_checks": "ff959e80725ac4f5b0117eef8e0ab9dcafa029950754abee4f95a008388c13eb", +"TT_fr_test_msg_backup_device.py::test_backup_bip39": "abf678a58916d30152db2f965b62c0715bdcaf0bab425f53e521222b046e093b", +"TT_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "ef57a9574a6a59a8e2ed7942e568a28684f26d94ce2510768393ee24b49a2344", +"TT_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "f8a6c6406db8d908a315cafd31984b4f72aad540ddab9184751c193ae9e9f58f", +"TT_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "6cd1cc31631e81aaedfebdc0d4af3b08a5b80b2ac74f330c62facbf286d6040d", +"TT_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "1f2742436d992b6a6f47d86b73376e6752ec5e3ee716c893b2d2ef3aec833470", +"TT_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "f58eff59f22fd51c8e01f2115c8e84c7de88efafb4ceb88e3210ed4feba3f485", +"TT_fr_test_msg_backup_device.py::test_no_backup_fails": "005c1b631d2632fa7f4c36edfd243a90448c05c9d70c90dce341031e89b197a4", +"TT_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"TT_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "a9695bc455662bd398267a2f22f4acd678dad5130c83a64c49e20eb41719288b", +"TT_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3d8aca8b0b1d9e5455ad1e218e50e38aa9ffe3d89b56f585a371399d7956e021", +"TT_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "9356a079f2428e4d2d816525c2b7fb7eb57d9f13fba64912b8d211ab23631bfd", +"TT_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "66ec7c18a8aa2949a237570b4f8bdc08d4c03c28fcfb60de9b465bb30e0295c2", +"TT_fr_test_msg_changepin_t2.py::test_change_failed": "2bbf7230c733042e09d0259a24c4bbff2d64feb7d9ed911addf3bcd4e7696769", +"TT_fr_test_msg_changepin_t2.py::test_change_invalid_current": "ae0b78c793f0892669b8ae18e4b0c7cca7ed6f66b950350b440fe13109fb40a8", +"TT_fr_test_msg_changepin_t2.py::test_change_pin": "d7af9de3f59ad55af67b0a42c2c038fcec9f649cb435cc5dbfaf50439cbd2041", +"TT_fr_test_msg_changepin_t2.py::test_remove_pin": "f14682cf159afe0c445840b5123b29f0c7e7186824acdb68eec8765133aa683d", +"TT_fr_test_msg_changepin_t2.py::test_set_failed": "c9fe8deb800104dc6144d386d9deede5d9d95e8928cac3be44ff45a81f676154", +"TT_fr_test_msg_changepin_t2.py::test_set_pin": "8da18c4cc3876bfe61a05db3505d7d9edb14722d769d24729dc4db46dec4da61", +"TT_fr_test_msg_loaddevice.py::test_load_device_1": "1c6291bbf1af76783a6e53cadd6675b593c0e439d4afd7b701a80314331e3024", +"TT_fr_test_msg_loaddevice.py::test_load_device_2": "80673aa21ca9dfd0bfabae1194fe41b385af251a708cf51701f4acffac560a56", +"TT_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "1c6291bbf1af76783a6e53cadd6675b593c0e439d4afd7b701a80314331e3024", +"TT_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "1c6291bbf1af76783a6e53cadd6675b593c0e439d4afd7b701a80314331e3024", +"TT_fr_test_msg_loaddevice.py::test_load_device_utf": "13ffce24c6ab07b2dd6339b0fa5c6630d01681db4d1f6735954de98dcf9ee812", +"TT_fr_test_msg_ping.py::test_ping": "da881a29c193ab8552098d1f01b5fcd46c031fd7441eeef888759a31c2383658", +"TT_fr_test_msg_sd_protect.py::test_enable_disable": "0cab0b1307a8937d926e40a09e92d66312efc70b5376fb8ba91f3bdb42060692", +"TT_fr_test_msg_sd_protect.py::test_refresh": "d7510aaa94c36ff939deb09da2fb343062923c4d5b105cb07501b1365bf17fac", +"TT_fr_test_msg_sd_protect.py::test_wipe": "acfcfe14552da762fbc5ade336aef1226e37e246fd9a2eb025bf22a7ad3d8c56", +"TT_fr_test_msg_wipedevice.py::test_autolock_not_retained": "bc7ec1809d34b444d731f125ec76fc6a6cb0df68e5f7105c67e8a35b70dc3e8b", +"TT_fr_test_msg_wipedevice.py::test_wipe_device": "59c327767e35b9e5b96ddf778ab82b8cb1efea285a7058c4690df51eb5d67b9b", +"TT_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "14adc75a6a846b5989f589e60ae64624b14be68248b5e3d279e00f9a1c4ac8fa", +"TT_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "14adc75a6a846b5989f589e60ae64624b14be68248b5e3d279e00f9a1c4ac8fa", +"TT_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "66fa598f4ab35727c1a757a606b1d258c783056ca127ed7f0ba27d8120617223", +"TT_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "66fa598f4ab35727c1a757a606b1d258c783056ca127ed7f0ba27d8120617223", +"TT_fr_test_pin.py::test_correct_pin": "bb519ea97340db9bddfbf4486f3ffb844f36e96ea077dcb8abe4743d54ca298c", +"TT_fr_test_pin.py::test_exponential_backoff_t2": "c6ff15357f8b0efb85ba3ff1a2bdfb5d8e0976e480c64b9f8e3b561a1f0d5e94", +"TT_fr_test_pin.py::test_incorrect_pin_t2": "040a14836a64acbbdaad87b49cc0e882beb5029c61560500d227e0610dfda361", +"TT_fr_test_pin.py::test_no_protection": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_protection_levels.py::test_apply_settings": "1841b1d088d68aace789412bee61fdffc8c9dea91eaa07c166ea172719ccd45d", +"TT_fr_test_protection_levels.py::test_change_pin_t2": "9a48129baab278bf7f60406bd537e1b36d7937eacebc31fdd1ff40148614cf73", +"TT_fr_test_protection_levels.py::test_get_address": "b1e3775423df132aa9afb26b553cd8386dba523fe2edb21b27ab2befd55dc801", +"TT_fr_test_protection_levels.py::test_get_entropy": "3dda2e4e243084b3dcb7f6b32277bf164dfd6c2ea2ad1ec1d06074aecea7b39c", +"TT_fr_test_protection_levels.py::test_get_public_key": "b1e3775423df132aa9afb26b553cd8386dba523fe2edb21b27ab2befd55dc801", +"TT_fr_test_protection_levels.py::test_initialize": "cb8184df66230f977f4aff891039c1e18f21c77bb6dc38214280e6c8403e35df", +"TT_fr_test_protection_levels.py::test_passphrase_cached": "205e221f5389460c1be23345f10dce9f2ced4471542361d51a997b34ecb78256", +"TT_fr_test_protection_levels.py::test_passphrase_reporting[False]": "6f589f2c5904597a89c30783dafe4c1f04bffc98f6208065895943050ed6fb63", +"TT_fr_test_protection_levels.py::test_passphrase_reporting[True]": "dc62686f49c413a0c61c4c058fb1ebd2a7c41db0170aa19695cae1c96cd5fe6a", +"TT_fr_test_protection_levels.py::test_ping": "da881a29c193ab8552098d1f01b5fcd46c031fd7441eeef888759a31c2383658", +"TT_fr_test_protection_levels.py::test_sign_message": "0c1bc75f65386f03512b0b2b252069fddf3f8a913d0b36219ba4ad14cdc213dc", +"TT_fr_test_protection_levels.py::test_signtx": "a9661656ad32af1adfedea4559c500a02cf3649d36ccd3d3b12ad8a84ed7ebfc", +"TT_fr_test_protection_levels.py::test_unlocked": "6b6942dd1e1c544028a052260cb172237547ce100f5846e1c85be71f369c6601", +"TT_fr_test_protection_levels.py::test_verify_message_t2": "5562a1e5a2e88e536276feb04f72bc7d6ea79b936c22acbd2127b8dc9039c9d8", +"TT_fr_test_protection_levels.py::test_wipe_device": "e58b9713ac10bb230ebf95827cb31e6f6dc534cc8e65ac5ff1584d7359f62148", +"TT_fr_test_sdcard.py::test_sd_format": "5e349a1d1927b28e6594a5422a0bb8b2713a69e46c7f9d08411656ee8d20a7a9", +"TT_fr_test_sdcard.py::test_sd_no_format": "311460d84fe18f837a6653f30879a704f664042b218ead1faad4c0748eb13cfe", +"TT_fr_test_sdcard.py::test_sd_protect_unlock": "0740d406a98cbd2d5322fe5d3259ee5fc17be50f854fea8b4480c313453ece53", +"TT_fr_test_session.py::test_cannot_resume_ended_session": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_session.py::test_clear_session": "6f034fecd148e54b824e31394862dc092fdcbeaaff3d575f2f22152df9dca073", +"TT_fr_test_session.py::test_derive_cardano_empty_session": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_session.py::test_derive_cardano_running_session": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_session.py::test_end_session": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_session.py::test_end_session_only_current": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_session.py::test_session_recycling": "66fa598f4ab35727c1a757a606b1d258c783056ca127ed7f0ba27d8120617223", +"TT_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "9cc705078e2f78b55ede1bd5fb55c2aefe7160cd7eaefeb4d9443cfe67728e99", +"TT_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b132dafc0d7f30ce6260436d01ebb0c87c1525fa972d2d261f664c826be39865", +"TT_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "6f730562efe175431133f6f2d98449db60fd361abbf265a64f311cec72262954", +"TT_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "724b38aa4f54daa7728d36235b3db4ecafdbdcf7ff2fe23733e9ee9f984a0537", +"TT_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "c6dbaca04dee853b0a71530706343409e1fc3a8270776f977ab069124682cd61", +"TT_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "0d657a0b4b934730aa9ca15b66ad9f729fd75698f062689becae9f574929e4f4", +"TT_fr_test_session_id_and_passphrase.py::test_passphrase_length": "2453622bbe60444773cc084bad12a8db19f8bfb054b711b63c1ee16f8178a477", +"TT_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "205e221f5389460c1be23345f10dce9f2ced4471542361d51a997b34ecb78256", +"TT_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "0c2ced815836265c516020db4a0956be29402497912701bfe01638f2ddbc10f6", +"TT_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "bc3b47ece735e9726d1565dcbc125683654aa6e049ae0abe515d4144ebc6e367", +"TT_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "35abdade507e2c0eac69a406adaf67d9c03b2856efc0627dbe9cdcf3c62bef1f", +"TT_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "fffdadb3e126949100c06e7c627abb40190b271a0b7cd80bd8b7b0a66ce413bf", +"TT_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "95cf38e18caf67f9468ab3b998bc6042151f41d3988f04336c63e58ab7706e41", +"TT_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "6b5efafcddcaf9bb771000070bea1f6f9f30f74b499c4bbfc5581636df99c0cd", +"TT_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "417f32bd71fc8aae01fe5989acc2bc12d6b1c5994e670286b880920865772047", +"TT_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52", +"TT_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "69b35f460800f71494cb6c569305895a56aa722f1fd00dbc6ac87775a61357bb", +"TT_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "813d9d980048cce687ba0526fa62f4467bf3362ce543e4daab880d77c898c325", +"TT_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "219678735e4e8f28967c5997d4f48d90c6d43e9f41f8a2140316c60610d5168e", +"TT_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "b320e86692f58265d74cd69228d6c3f70a43b8a29702fe0398db81758723babf", +"TT_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "4efbd6a5af0c9da08948efb4ecd8e4c481666a1cb97ef2e0dfff97396754be85", +"TT_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "b97a46ab5d56819d30c10fbfe88692011629c1f73982dd0efeddf11c45f447f8", +"TT_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "dad9de235ddd1b93440d8023c1579a32f60e44463ec9776531e6e9a7687d0469", +"TT_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "9e4d0d012c922aff3a0e89eb636d899bb60acc46d4baaac934e7decb292df1dc", +"TT_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "9ac715b1daa81cbf90cfab0b7fccf55ec92219e386b17b595ecf0347cc24f0d3", +"TT_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "3f28804517954a2727555b0767056a865c5d8c9de24ffad98051436bac01394a", +"TT_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "60610e71e38184b56489d1029672d527fc208c0dc400e8dbddbd9413ebe01a81", +"TT_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "e855d816f16e0bbe0f59389163341198d9290ab2eb462d96dcf27829c8bfacda", +"TT_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "ceccb135abb98ba87ee63848f3f6e60bddaa4a77aa04db5cae6981bef28a2606", +"TT_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "d245e5b5bd8b5aeeaeee7693a28777f073e815deff54e0885ca988d784852874", +"TT_fr_webauthn-test_msg_webauthn.py::test_add_remove": "1e57f59fddcece07b83af3b8a03d8dd5200dc0087fc424003e54e4390010fde6", +"TT_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "56b08fa5a94c1a5635f63981fa095e1f65a3fd54af727c3cb1d22002586299ad", +"TT_fr_zcash-test_sign_tx.py::test_external_presigned": "b2f883afba261909c6c26f9d8f68e63d0935e9e06b35aa11a1640e45ad5c7bea", +"TT_fr_zcash-test_sign_tx.py::test_one_two": "6b7340ac2895a7567c47778c81d8f59ea1d452fa79e9485a95e342a50d98fffc", +"TT_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a15c7fbd1056c814c1c05181f29566dfee44785ef038555ca4cf96eff42cf4f6", +"TT_fr_zcash-test_sign_tx.py::test_send_to_multisig": "29b1d22dfb17758afaba5404888565d5b66c2df45c54b35bbb3e477d62c5e209", +"TT_fr_zcash-test_sign_tx.py::test_spend_multisig": "587bf1f9c603b1a13faae1c932228f5533c82a01fc6523fd18de8a4df1ec2a19", +"TT_fr_zcash-test_sign_tx.py::test_spend_v4_input": "c79fb62d19615fc6bace0e291001c2bd48a75451781a79bdf7f7e42db9aa8a5b", +"TT_fr_zcash-test_sign_tx.py::test_spend_v5_input": "cbeb929f2dda656597aefed0e3c044b59e4237365aba6ad12f040e5cd63c8114", +"TT_fr_zcash-test_sign_tx.py::test_unified_address": "01f39862538b4ee4223653d2f6f77d5d992f5df2ac072c416714c1362d61b9b2", +"TT_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "423c65c11eab2ef64933fb45b155b6730906bad1ab2f7b1548f334f23d7a7f52" }, "persistence_tests": { -"TT_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "c9a7a982a9e58cf03d5f15cc4647b1d62e21c5035fc0d8a4e5521053a38c791b", -"TT_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "627968384535fa1d8f62f145966c1e7f1151b234c10686ed59f6a84c9e8b1db0", -"TT_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "40f0f8531b056495156f1cc7f7d8e77232ab2d9507b40abf2f15018b2ff9bfb7", -"TT_test_shamir_persistence.py::test_abort": "69197749bc5d91c3721e145696420129630bec36f7f27c6f7f789eb3ef173b2b", -"TT_test_shamir_persistence.py::test_recovery_multiple_resets": "3059811fea05eaaebf5f7ef6475b6bda9a166b3d519cb803e6172992a14fa7d8", -"TT_test_shamir_persistence.py::test_recovery_on_old_wallet": "219b0822432c9dbc51a6106b901b950aa97c6ac0b7dde8de4b8e951d891c2148", -"TT_test_shamir_persistence.py::test_recovery_single_reset": "dcee1170a05d710d297f835b6bc15085b33113bc11e04397254f2e7ae5e284f1", -"TT_test_wipe_code.py::test_wipe_code_activate_core": "fe824c107a2c6302e3e2cc8416dbdaa8ecd06c91364524172b162ed6d3a7916a" +"TT_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "c9a7a982a9e58cf03d5f15cc4647b1d62e21c5035fc0d8a4e5521053a38c791b", +"TT_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "627968384535fa1d8f62f145966c1e7f1151b234c10686ed59f6a84c9e8b1db0", +"TT_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "40f0f8531b056495156f1cc7f7d8e77232ab2d9507b40abf2f15018b2ff9bfb7", +"TT_en_test_shamir_persistence.py::test_abort": "69197749bc5d91c3721e145696420129630bec36f7f27c6f7f789eb3ef173b2b", +"TT_en_test_shamir_persistence.py::test_recovery_multiple_resets": "3059811fea05eaaebf5f7ef6475b6bda9a166b3d519cb803e6172992a14fa7d8", +"TT_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "219b0822432c9dbc51a6106b901b950aa97c6ac0b7dde8de4b8e951d891c2148", +"TT_en_test_shamir_persistence.py::test_recovery_single_reset": "dcee1170a05d710d297f835b6bc15085b33113bc11e04397254f2e7ae5e284f1", +"TT_en_test_wipe_code.py::test_wipe_code_activate_core": "1817eaf41ab1299d8c8deb39c0c7d1d4eb3ea74cc599fc5b6f40494f74c567fc" } } } diff --git a/tests/ui_tests/reporting/common.py b/tests/ui_tests/reporting/common.py index 195db90b4..50e0e0bfe 100644 --- a/tests/ui_tests/reporting/common.py +++ b/tests/ui_tests/reporting/common.py @@ -220,7 +220,7 @@ def _get_unique_differing_screens( current_screens_path = get_screen_path(test_name) if not current_screens_path: current_screens_path = MASTER_CACHE_DIR / "empty_current_screens" - current_screens_path.mkdir() + current_screens_path.mkdir(exist_ok=True) # Saving all the images to a common directory # They will be referenced from the HTML files diff --git a/tests/upgrade_tests/test_firmware_upgrades.py b/tests/upgrade_tests/test_firmware_upgrades.py index a4e896797..7c138f2be 100644 --- a/tests/upgrade_tests/test_firmware_upgrades.py +++ b/tests/upgrade_tests/test_firmware_upgrades.py @@ -41,7 +41,6 @@ MNEMONIC = " ".join(["all"] * 12) PATH = [H_(44), H_(0), H_(0), 0, 0] ADDRESS = "1JAd7XCBzGudGpJQSDSfpmJhiygtLQWaGL" LABEL = "test" -LANGUAGE = "en-US" STRENGTH = 128 @@ -61,7 +60,6 @@ def test_upgrade_load(gen: str, tag: str) -> None: pin="", passphrase_protection=False, label=LABEL, - language=LANGUAGE, ) device_id = emu.client.features.device_id asserts(emu.client) @@ -70,7 +68,6 @@ def test_upgrade_load(gen: str, tag: str) -> None: with EmulatorWrapper(gen, storage=storage) as emu: assert device_id == emu.client.features.device_id asserts(emu.client) - assert emu.client.features.language == LANGUAGE @for_all("legacy") @@ -92,7 +89,6 @@ def test_upgrade_load_pin(gen: str, tag: str) -> None: pin=PIN, passphrase_protection=False, label=LABEL, - language=LANGUAGE, ) device_id = emu.client.features.device_id asserts(emu.client) @@ -101,7 +97,6 @@ def test_upgrade_load_pin(gen: str, tag: str) -> None: with EmulatorWrapper(gen, storage=storage) as emu: assert device_id == emu.client.features.device_id asserts(emu.client) - assert emu.client.features.language == LANGUAGE # Test progressive upgrade of storage versions without unlocking in between. @@ -134,7 +129,6 @@ def test_storage_upgrade_progressive(gen: str, tags: List[str]): pin=PIN, passphrase_protection=False, label=LABEL, - language=LANGUAGE, ) device_id = emu.client.features.device_id asserts(emu.client) @@ -147,7 +141,6 @@ def test_storage_upgrade_progressive(gen: str, tags: List[str]): with EmulatorWrapper(gen, storage=storage) as emu: assert device_id == emu.client.features.device_id asserts(emu.client) - assert emu.client.features.language == LANGUAGE @for_all("legacy", legacy_minimum_version=(1, 9, 0)) @@ -170,7 +163,6 @@ def test_upgrade_wipe_code(gen: str, tag: str): pin=PIN, passphrase_protection=False, label=LABEL, - language=LANGUAGE, ) # Set wipe code. @@ -184,7 +176,6 @@ def test_upgrade_wipe_code(gen: str, tag: str): with EmulatorWrapper(gen, storage=storage) as emu: assert device_id == emu.client.features.device_id asserts(emu.client) - assert emu.client.features.language == LANGUAGE # Check that wipe code is set by changing the PIN to it. emu.client.use_pin_sequence([PIN, WIPE_CODE, WIPE_CODE]) @@ -214,7 +205,6 @@ def test_upgrade_reset(gen: str, tag: str): passphrase_protection=False, pin_protection=False, label=LABEL, - language=LANGUAGE, ) device_id = emu.client.features.device_id asserts(emu.client) @@ -224,7 +214,6 @@ def test_upgrade_reset(gen: str, tag: str): with EmulatorWrapper(gen, storage=storage) as emu: assert device_id == emu.client.features.device_id asserts(emu.client) - assert emu.client.features.language == LANGUAGE assert btc.get_address(emu.client, "Bitcoin", PATH) == address @@ -247,7 +236,6 @@ def test_upgrade_reset_skip_backup(gen: str, tag: str): passphrase_protection=False, pin_protection=False, label=LABEL, - language=LANGUAGE, skip_backup=True, ) device_id = emu.client.features.device_id @@ -258,7 +246,6 @@ def test_upgrade_reset_skip_backup(gen: str, tag: str): with EmulatorWrapper(gen, storage=storage) as emu: assert device_id == emu.client.features.device_id asserts(emu.client) - assert emu.client.features.language == LANGUAGE assert btc.get_address(emu.client, "Bitcoin", PATH) == address @@ -281,7 +268,6 @@ def test_upgrade_reset_no_backup(gen: str, tag: str): passphrase_protection=False, pin_protection=False, label=LABEL, - language=LANGUAGE, no_backup=True, ) device_id = emu.client.features.device_id @@ -292,7 +278,6 @@ def test_upgrade_reset_no_backup(gen: str, tag: str): with EmulatorWrapper(gen, storage=storage) as emu: assert device_id == emu.client.features.device_id asserts(emu.client) - assert emu.client.features.language == LANGUAGE assert btc.get_address(emu.client, "Bitcoin", PATH) == address diff --git a/tools/check-bitcoin-only b/tools/check-bitcoin-only index 4651bec8a..f4e15af2a 100755 --- a/tools/check-bitcoin-only +++ b/tools/check-bitcoin-only @@ -7,6 +7,8 @@ EXCEPTIONS+=( "omni" ) # OMNI is part of the bitcoin app # BIP39 or SLIP39 words that have "dash" in them EXCEPTIONS+=( "dash" ) EXCEPTIONS+=( "confirm_ethereum_tx" ) # is model-specific, so is in layout/__init__.py instead of ethereum/layout.py +EXCEPTIONS+=( "__" ) # ignoring the translations blob (section__key delimiter) +EXCEPTIONS+=( "{}" ) # ignoring the translations blob (template identifier) GREP_ARGS=() for exception in "${EXCEPTIONS[@]}"; do diff --git a/vendor/fido2-tests b/vendor/fido2-tests index 28e177c44..9cfd22ef2 160000 --- a/vendor/fido2-tests +++ b/vendor/fido2-tests @@ -1 +1 @@ -Subproject commit 28e177c4424820aee8a6f031474c890e5bafe72c +Subproject commit 9cfd22ef20fec2c34d0f0e5c16a5d5152da30861