From 8a1c15fd948d66477a0564088ed5d3d12917ce74 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 14 Nov 2024 15:11:03 +0100 Subject: [PATCH] feat(tests): simplify asserts on translated strings --- tests/click_tests/common.py | 31 +- tests/click_tests/recovery.py | 88 ++- tests/click_tests/reset.py | 23 +- tests/click_tests/test_autolock.py | 23 +- .../click_tests/test_backup_slip39_custom.py | 11 +- tests/click_tests/test_passphrase_tr.py | 20 +- tests/click_tests/test_pin.py | 22 +- tests/click_tests/test_reset_bip39.py | 6 +- tests/click_tests/test_tutorial_mercury.py | 85 ++- tests/click_tests/test_tutorial_tr.py | 2 +- tests/conftest.py | 3 +- .../test_reset_recovery_bip39.py | 3 + .../test_reset_recovery_slip39_advanced.py | 4 + .../test_reset_recovery_slip39_basic.py | 3 + tests/device_tests/test_repeated_backup.py | 8 +- tests/device_tests/test_sdcard.py | 16 +- .../test_session_id_and_passphrase.py | 16 +- tests/input_flows.py | 56 +- tests/input_flows_helpers.py | 204 +++---- tests/translations.py | 141 ++--- tests/ui_tests/fixtures.json | 570 +++++++++--------- 21 files changed, 619 insertions(+), 716 deletions(-) diff --git a/tests/click_tests/common.py b/tests/click_tests/common.py index cd1c1edf65..aaeeb97c66 100644 --- a/tests/click_tests/common.py +++ b/tests/click_tests/common.py @@ -1,16 +1,18 @@ from __future__ import annotations +import typing as t from enum import Enum -from typing import TYPE_CHECKING from trezorlib.debuglink import LayoutType from .. import buttons from .. import translations as TR -if TYPE_CHECKING: +if t.TYPE_CHECKING: from trezorlib.debuglink import DebugLink, LayoutContent + AllActionsType = t.List[t.Union[str, t.Tuple[str, ...]]] + # Passphrases and addresses for both models class CommonPass: @@ -82,7 +84,7 @@ def go_back(debug: "DebugLink", r_middle: bool = False) -> LayoutContent: def navigate_to_action_and_press( debug: "DebugLink", wanted_action: str, - all_actions: list[str], + all_actions: AllActionsType, is_carousel: bool = True, hold_ms: int = 0, ) -> None: @@ -129,16 +131,19 @@ def unlock_gesture(debug: "DebugLink") -> LayoutContent: raise RuntimeError("Unknown model") -def _get_action_index(wanted_action: str, all_actions: list[str]) -> int: +def _get_action_index(wanted_action: str, all_actions: AllActionsType) -> int: """Get index of the action in the list of all actions""" if wanted_action in all_actions: return all_actions.index(wanted_action) - else: - # It may happen that one action item can mean multiple actions - # (e.g. "CANCEL|DELETE" in the passphrase layout - both actions are on the same button) - for index, action in enumerate(all_actions): - subactions = action.split("|") - if wanted_action in subactions: + for index, action in enumerate(all_actions): + if not isinstance(action, tuple): + action = (action,) + for subaction in action: + try: + tr = TR.translate(subaction) + except KeyError: + continue + if tr == wanted_action: return index raise ValueError(f"Action {wanted_action} is not supported in {all_actions}") @@ -148,7 +153,7 @@ def _move_one_closer( debug: "DebugLink", wanted_action: str, current_action: str, - all_actions: list[str], + all_actions: AllActionsType, is_carousel: bool, ) -> LayoutContent: """Pressing either left or right regarding to the current situation""" @@ -169,7 +174,3 @@ def _move_one_closer( return debug.press_left() else: return debug.press_right() - - -def get_possible_btn_texts(path: str) -> str: - return "|".join(TR.translate(path)) diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index 89a6b6bc8b..602efef1a6 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -4,15 +4,13 @@ from trezorlib.debuglink import LayoutType from .. import buttons from .. import translations as TR -from .common import get_possible_btn_texts, go_next +from .common import go_next if TYPE_CHECKING: from trezorlib.debuglink import DebugLink, LayoutContent -DELETE_BTN_TEXTS = get_possible_btn_texts("inputs__delete") + get_possible_btn_texts( - "inputs__previous" -) +DELETE_BTN_TEXTS = ("inputs__delete", "inputs__previous") def enter_word( @@ -50,7 +48,7 @@ def enter_word( def confirm_recovery(debug: "DebugLink", title: str = "recovery__title") -> None: layout = debug.read_layout() - TR.assert_equals(layout.title(), title) + assert TR.translate(title) == layout.title() if debug.layout_type is LayoutType.TT: debug.click(buttons.OK) elif debug.layout_type is LayoutType.Mercury: @@ -108,11 +106,11 @@ def select_number_of_words( return debug.click(coords) if debug.layout_type is LayoutType.TT: - TR.assert_equals(debug.read_layout().text_content(), "recovery__num_of_words") + assert debug.read_layout().text_content() == TR.recovery__num_of_words layout = select_tt() elif debug.layout_type is LayoutType.TR: layout = debug.press_right() - TR.assert_equals(layout.title(), "word_count__title") + assert layout.title() == TR.word_count__title layout = select_tr() elif debug.layout_type is LayoutType.Mercury: layout = select_mercury() @@ -121,30 +119,24 @@ def select_number_of_words( if unlock_repeated_backup: if debug.layout_type is LayoutType.TR: - TR.assert_in(layout.text_content(), "recovery__enter_backup") + assert TR.recovery__enter_backup in layout.text_content() else: - TR.assert_in_multiple( - layout.text_content(), - ["recovery__only_first_n_letters", "recovery__enter_each_word"], + assert ( + TR.recovery__only_first_n_letters in layout.text_content() + or TR.recovery__enter_each_word in layout.text_content() ) elif num_of_words in (20, 33): - TR.assert_in_multiple( - layout.text_content(), - [ - "recovery__enter_backup", - "recovery__enter_any_share", - "recovery__only_first_n_letters", - "recovery__enter_each_word", - ], + assert ( + TR.recovery__enter_backup in layout.text_content() + or TR.recovery__enter_any_share in layout.text_content() + or TR.recovery__only_first_n_letters in layout.text_content() + or TR.recovery__enter_each_word in layout.text_content() ) else: # BIP-39 - TR.assert_in_multiple( - layout.text_content(), - [ - "recovery__enter_backup", - "recovery__only_first_n_letters", - "recovery__enter_each_word", - ], + assert ( + TR.recovery__enter_backup in layout.text_content() + or TR.recovery__only_first_n_letters in layout.text_content() + or TR.recovery__enter_each_word in layout.text_content() ) @@ -155,14 +147,14 @@ def enter_share( before_title: str = "recovery__title_recover", ) -> "LayoutContent": if debug.layout_type is LayoutType.TR: - TR.assert_in(debug.read_layout().title(), before_title) + assert TR.translate(before_title) in debug.read_layout().title() layout = debug.read_layout() for _ in range(layout.page_count()): layout = debug.press_right() elif debug.layout_type is LayoutType.Mercury: layout = debug.swipe_up() else: - TR.assert_in(debug.read_layout().title(), before_title) + assert TR.translate(before_title) in debug.read_layout().title() layout = debug.click(buttons.OK) assert "MnemonicKeyboard" in layout.all_components() @@ -180,15 +172,12 @@ def enter_shares( text: str = "recovery__enter_any_share", after_layout_text: str = "recovery__wallet_recovered", ) -> None: - TR.assert_in_multiple( - debug.read_layout().text_content(), - [ - "recovery__enter_backup", - "recovery__enter_any_share", - "recovery__only_first_n_letters", - "recovery__enter_each_word", - text, - ], + assert ( + TR.recovery__enter_backup in debug.read_layout().text_content() + or TR.recovery__enter_any_share in debug.read_layout().text_content() + or TR.recovery__only_first_n_letters in debug.read_layout().text_content() + or TR.recovery__enter_each_word in debug.read_layout().text_content() + or TR.translate(text) in debug.read_layout().text_content() ) for index, share in enumerate(shares): enter_share( @@ -196,14 +185,14 @@ def enter_shares( ) if index < len(shares) - 1: # FIXME: when ui-t3t1 done for shamir, we want to check the template below - TR.assert_in(debug.read_layout().title(), enter_share_before_title) + assert TR.translate(enter_share_before_title) in debug.read_layout().title() # TR.assert_in( # debug.read_layout().text_content(), # "recovery__x_of_y_entered_template", # template=(index + 1, len(shares)), # ) - TR.assert_in(debug.read_layout().text_content(), after_layout_text) + assert TR.translate(after_layout_text) in debug.read_layout().text_content() def enter_seed( @@ -218,7 +207,7 @@ def enter_seed( for word in seed_words: enter_word(debug, word, is_slip39=is_slip39) - TR.assert_in(debug.read_layout().text_content(), after_layout_text) + assert TR.translate(after_layout_text) in debug.read_layout().text_content() def enter_seed_previous_correct( @@ -226,6 +215,8 @@ def enter_seed_previous_correct( ) -> None: prepare_enter_seed(debug) + DELETE_BTNS = [TR.translate(btn) for btn in DELETE_BTN_TEXTS] + i = 0 go_back = False bad_word = "" @@ -244,12 +235,12 @@ def enter_seed_previous_correct( elif debug.layout_type is LayoutType.TR: layout = debug.read_layout() - while layout.get_middle_choice() not in DELETE_BTN_TEXTS: + while layout.get_middle_choice() not in DELETE_BTNS: layout = debug.press_right() layout = debug.press_middle() for _ in range(len(bad_word)): - while layout.get_middle_choice() not in DELETE_BTN_TEXTS: + while layout.get_middle_choice() not in DELETE_BTNS: layout = debug.press_left() layout = debug.press_middle() elif debug.layout_type is LayoutType.Mercury: @@ -273,14 +264,11 @@ def enter_seed_previous_correct( def prepare_enter_seed( debug: "DebugLink", layout_text: str = "recovery__enter_backup" ) -> None: - TR.assert_in_multiple( - debug.read_layout().text_content(), - [ - "recovery__enter_backup", - "recovery__only_first_n_letters", - "recovery__enter_each_word", - layout_text, - ], + assert ( + TR.recovery__enter_backup in debug.read_layout().text_content() + or TR.recovery__only_first_n_letters in debug.read_layout().text_content() + or TR.recovery__enter_each_word in debug.read_layout().text_content() + or TR.translate(layout_text) in debug.read_layout().text_content() ) if debug.layout_type is LayoutType.TT: debug.click(buttons.OK) diff --git a/tests/click_tests/reset.py b/tests/click_tests/reset.py index b5c601ba34..4da0618375 100644 --- a/tests/click_tests/reset.py +++ b/tests/click_tests/reset.py @@ -13,7 +13,7 @@ if TYPE_CHECKING: def confirm_new_wallet(debug: "DebugLink") -> None: - TR.assert_equals(debug.read_layout().title(), "reset__title_create_wallet") + assert debug.read_layout().title() == TR.reset__title_create_wallet if debug.layout_type is LayoutType.TT: debug.click(buttons.OK) elif debug.layout_type is LayoutType.Mercury: @@ -22,9 +22,9 @@ def confirm_new_wallet(debug: "DebugLink") -> None: elif debug.layout_type is LayoutType.TR: debug.press_right() debug.press_right() - TR.assert_in_multiple( - debug.read_layout().text_content(), - ["backup__new_wallet_successfully_created", "backup__new_wallet_created"], + assert ( + TR.backup__new_wallet_successfully_created in debug.read_layout().text_content() + or TR.backup__new_wallet_created in debug.read_layout().text_content() ) if debug.layout_type is LayoutType.Mercury: debug.swipe_up() @@ -74,9 +74,10 @@ def set_selection(debug: "DebugLink", button: tuple[int, int], diff: int) -> Non debug.swipe_up() elif debug.layout_type is LayoutType.TR: layout = debug.read_layout() - if layout.title() in TR.translate( - "reset__title_number_of_shares" - ) + TR.translate("words__title_threshold"): + if ( + layout.title() + in TR.reset__title_number_of_shares + TR.words__title_threshold + ): # Special info screens layout = debug.press_right() assert "NumberInput" in layout.all_components() @@ -131,7 +132,9 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: layout = debug.read_layout() if debug.layout_type is LayoutType.TT: - TR.assert_template(layout.text_content(), "reset__select_word_x_of_y_template") + assert TR.regexp("reset__select_word_x_of_y_template").match( + layout.text_content() + ) for _ in range(3): # "Select word 3 of 20" # ^ @@ -146,7 +149,7 @@ 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]) elif debug.layout_type is LayoutType.Mercury: - TR.assert_template(layout.subtitle(), "reset__select_word_x_of_y_template") + assert TR.regexp("reset__select_word_x_of_y_template").match(layout.subtitle()) for _ in range(3): # "Select word 3 of 20" # ^ @@ -161,7 +164,7 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: button_pos = btn_texts.index(wanted_word) layout = debug.click(buttons.VERTICAL_MENU[button_pos]) elif debug.layout_type is LayoutType.TR: - TR.assert_in(layout.text_content(), "reset__select_correct_word") + assert TR.reset__select_correct_word in layout.text_content() layout = debug.press_right() for _ in range(3): # "SELECT 2ND WORD" diff --git a/tests/click_tests/test_autolock.py b/tests/click_tests/test_autolock.py index 18e8209e84..542d752754 100644 --- a/tests/click_tests/test_autolock.py +++ b/tests/click_tests/test_autolock.py @@ -65,9 +65,8 @@ def set_autolock_delay(device_handler: "BackgroundDeviceHandler", delay_ms: int) debug.input("1234") - TR.assert_template( - debug.read_layout().text_content(), - "auto_lock__change_template", + assert TR.regexp("auto_lock__change_template").match( + debug.read_layout().text_content() ) layout = go_next(debug) @@ -108,17 +107,17 @@ def test_autolock_interrupts_signing(device_handler: "BackgroundDeviceHandler"): if debug.layout_type is LayoutType.TT: debug.click(buttons.OK) layout = debug.click(buttons.OK) - TR.assert_in(layout.text_content(), "send__total_amount") + assert TR.send__total_amount in layout.text_content() assert "0.0039 BTC" in layout.text_content() elif debug.layout_type is LayoutType.Mercury: debug.swipe_up() layout = debug.swipe_up() - TR.assert_in(layout.text_content(), "send__total_amount") + assert TR.send__total_amount in layout.text_content() assert "0.0039 BTC" in layout.text_content() elif debug.layout_type is LayoutType.TR: debug.press_right() layout = debug.press_right() - TR.assert_in(layout.text_content(), "send__total_amount") + assert TR.send__total_amount in layout.text_content() assert "0.0039 BTC" in layout.text_content() # wait for autolock to kick in @@ -160,18 +159,18 @@ def test_autolock_does_not_interrupt_signing(device_handler: "BackgroundDeviceHa if debug.layout_type is LayoutType.TT: debug.click(buttons.OK) layout = debug.click(buttons.OK) - TR.assert_in(layout.text_content(), "send__total_amount") + assert TR.send__total_amount in layout.text_content() assert "0.0039 BTC" in layout.text_content() elif debug.layout_type is LayoutType.Mercury: debug.swipe_up() layout = debug.swipe_up() - TR.assert_in(layout.text_content(), "send__total_amount") + assert TR.send__total_amount in layout.text_content() assert "0.0039 BTC" in layout.text_content() debug.swipe_up() elif debug.layout_type is LayoutType.TR: debug.press_right() layout = debug.press_right() - TR.assert_in(layout.text_content(), "send__total_amount") + assert TR.send__total_amount in layout.text_content() assert "0.0039 BTC" in layout.text_content() def sleepy_filter(msg: MessageType) -> MessageType: @@ -274,7 +273,7 @@ def test_autolock_interrupts_passphrase(device_handler: "BackgroundDeviceHandler def unlock_dry_run(debug: "DebugLink") -> "LayoutContent": - TR.assert_in(debug.read_layout().text_content(), "recovery__check_dry_run") + assert TR.recovery__check_dry_run in debug.read_layout().text_content() layout = go_next(debug) assert "PinKeyboard" in layout.all_components() @@ -291,7 +290,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) - TR.assert_in(debug.read_layout().text_content(), "recovery__num_of_words") + assert TR.recovery__num_of_words in debug.read_layout().text_content() if debug.layout_type is LayoutType.TR: debug.press_right() @@ -312,7 +311,7 @@ def test_dryrun_locks_at_number_of_words(device_handler: "BackgroundDeviceHandle assert layout is not None # we are back at homescreen - TR.assert_in(debug.read_layout().text_content(), "recovery__num_of_words") + assert TR.recovery__num_of_words in debug.read_layout().text_content() @pytest.mark.setup_client(pin=PIN4) diff --git a/tests/click_tests/test_backup_slip39_custom.py b/tests/click_tests/test_backup_slip39_custom.py index b31cf32cfb..be01683d07 100644 --- a/tests/click_tests/test_backup_slip39_custom.py +++ b/tests/click_tests/test_backup_slip39_custom.py @@ -76,18 +76,17 @@ def test_backup_slip39_custom( # confirm backup configuration if share_count > 1: - TR.assert_template( - debug.read_layout().text_content(), - "reset__create_x_of_y_multi_share_backup_template", + assert TR.regexp("reset__create_x_of_y_multi_share_backup_template").match( + debug.read_layout().text_content() ) else: - TR.assert_template( - debug.read_layout().text_content(), "backup__info_single_share_backup" + assert TR.regexp("backup__info_single_share_backup").match( + debug.read_layout().text_content() ) reset.confirm_read(debug) # confirm backup intro - TR.assert_in(debug.read_layout().text_content(), "reset__never_make_digital_copy") + assert TR.reset__never_make_digital_copy in debug.read_layout().text_content() reset.confirm_read(debug, middle_r=True) all_words: list[str] = [] diff --git a/tests/click_tests/test_passphrase_tr.py b/tests/click_tests/test_passphrase_tr.py index d76bb063e5..57685451ba 100644 --- a/tests/click_tests/test_passphrase_tr.py +++ b/tests/click_tests/test_passphrase_tr.py @@ -21,7 +21,6 @@ import pytest from trezorlib import exceptions -from .. import translations as TR from ..common import get_test_address from .common import ( CommonPass, @@ -56,20 +55,11 @@ 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() +BACK = "inputs__back" +SHOW = "inputs__show" +ENTER = "inputs__enter" +SPACE = "inputs__space" +CANCEL_OR_DELETE = ("inputs__cancel", "inputs__delete") # fmt: off MENU_ACTIONS = [SHOW, CANCEL_OR_DELETE, ENTER, "abc", "ABC", "123", "#$!", SPACE] DIGITS_ACTIONS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", BACK] diff --git a/tests/click_tests/test_pin.py b/tests/click_tests/test_pin.py index 415e6d74b2..48f54c5573 100644 --- a/tests/click_tests/test_pin.py +++ b/tests/click_tests/test_pin.py @@ -26,12 +26,7 @@ from trezorlib.debuglink import LayoutType from .. import buttons from .. import translations as TR -from .common import ( - get_possible_btn_texts, - go_back, - go_next, - navigate_to_action_and_press, -) +from .common import go_back, go_next, navigate_to_action_and_press if TYPE_CHECKING: from trezorlib.debuglink import DebugLink @@ -52,9 +47,9 @@ PIN24 = "875163065288639289952973" PIN50 = "31415926535897932384626433832795028841971693993751" PIN60 = PIN50 + "9" * 10 -DELETE = get_possible_btn_texts("inputs__delete") -SHOW = get_possible_btn_texts("inputs__show") -ENTER = get_possible_btn_texts("inputs__enter") +DELETE = "inputs__delete" +SHOW = "inputs__show" +ENTER = "inputs__enter" TR_PIN_ACTIONS = [ @@ -107,8 +102,9 @@ def prepare( elif situation == Situation.PIN_SETUP: # Set new PIN device_handler.run(device.change_pin) # type: ignore - TR.assert_in_multiple( - debug.read_layout().text_content(), ["pin__turn_on", "pin__info"] + assert ( + TR.pin__turn_on in debug.read_layout().text_content() + or TR.pin__info in debug.read_layout().text_content() ) if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): go_next(debug) @@ -121,7 +117,7 @@ def prepare( # Change PIN device_handler.run(device.change_pin) # type: ignore _input_see_confirm(debug, old_pin) - TR.assert_in(debug.read_layout().text_content(), "pin__change") + assert TR.pin__change in debug.read_layout().text_content() go_next(debug) _input_see_confirm(debug, old_pin) elif situation == Situation.WIPE_CODE_SETUP: @@ -129,7 +125,7 @@ def prepare( device_handler.run(device.change_wipe_code) # type: ignore if old_pin: _input_see_confirm(debug, old_pin) - TR.assert_in(debug.read_layout().text_content(), "wipe_code__turn_on") + assert TR.wipe_code__turn_on in debug.read_layout().text_content() go_next(debug) if debug.layout_type is LayoutType.TR: go_next(debug) diff --git a/tests/click_tests/test_reset_bip39.py b/tests/click_tests/test_reset_bip39.py index 0fffd5042f..907246fb51 100644 --- a/tests/click_tests/test_reset_bip39.py +++ b/tests/click_tests/test_reset_bip39.py @@ -59,13 +59,13 @@ def test_reset_bip39(device_handler: "BackgroundDeviceHandler"): # confirm backup intro # parametrized string - TR.assert_template( - debug.read_layout().text_content(), "backup__info_single_share_backup" + assert TR.regexp("backup__info_single_share_backup").match( + debug.read_layout().text_content() ) reset.confirm_read(debug) # confirm backup warning - TR.assert_in(debug.read_layout().text_content(), "reset__never_make_digital_copy") + assert TR.reset__never_make_digital_copy in debug.read_layout().text_content() reset.confirm_read(debug, middle_r=True) # read words diff --git a/tests/click_tests/test_tutorial_mercury.py b/tests/click_tests/test_tutorial_mercury.py index b7a56a596b..987b32b48c 100644 --- a/tests/click_tests/test_tutorial_mercury.py +++ b/tests/click_tests/test_tutorial_mercury.py @@ -39,17 +39,17 @@ def test_tutorial_ignore_menu(device_handler: "BackgroundDeviceHandler"): device_handler.run(device.show_device_tutorial) layout = debug.read_layout() - TR.assert_equals(layout.title(), "tutorial__welcome_safe5") + assert layout.title() == TR.tutorial__welcome_safe5 layout = debug.click(buttons.TAP_TO_CONFIRM) - TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + assert layout.title() == TR.tutorial__title_lets_begin layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + assert layout.title() == TR.tutorial__title_easy_navigation layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + assert layout.title() == TR.tutorial__title_handy_menu layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_hold") + assert layout.title() == TR.tutorial__title_hold layout = debug.click(buttons.TAP_TO_CONFIRM, hold_ms=1000) - TR.assert_equals(layout.title(), "tutorial__title_well_done") + assert layout.title() == TR.tutorial__title_well_done debug.swipe_up() device_handler.result() @@ -60,23 +60,23 @@ def test_tutorial_menu_open_close(device_handler: "BackgroundDeviceHandler"): device_handler.run(device.show_device_tutorial) layout = debug.read_layout() - TR.assert_equals(layout.title(), "tutorial__welcome_safe5") + assert layout.title() == TR.tutorial__welcome_safe5 layout = debug.click(buttons.TAP_TO_CONFIRM) - TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + assert layout.title() == TR.tutorial__title_lets_begin layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + assert layout.title() == TR.tutorial__title_easy_navigation layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + assert layout.title() == TR.tutorial__title_handy_menu layout = debug.click(buttons.CORNER_BUTTON) - TR.assert_in(layout.text_content(), "tutorial__did_you_know") + assert TR.tutorial__did_you_know in layout.text_content() layout = debug.click(buttons.CORNER_BUTTON) - TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + assert layout.title() == TR.tutorial__title_handy_menu layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_hold") + assert layout.title() == TR.tutorial__title_hold layout = debug.click(buttons.TAP_TO_CONFIRM, hold_ms=1000) - TR.assert_equals(layout.title(), "tutorial__title_well_done") + assert layout.title() == TR.tutorial__title_well_done debug.swipe_up() device_handler.result() @@ -87,20 +87,20 @@ def test_tutorial_menu_exit(device_handler: "BackgroundDeviceHandler"): device_handler.run(device.show_device_tutorial) layout = debug.read_layout() - TR.assert_equals(layout.title(), "tutorial__welcome_safe5") + assert layout.title() == TR.tutorial__welcome_safe5 layout = debug.click(buttons.TAP_TO_CONFIRM) - TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + assert layout.title() == TR.tutorial__title_lets_begin layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + assert layout.title() == TR.tutorial__title_easy_navigation layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + assert layout.title() == TR.tutorial__title_handy_menu layout = debug.click(buttons.CORNER_BUTTON) - TR.assert_in(layout.text_content(), "tutorial__did_you_know") + assert TR.tutorial__did_you_know in layout.text_content() layout = debug.click(buttons.VERTICAL_MENU[2]) - TR.assert_in(layout.footer(), "instructions__hold_to_exit_tutorial") + assert TR.instructions__hold_to_exit_tutorial in layout.footer() layout = debug.click(buttons.TAP_TO_CONFIRM, hold_ms=1000) - TR.assert_equals(layout.title(), "tutorial__title_well_done") + assert layout.title() == TR.tutorial__title_well_done debug.swipe_up() device_handler.result() @@ -111,27 +111,27 @@ def test_tutorial_menu_repeat(device_handler: "BackgroundDeviceHandler"): device_handler.run(device.show_device_tutorial) layout = debug.read_layout() - TR.assert_equals(layout.title(), "tutorial__welcome_safe5") + assert layout.title() == TR.tutorial__welcome_safe5 layout = debug.click(buttons.TAP_TO_CONFIRM) - TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + assert layout.title() == TR.tutorial__title_lets_begin layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + assert layout.title() == TR.tutorial__title_easy_navigation layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + assert layout.title() == TR.tutorial__title_handy_menu layout = debug.click(buttons.CORNER_BUTTON) - TR.assert_in(layout.text_content(), "tutorial__did_you_know") + assert TR.tutorial__did_you_know in layout.text_content() layout = debug.click(buttons.VERTICAL_MENU[1]) - TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + assert layout.title() == TR.tutorial__title_lets_begin layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + assert layout.title() == TR.tutorial__title_easy_navigation layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + assert layout.title() == TR.tutorial__title_handy_menu layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_hold") + assert layout.title() == TR.tutorial__title_hold layout = debug.click(buttons.TAP_TO_CONFIRM, hold_ms=1000) - TR.assert_equals(layout.title(), "tutorial__title_well_done") + assert layout.title() == TR.tutorial__title_well_done debug.swipe_up() device_handler.result() @@ -142,31 +142,28 @@ def test_tutorial_menu_funfact(device_handler: "BackgroundDeviceHandler"): device_handler.run(device.show_device_tutorial) layout = debug.read_layout() - TR.assert_equals(layout.title(), "tutorial__welcome_safe5") + assert layout.title() == TR.tutorial__welcome_safe5 layout = debug.click(buttons.TAP_TO_CONFIRM) - TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + assert layout.title() == TR.tutorial__title_lets_begin layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + assert layout.title() == TR.tutorial__title_easy_navigation layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + assert layout.title() == TR.tutorial__title_handy_menu layout = debug.click(buttons.CORNER_BUTTON) - TR.assert_in(layout.text_content(), "tutorial__did_you_know") + assert TR.tutorial__did_you_know in layout.text_content() layout = debug.click(buttons.VERTICAL_MENU[0]) - text_content = [ - s.replace("\n", " ") for s in TR.translate("tutorial__first_wallet") - ] - assert layout.text_content() in text_content + assert layout.text_content() in TR.tutorial__first_wallet.replace("\n", " ") layout = debug.click(buttons.CORNER_BUTTON) - TR.assert_in(layout.text_content(), "tutorial__did_you_know") + assert TR.tutorial__did_you_know in layout.text_content() layout = debug.click(buttons.CORNER_BUTTON) - TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + assert layout.title() == TR.tutorial__title_handy_menu layout = debug.swipe_up() - TR.assert_equals(layout.title(), "tutorial__title_hold") + assert layout.title() == TR.tutorial__title_hold layout = debug.click(buttons.TAP_TO_CONFIRM, hold_ms=1000) - TR.assert_equals(layout.title(), "tutorial__title_well_done") + assert layout.title() == TR.tutorial__title_well_done debug.swipe_up() device_handler.result() diff --git a/tests/click_tests/test_tutorial_tr.py b/tests/click_tests/test_tutorial_tr.py index 8cf3d4f39d..81d2645ace 100644 --- a/tests/click_tests/test_tutorial_tr.py +++ b/tests/click_tests/test_tutorial_tr.py @@ -57,7 +57,7 @@ def go_through_tutorial_tr(debug: "DebugLink") -> None: debug.press_right() debug.press_right() layout = debug.press_middle() - TR.assert_equals(layout.title(), "tutorial__title_tutorial_complete") + assert layout.title() == TR.tutorial__title_tutorial_complete def test_tutorial_finish(device_handler: "BackgroundDeviceHandler"): diff --git a/tests/conftest.py b/tests/conftest.py index 00dacb5292..c78c9a766f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -309,8 +309,7 @@ def client( if _raw_client.model is not models.T1B1: lang = request.session.config.getoption("lang") or "en" assert isinstance(lang, str) - if lang != "en": - translations.set_language(_raw_client, lang) + translations.set_language(_raw_client, lang) setup_params = dict( uninitialized=False, 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 ea69e07970..89c327fb8f 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py @@ -23,6 +23,7 @@ from trezorlib.tools import parse_path from ...common import WITH_MOCK_URANDOM from ...input_flows import InputFlowBip39Recovery, InputFlowBip39ResetBackup +from ...translations import set_language @pytest.mark.models("core") @@ -31,7 +32,9 @@ def test_reset_recovery(client: Client): mnemonic = reset(client) address_before = btc.get_address(client, "Bitcoin", parse_path("m/44h/0h/0h/0/0")) + lang = client.features.language or "en" device.wipe(client) + set_language(client, lang[:2]) recover(client, mnemonic) address_after = btc.get_address(client, "Bitcoin", parse_path("m/44h/0h/0h/0/0")) assert address_before == address_after 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 e37b4f5099..8b42940d75 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 @@ -26,6 +26,7 @@ from ...input_flows import ( InputFlowSlip39AdvancedRecovery, InputFlowSlip39AdvancedResetRecovery, ) +from ...translations import set_language @pytest.mark.models("core") @@ -49,7 +50,10 @@ def test_reset_recovery(client: Client): + mnemonics[22:25], ] for combination in test_combinations: + lang = client.features.language or "en" device.wipe(client) + set_language(client, lang[:2]) + recover(client, combination) address_after = btc.get_address( client, "Bitcoin", parse_path("m/44h/0h/0h/0/0") 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 3980b1a149..6b72246a10 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 @@ -28,6 +28,7 @@ from ...input_flows import ( InputFlowSlip39BasicRecovery, InputFlowSlip39BasicResetRecovery, ) +from ...translations import set_language @pytest.mark.models("core") @@ -38,7 +39,9 @@ def test_reset_recovery(client: Client): address_before = btc.get_address(client, "Bitcoin", parse_path("m/44h/0h/0h/0/0")) for share_subset in itertools.combinations(mnemonics, 3): + lang = client.features.language or "en" device.wipe(client) + set_language(client, lang[:2]) selected_mnemonics = share_subset recover(client, selected_mnemonics) address_after = btc.get_address( diff --git a/tests/device_tests/test_repeated_backup.py b/tests/device_tests/test_repeated_backup.py index 36afeae905..3bf2d42510 100644 --- a/tests/device_tests/test_repeated_backup.py +++ b/tests/device_tests/test_repeated_backup.py @@ -162,7 +162,7 @@ def test_repeated_backup_cancel(client: Client): assert client.features.recovery_status == messages.RecoveryStatus.Backup layout = client.debug.read_layout() - TR.assert_in(layout.text_content(), "recovery__unlock_repeated_backup") + assert TR.recovery__unlock_repeated_backup in layout.text_content() # send a Cancel message @@ -218,7 +218,7 @@ def test_repeated_backup_send_disallowed_message(client: Client): assert client.features.recovery_status == messages.RecoveryStatus.Backup layout = client.debug.read_layout() - TR.assert_in(layout.text_content(), "recovery__unlock_repeated_backup") + assert TR.recovery__unlock_repeated_backup in layout.text_content() # send a GetAddress message @@ -237,6 +237,6 @@ def test_repeated_backup_send_disallowed_message(client: Client): assert client.features.recovery_status == messages.RecoveryStatus.Backup # we are still on the confirmation screen! - TR.assert_in( - client.debug.read_layout().text_content(), "recovery__unlock_repeated_backup" + assert ( + TR.recovery__unlock_repeated_backup in client.debug.read_layout().text_content() ) diff --git a/tests/device_tests/test_sdcard.py b/tests/device_tests/test_sdcard.py index e0c13af944..69098d81df 100644 --- a/tests/device_tests/test_sdcard.py +++ b/tests/device_tests/test_sdcard.py @@ -59,7 +59,7 @@ def test_sd_protect_unlock(client: Client): client.debug.input("1234") yield # do you really want to enable SD protection - TR.assert_in(layout().text_content(), "sd_card__enable") + assert TR.sd_card__enable in layout().text_content() client.debug.press_yes() yield # enter current PIN @@ -67,7 +67,7 @@ def test_sd_protect_unlock(client: Client): client.debug.input("1234") yield # you have successfully enabled SD protection - TR.assert_in(layout().text_content(), "sd_card__enabled") + assert TR.sd_card__enabled in layout().text_content() client.debug.press_yes() with client: @@ -77,7 +77,7 @@ def test_sd_protect_unlock(client: Client): def input_flow_change_pin(): yield # do you really want to change PIN? - TR.assert_equals(layout().title(), "pin__title_settings") + assert layout().title() == TR.pin__title_settings client.debug.press_yes() yield # enter current PIN @@ -93,7 +93,7 @@ def test_sd_protect_unlock(client: Client): client.debug.input("1234") yield # Pin change successful - TR.assert_in(layout().text_content(), "pin__changed") + assert TR.pin__changed in layout().text_content() client.debug.press_yes() with client: @@ -105,7 +105,7 @@ def test_sd_protect_unlock(client: Client): def input_flow_change_pin_format(): yield # do you really want to change PIN? - TR.assert_equals(layout().title(), "pin__title_settings") + assert layout().title() == TR.pin__title_settings client.debug.press_yes() yield # enter current PIN @@ -113,9 +113,9 @@ def test_sd_protect_unlock(client: Client): client.debug.input("1234") yield # SD card problem - TR.assert_in_multiple( - layout().text_content(), - ["sd_card__unplug_and_insert_correct", "sd_card__insert_correct_card"], + assert ( + TR.sd_card__unplug_and_insert_correct in layout().text_content() + or TR.sd_card__insert_correct_card in layout().text_content() ) client.debug.press_no() # close diff --git a/tests/device_tests/test_session_id_and_passphrase.py b/tests/device_tests/test_session_id_and_passphrase.py index 263fb9d76b..1bb9cbd70a 100644 --- a/tests/device_tests/test_session_id_and_passphrase.py +++ b/tests/device_tests/test_session_id_and_passphrase.py @@ -398,10 +398,7 @@ def test_hide_passphrase_from_host(client: Client): def input_flow(): yield content = client.debug.read_layout().text_content().lower() - assert any( - (s[:50].lower() in content) - for s in TR.translate("passphrase__from_host_not_shown") - ) + assert TR.passphrase__from_host_not_shown[:50].lower() in content if client.layout_type in (LayoutType.TT, LayoutType.Mercury): client.debug.press_yes() elif client.layout_type is LayoutType.TR: @@ -435,17 +432,14 @@ def test_hide_passphrase_from_host(client: Client): def input_flow(): yield - TR.assert_in( - client.debug.read_layout().text_content(), - "passphrase__next_screen_will_show_passphrase", + assert ( + TR.passphrase__next_screen_will_show_passphrase + in client.debug.read_layout().text_content() ) client.debug.press_yes() yield - TR.assert_equals( - client.debug.read_layout().title(), - "passphrase__title_confirm", - ) + assert client.debug.read_layout().title() == TR.passphrase__title_confirm assert passphrase in client.debug.read_layout().text_content() client.debug.press_yes() diff --git a/tests/input_flows.py b/tests/input_flows.py index 79dbc56673..b892a3f9c2 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -424,9 +424,9 @@ class InputFlowShowMultisigXPUBs(InputFlowBase): expected_title = f"MULTISIG XPUB #{xpub_num + 1}" assert expected_title in title if self.index == xpub_num: - TR.assert_in(title, "address__title_yours") + assert TR.address__title_yours in title else: - TR.assert_in(title, "address__title_cosigner") + assert TR.address__title_cosigner in title def input_flow_tt(self) -> BRGeneratorType: yield # multisig address warning @@ -434,7 +434,7 @@ class InputFlowShowMultisigXPUBs(InputFlowBase): yield # show address layout = self.debug.read_layout() - TR.assert_in(layout.title(), "address__title_receive_address") + assert TR.address__title_receive_address in layout.title() assert "(MULTISIG)" in layout.title() assert layout.text_content().replace(" ", "") == self.address @@ -444,7 +444,7 @@ class InputFlowShowMultisigXPUBs(InputFlowBase): layout = self.debug.swipe_left() # address details assert "Multisig 2 of 3" in layout.screen_content() - TR.assert_in(layout.screen_content(), "address_details__derivation_path") + assert TR.address_details__derivation_path in layout.screen_content() # Three xpub pages with the same testing logic for xpub_num in range(3): @@ -467,7 +467,7 @@ class InputFlowShowMultisigXPUBs(InputFlowBase): yield # show address layout = self.debug.read_layout() - TR.assert_in(layout.title(), "address__title_receive_address") + assert TR.address__title_receive_address in layout.title() assert "(MULTISIG)" in layout.title() assert layout.text_content().replace(" ", "") == self.address @@ -508,7 +508,7 @@ class InputFlowShowMultisigXPUBs(InputFlowBase): yield # show address layout = self.debug.read_layout() - TR.assert_in(layout.title(), "address__title_receive_address") + assert TR.address__title_receive_address in layout.title() assert layout.text_content().replace(" ", "") == self.address self.debug.click(buttons.CORNER_BUTTON) @@ -525,7 +525,7 @@ class InputFlowShowMultisigXPUBs(InputFlowBase): layout = self.debug.synchronize_at("AddressDetails") # address details assert "Multisig 2 of 3" in layout.screen_content() - TR.assert_in(layout.screen_content(), "address_details__derivation_path") + assert TR.address_details__derivation_path in layout.screen_content() # three xpub pages with the same testing logic for _xpub_num in range(3): @@ -625,7 +625,7 @@ class InputFlowShowXpubQRCode(InputFlowBase): br = yield layout = self.debug.read_layout() - assert layout.title() in TR.translate("address__public_key") + ["XPUB"] + assert layout.title() in (TR.address__public_key, "XPUB") self.debug.click(buttons.CORNER_BUTTON) assert "VerticalMenu" in self.all_components() @@ -640,7 +640,7 @@ class InputFlowShowXpubQRCode(InputFlowBase): self.debug.click(buttons.VERTICAL_MENU[1]) layout = self.debug.synchronize_at("AddressDetails") # address details - TR.assert_in(layout.screen_content(), "address_details__derivation_path") + assert TR.address_details__derivation_path in layout.screen_content() self.debug.click(buttons.CORNER_BUTTON) layout = self.debug.synchronize_at("VerticalMenu") @@ -855,9 +855,9 @@ class InputFlowSignTxInformation(InputFlowBase): super().__init__(client) def assert_content(self, content: str, title_path: str) -> None: - TR.assert_in(content, title_path) + assert TR.translate(title_path) in content assert "Legacy #6" in content - TR.assert_in(content, "confirm_total__fee_rate") + assert TR.confirm_total__fee_rate in content assert "71.56 sat" in content def input_flow_tt(self) -> BRGeneratorType: @@ -883,9 +883,9 @@ class InputFlowSignTxInformationMixed(InputFlowBase): super().__init__(client) 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 TR.translate(title_path) in content + assert TR.bitcoin__multiple_accounts in content + assert TR.confirm_total__fee_rate in content assert "18.33 sat" in content def input_flow_tt(self) -> BRGeneratorType: @@ -1045,7 +1045,7 @@ class InputFlowLockTimeBlockHeight(InputFlowBase): 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 TR.bitcoin__locktime_set_to_blockheight in layout_text assert self.block_height in layout_text def input_flow_tt(self) -> BRGeneratorType: @@ -1069,7 +1069,7 @@ class InputFlowLockTimeDatetime(InputFlowBase): 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 TR.bitcoin__locktime_set_to in layout_text assert self.lock_time_str.replace(" ", "") in layout_text.replace(" ", "") def input_flow_tt(self) -> BRGeneratorType: @@ -2203,26 +2203,26 @@ class InputFlowResetSkipBackup(InputFlowBase): def input_flow_tt(self) -> BRGeneratorType: yield from self.BAK.confirm_new_wallet() yield # Skip Backup - TR.assert_in(self.text_content(), "backup__new_wallet_successfully_created") + assert TR.backup__new_wallet_successfully_created in self.text_content() self.debug.press_no() yield # Confirm skip backup - TR.assert_in(self.text_content(), "backup__want_to_skip") + assert TR.backup__want_to_skip in self.text_content() self.debug.press_no() def input_flow_tr(self) -> BRGeneratorType: yield from self.BAK.confirm_new_wallet() yield # Skip Backup - TR.assert_in(self.text_content(), "backup__new_wallet_created") + assert TR.backup__new_wallet_created in self.text_content() self.debug.press_right() self.debug.press_no() yield # Confirm skip backup - TR.assert_in(self.text_content(), "backup__want_to_skip") + assert TR.backup__want_to_skip in self.text_content() self.debug.press_no() def input_flow_t3t1(self) -> BRGeneratorType: yield from self.BAK.confirm_new_wallet() yield # Skip Backup - TR.assert_in(self.text_content(), "backup__new_wallet_created") + assert TR.backup__new_wallet_created in self.text_content() self.debug.swipe_up() yield self.debug.click(buttons.CORNER_BUTTON) @@ -2262,14 +2262,12 @@ class InputFlowConfirmAllWarnings(InputFlowBase): text = layout.text_content().lower() # hi priority warning hi_prio = ( - TR.translate("ethereum__unknown_contract_address") - + TR.translate("addr_mismatch__wrong_derivation_path") - + TR.translate("send__receiving_to_multisig") - + [ - "witness path", - "certificate path", - "pool owner staking path", - ] + TR.ethereum__unknown_contract_address, + TR.addr_mismatch__wrong_derivation_path, + TR.send__receiving_to_multisig, + "witness path", + "certificate path", + "pool owner staking path", ) if any(needle.lower() in text for needle in hi_prio): self.debug.click(buttons.CORNER_BUTTON) diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 1ec7b1f570..77abfb374c 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -28,8 +28,9 @@ class PinFlow: self.debug.input(pin) if self.client.layout_type is LayoutType.TR: assert (yield).name == f"reenter_{what}" # Reenter PIN - TR.assert_in( - self.debug.read_layout().text_content(), f"{what}__reenter_to_confirm" + assert ( + TR.translate(f"{what}__reenter_to_confirm") + in self.debug.read_layout().text_content() ) self.debug.press_yes() assert (yield).name == "pin_device" # Enter PIN again @@ -47,7 +48,7 @@ class BackupFlow: def confirm_new_wallet(self) -> BRGeneratorType: yield - TR.assert_in(self.debug.read_layout().text_content(), "reset__by_continuing") + assert TR.reset__by_continuing in self.debug.read_layout().text_content() if self.client.layout_type is LayoutType.TR: self.debug.press_right() self.debug.press_yes() @@ -64,14 +65,14 @@ class RecoveryFlow: def confirm_recovery(self) -> BRGeneratorType: assert (yield).name == "recover_device" - TR.assert_in(self._text_content(), "reset__by_continuing") + assert TR.reset__by_continuing in self._text_content() if self.client.layout_type is LayoutType.TR: self.debug.press_right() self.debug.press_yes() def confirm_dry_run(self) -> BRGeneratorType: assert (yield).name == "confirm_seedcheck" - TR.assert_in(self._text_content(), "recovery__check_dry_run") + assert TR.recovery__check_dry_run in self._text_content() self.debug.press_yes() def setup_slip39_recovery(self, num_words: int) -> BRGeneratorType: @@ -94,18 +95,18 @@ class RecoveryFlow: def tr_recovery_homescreen(self) -> BRGeneratorType: yield - TR.assert_in(self._text_content(), "recovery__num_of_words") + assert TR.recovery__num_of_words in self._text_content() self.debug.press_yes() def enter_your_backup(self) -> BRGeneratorType: assert (yield).name == "recovery" if self.debug.layout_type is LayoutType.Mercury: - TR.assert_in(self._text_content(), "recovery__enter_each_word") + assert TR.recovery__enter_each_word in self._text_content() else: - TR.assert_in(self._text_content(), "recovery__enter_backup") - is_dry_run = any( - title in self.debug.read_layout().title().lower() - for title in TR.translate("recovery__title_dry_run", lower=True) + assert TR.recovery__enter_backup in self._text_content() + is_dry_run = ( + TR.recovery__title_dry_run.lower() + in self.debug.read_layout().title().lower() ) if self.client.layout_type is LayoutType.TR and not is_dry_run: # Normal recovery has extra info (not dry run) @@ -115,13 +116,13 @@ class RecoveryFlow: def enter_any_share(self) -> BRGeneratorType: assert (yield).name == "recovery" - TR.assert_in_multiple( - self._text_content(), - ["recovery__enter_any_share", "recovery__enter_each_word"], + assert ( + TR.recovery__enter_any_share in self._text_content() + or TR.recovery__enter_each_word in self._text_content() ) - is_dry_run = any( - title in self.debug.read_layout().title().lower() - for title in TR.translate("recovery__title_dry_run", lower=True) + is_dry_run = ( + TR.recovery__title_dry_run.lower() + in self.debug.read_layout().title().lower() ) if self.client.layout_type is LayoutType.TR and not is_dry_run: # Normal recovery has extra info (not dry run) @@ -132,17 +133,17 @@ class RecoveryFlow: def abort_recovery(self, confirm: bool) -> BRGeneratorType: yield if self.client.layout_type is LayoutType.TR: - TR.assert_in(self._text_content(), "recovery__num_of_words") + assert TR.recovery__num_of_words in self._text_content() self.debug.press_no() yield - TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") + assert TR.recovery__wanna_cancel_recovery in self._text_content() self.debug.press_right() if confirm: self.debug.press_yes() else: self.debug.press_no() elif self.client.layout_type is LayoutType.Mercury: - TR.assert_in(self._text_content(), "recovery__enter_each_word") + assert TR.recovery__enter_each_word in self._text_content() self.debug.click(buttons.CORNER_BUTTON) self.debug.synchronize_at("VerticalMenu") if confirm: @@ -150,10 +151,10 @@ class RecoveryFlow: else: self.debug.click(buttons.CORNER_BUTTON) else: - TR.assert_in(self._text_content(), "recovery__enter_any_share") + assert TR.recovery__enter_any_share in self._text_content() self.debug.press_no() yield - TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") + assert TR.recovery__wanna_cancel_recovery in self._text_content() if confirm: self.debug.press_yes() else: @@ -162,32 +163,32 @@ class RecoveryFlow: def abort_recovery_between_shares(self) -> BRGeneratorType: yield if self.client.layout_type is LayoutType.TR: - TR.assert_template( - self._text_content(), "recovery__x_of_y_entered_template" + assert TR.regexp("recovery__x_of_y_entered_template").search( + self._text_content() ) self.debug.press_no() assert (yield).name == "abort_recovery" - TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") + assert TR.recovery__wanna_cancel_recovery in self._text_content() self.debug.press_right() self.debug.press_yes() elif self.client.layout_type is LayoutType.Mercury: - TR.assert_template( - self._text_content(), "recovery__x_of_y_entered_template" + assert TR.regexp("recovery__x_of_y_entered_template").search( + self._text_content() ) self.debug.click(buttons.CORNER_BUTTON) self.debug.synchronize_at("VerticalMenu") self.debug.click(buttons.VERTICAL_MENU[0]) assert (yield).name == "abort_recovery" layout = self.debug.swipe_up() - TR.assert_equals(layout.title(), "recovery__title_cancel_recovery") + assert layout.title() == TR.recovery__title_cancel_recovery self.debug.click(buttons.TAP_TO_CONFIRM) else: - TR.assert_template( - self._text_content(), "recovery__x_of_y_entered_template" + assert TR.regexp("recovery__x_of_y_entered_template").search( + self._text_content() ) self.debug.press_no() assert (yield).name == "abort_recovery" - TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") + assert TR.recovery__wanna_cancel_recovery in self._text_content() self.debug.press_yes() def input_number_of_words(self, num_words: int) -> BRGeneratorType: @@ -195,52 +196,52 @@ class RecoveryFlow: assert br.code == B.MnemonicWordCount assert br.name == "recovery_word_count" if self.client.layout_type is LayoutType.TR: - TR.assert_in(self.debug.read_layout().title(), "word_count__title") + assert TR.word_count__title in self.debug.read_layout().title() else: - TR.assert_in(self._text_content(), "recovery__num_of_words") + assert TR.recovery__num_of_words in self._text_content() self.debug.input(str(num_words)) def warning_invalid_recovery_seed(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - TR.assert_in(self._text_content(), "recovery__invalid_wallet_backup_entered") + assert TR.recovery__invalid_wallet_backup_entered in self._text_content() self.debug.press_yes() def warning_invalid_recovery_share(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - TR.assert_in(self._text_content(), "recovery__invalid_share_entered") + assert TR.recovery__invalid_share_entered in self._text_content() self.debug.press_yes() def warning_group_threshold_reached(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - TR.assert_in(self._text_content(), "recovery__group_threshold_reached") + assert TR.recovery__group_threshold_reached in self._text_content() self.debug.press_yes() def warning_share_already_entered(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - TR.assert_in(self._text_content(), "recovery__share_already_entered") + assert TR.recovery__share_already_entered in self._text_content() self.debug.press_yes() def warning_share_from_another_shamir(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - TR.assert_in( - self._text_content(), "recovery__share_from_another_multi_share_backup" + assert ( + TR.recovery__share_from_another_multi_share_backup in self._text_content() ) self.debug.press_yes() def success_share_group_entered(self) -> BRGeneratorType: assert (yield).name == "share_success" - TR.assert_in(self._text_content(), "recovery__you_have_entered") + assert TR.recovery__you_have_entered in self._text_content() self.debug.press_yes() def success_wallet_recovered(self) -> BRGeneratorType: br = yield assert br.code == B.Success - TR.assert_in(self._text_content(), "recovery__wallet_recovered") + assert TR.recovery__wallet_recovered in self._text_content() self.debug.press_yes() def success_bip39_dry_run_valid(self) -> BRGeneratorType: @@ -249,7 +250,7 @@ class RecoveryFlow: text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): - TR.assert_in(text, "recovery__dry_run_bip39_valid_match") + assert TR.recovery__dry_run_bip39_valid_match in text self.debug.press_yes() def success_slip39_dryrun_valid(self) -> BRGeneratorType: @@ -258,7 +259,7 @@ class RecoveryFlow: text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): - TR.assert_in(text, "recovery__dry_run_slip39_valid_match") + assert TR.recovery__dry_run_slip39_valid_match in text self.debug.press_yes() def warning_slip39_dryrun_mismatch(self) -> BRGeneratorType: @@ -267,7 +268,7 @@ class RecoveryFlow: text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page on TT if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): - TR.assert_in(text, "recovery__dry_run_slip39_valid_mismatch") + assert TR.recovery__dry_run_slip39_valid_mismatch in text self.debug.press_yes() def warning_bip39_dryrun_mismatch(self) -> BRGeneratorType: @@ -276,7 +277,7 @@ class RecoveryFlow: text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): - TR.assert_in(text, "recovery__dry_run_bip39_valid_mismatch") + assert TR.recovery__dry_run_bip39_valid_mismatch in text self.debug.press_yes() def success_more_shares_needed( @@ -352,7 +353,7 @@ class EthereumFlow: def confirm_data(self, info: bool = False, cancel: bool = False) -> BRGeneratorType: assert (yield).name == "confirm_data" - TR.assert_equals(self.debug.read_layout().title(), "ethereum__title_input_data") + assert self.debug.read_layout().title() == TR.ethereum__title_input_data if info: self.debug.press_info() elif cancel: @@ -364,7 +365,7 @@ class EthereumFlow: br = yield assert br.name == "confirm_data" assert br.pages is not None - TR.assert_equals(self.debug.read_layout().title(), "ethereum__title_input_data") + assert self.debug.read_layout().title() == TR.ethereum__title_input_data for _ in range(br.pages): self.debug.read_layout() go_next(self.debug) @@ -380,7 +381,7 @@ class EthereumFlow: assert br.name == "confirm_data" assert br.pages is not None assert br.pages > 2 - TR.assert_equals(self.debug.read_layout().title(), "ethereum__title_input_data") + assert self.debug.read_layout().title() == TR.ethereum__title_input_data if self.client.layout_type is LayoutType.TR: self.debug.press_right() self.debug.press_right() @@ -398,15 +399,15 @@ class EthereumFlow: self, cancel: bool, info: bool, go_back_from_summary: bool ) -> BRGeneratorType: assert (yield).name == "confirm_ethereum_tx" - TR.assert_equals(self.debug.read_layout().title(), "words__address") + assert self.debug.read_layout().title() == TR.words__address if cancel: self.debug.press_no() return self.debug.press_yes() assert (yield).name == "confirm_ethereum_tx" - TR.assert_equals(self.debug.read_layout().title(), "words__title_summary") - TR.assert_in(self.debug.read_layout().text_content(), "send__maximum_fee") + assert self.debug.read_layout().title() == TR.words__title_summary + assert TR.send__maximum_fee in self.debug.read_layout().text_content() if go_back_from_summary: self.debug.press_no() assert (yield).name == "confirm_ethereum_tx" @@ -414,8 +415,8 @@ class EthereumFlow: assert (yield).name == "confirm_ethereum_tx" if info: self.debug.press_info() - TR.assert_in(self.debug.read_layout().text_content(), "ethereum__gas_limit") - TR.assert_in(self.debug.read_layout().text_content(), "ethereum__gas_price") + assert TR.ethereum__gas_limit in self.debug.read_layout().text_content() + assert TR.ethereum__gas_price in self.debug.read_layout().text_content() self.debug.press_no() self.debug.press_yes() assert (yield).name == "confirm_ethereum_tx" @@ -424,16 +425,16 @@ class EthereumFlow: self, cancel: bool, info: bool, go_back_from_summary: bool ) -> BRGeneratorType: assert (yield).name == "confirm_ethereum_tx" - TR.assert_in_multiple( - self.debug.read_layout().title(), - ["ethereum__interaction_contract", "words__recipient"], + assert ( + TR.ethereum__interaction_contract in self.debug.read_layout().title() + or TR.words__recipient in self.debug.read_layout().title() ) if cancel: self.debug.press_left() return self.debug.press_right() assert (yield).name == "confirm_ethereum_tx" - TR.assert_in(self.debug.read_layout().text_content(), "send__maximum_fee") + assert TR.send__maximum_fee in self.debug.read_layout().text_content() if go_back_from_summary: self.debug.press_left() assert (yield).name == "confirm_ethereum_tx" @@ -441,9 +442,9 @@ class EthereumFlow: assert (yield).name == "confirm_ethereum_tx" if info: self.debug.press_right() - TR.assert_in(self.debug.read_layout().text_content(), "ethereum__gas_limit") + assert TR.ethereum__gas_limit in self.debug.read_layout().text_content() self.debug.press_right() - TR.assert_in(self.debug.read_layout().text_content(), "ethereum__gas_price") + assert TR.ethereum__gas_price in self.debug.read_layout().text_content() self.debug.press_left() self.debug.press_left() self.debug.press_middle() @@ -454,8 +455,8 @@ class EthereumFlow: ) -> BRGeneratorType: assert (yield).name == "confirm_output" title = self.debug.read_layout().title() - TR.assert_in(title, "words__address") - TR.assert_in(title, "words__recipient") + assert TR.words__address in title + assert TR.words__recipient in title if cancel: self.debug.press_no() @@ -464,8 +465,8 @@ class EthereumFlow: self.debug.swipe_up() assert (yield).name == "confirm_total" layout = self.debug.read_layout() - TR.assert_equals(layout.title(), "words__title_summary") - TR.assert_in(layout.text_content(), "send__maximum_fee") + assert layout.title() == TR.words__title_summary + assert TR.send__maximum_fee in layout.text_content() if go_back_from_summary: self.debug.press_no() assert (yield).name == "confirm_ethereum_tx" @@ -476,8 +477,8 @@ class EthereumFlow: self.debug.synchronize_at("VerticalMenu") self.debug.click(buttons.VERTICAL_MENU[0]) text = self.debug.read_layout().text_content() - TR.assert_in(text, "ethereum__gas_limit") - TR.assert_in(text, "ethereum__gas_price") + assert TR.ethereum__gas_limit in text + assert TR.ethereum__gas_price in text self.debug.click(buttons.CORNER_BUTTON) self.debug.click(buttons.CORNER_BUTTON) self.debug.swipe_up() @@ -507,21 +508,15 @@ class EthereumFlow: br = yield assert br.code == B.SignTx assert br.name == "confirm_ethereum_staking_tx" - TR.assert_equals_multiple( - self.debug.read_layout().title(), - [ - "ethereum__staking_stake", - "ethereum__staking_unstake", - "ethereum__staking_claim", - ], + assert self.debug.read_layout().title() in ( + TR.ethereum__staking_stake, + TR.ethereum__staking_unstake, + TR.ethereum__staking_claim, ) - TR.assert_equals_multiple( - self.debug.read_layout().text_content(), - [ - "ethereum__staking_stake_intro", - "ethereum__staking_unstake_intro", - "ethereum__staking_claim_intro", - ], + assert self.debug.read_layout().text_content() in ( + TR.ethereum__staking_stake_intro, + TR.ethereum__staking_unstake_intro, + TR.ethereum__staking_claim_intro, ) if self.client.layout_type is LayoutType.TT: # confirm intro @@ -529,12 +524,9 @@ class EthereumFlow: self.debug.click( buttons.CORNER_BUTTON, ) - TR.assert_equals_multiple( - self.debug.read_layout().title(), - [ - "ethereum__staking_stake_address", - "ethereum__staking_claim_address", - ], + assert self.debug.read_layout().title() in ( + TR.ethereum__staking_stake_address, + TR.ethereum__staking_claim_address, ) self.debug.press_no() self.debug.press_yes() @@ -543,12 +535,8 @@ class EthereumFlow: # confirm summary if info: self.debug.press_info() - TR.assert_in( - self.debug.read_layout().text_content(), "ethereum__gas_limit" - ) - TR.assert_in( - self.debug.read_layout().text_content(), "ethereum__gas_price" - ) + assert TR.ethereum__gas_limit in self.debug.read_layout().text_content() + assert TR.ethereum__gas_price in self.debug.read_layout().text_content() self.debug.press_no() self.debug.press_yes() yield @@ -561,12 +549,9 @@ class EthereumFlow: self.debug.click(buttons.CORNER_BUTTON) self.debug.synchronize_at("VerticalMenu") self.debug.click(buttons.VERTICAL_MENU[0]) - TR.assert_equals_multiple( - self.debug.read_layout().title(), - [ - "ethereum__staking_stake_address", - "ethereum__staking_claim_address", - ], + assert self.debug.read_layout().title() in ( + TR.ethereum__staking_stake_address, + TR.ethereum__staking_claim_address, ) self.debug.click(buttons.CORNER_BUTTON) self.debug.click(buttons.CORNER_BUTTON) @@ -581,12 +566,8 @@ class EthereumFlow: self.debug.click(buttons.CORNER_BUTTON) self.debug.synchronize_at("VerticalMenu") self.debug.click(buttons.VERTICAL_MENU[0]) - TR.assert_in( - self.debug.read_layout().text_content(), "ethereum__gas_limit" - ) - TR.assert_in( - self.debug.read_layout().text_content(), "ethereum__gas_price" - ) + assert TR.ethereum__gas_limit in self.debug.read_layout().text_content() + assert TR.ethereum__gas_price in self.debug.read_layout().text_content() self.debug.click(buttons.CORNER_BUTTON) self.debug.click(buttons.CORNER_BUTTON) self.debug.swipe_up() @@ -598,12 +579,9 @@ class EthereumFlow: # confirm intro if info: self.debug.press_right() - TR.assert_equals_multiple( - self.debug.read_layout().title(), - [ - "ethereum__staking_stake_address", - "ethereum__staking_claim_address", - ], + assert self.debug.read_layout().title() in ( + TR.ethereum__staking_stake_address, + TR.ethereum__staking_claim_address, ) self.debug.press_left() self.debug.press_middle() @@ -612,13 +590,9 @@ class EthereumFlow: # confirm summary if info: self.debug.press_right() - TR.assert_in( - self.debug.read_layout().text_content(), "ethereum__gas_limit" - ) + assert TR.ethereum__gas_limit in self.debug.read_layout().text_content() self.debug.press_right() - TR.assert_in( - self.debug.read_layout().text_content(), "ethereum__gas_price" - ) + assert TR.ethereum__gas_price in self.debug.read_layout().text_content() self.debug.press_left() self.debug.press_left() self.debug.press_middle() diff --git a/tests/translations.py b/tests/translations.py index b411162ae6..015f0951f5 100644 --- a/tests/translations.py +++ b/tests/translations.py @@ -1,4 +1,6 @@ import json +import re +import threading import typing as t from hashlib import sha256 from pathlib import Path @@ -12,11 +14,13 @@ from . import common HERE = Path(__file__).resolve().parent ROOT = HERE.parent -TRANSLATIONS = ROOT / "core" / "translations" -FONTS_DIR = TRANSLATIONS / "fonts" -ORDER_FILE = TRANSLATIONS / "order.json" +TRANSLATIONS_DIR = ROOT / "core" / "translations" +FONTS_DIR = TRANSLATIONS_DIR / "fonts" +ORDER_FILE = TRANSLATIONS_DIR / "order.json" -LANGUAGES = [file.stem for file in TRANSLATIONS.glob("??.json")] +LANGUAGES = [file.stem for file in TRANSLATIONS_DIR.glob("??.json")] + +_CURRENT_TRANSLATION = threading.local() def prepare_blob( @@ -66,110 +70,61 @@ def set_language(client: Client, lang: str): language_data = build_and_sign_blob(lang, client) with client: device.change_language(client, language_data) # type: ignore + _CURRENT_TRANSLATION.TR = TRANSLATIONS[lang] def get_lang_json(lang: str) -> translations.JsonDef: assert lang in LANGUAGES - lang_json = json.loads((TRANSLATIONS / f"{lang}.json").read_text()) + lang_json = json.loads((TRANSLATIONS_DIR / f"{lang}.json").read_text()) if (fonts_safe3 := lang_json.get("fonts", {}).get("##Safe3")) is not None: lang_json["fonts"]["T2B1"] = fonts_safe3 lang_json["fonts"]["T3B1"] = fonts_safe3 return lang_json -def _get_all_language_data() -> list[dict[str, str]]: - return [_get_language_data(language) for language in LANGUAGES] +class Translation: + FORMAT_STR_RE = re.compile(r"\\{\d+\\}") + + def __init__(self, lang: str) -> None: + self.lang = lang + self.lang_json = get_lang_json(lang) + + @property + def translations(self) -> dict[str, str]: + return self.lang_json["translations"] + + def _translate_raw(self, key: str) -> str: + tr = self.translations.get(key) + if tr is not None: + return tr + if self.lang != "en": + return TRANSLATIONS["en"]._translate_raw(key) + raise KeyError(key) + + def translate(self, key: str) -> str: + tr = self._translate_raw(key) + return tr.replace("\xa0", " ").strip() + + def as_regexp(self, key: str) -> re.Pattern: + tr = self.translate(key) + re_safe = re.escape(tr) + return re.compile(self.FORMAT_STR_RE.sub(r".*?", re_safe)) -def _get_language_data(lang: str) -> dict[str, str]: - return get_lang_json(lang)["translations"] +TRANSLATIONS = {lang: Translation(lang) for lang in LANGUAGES} +_CURRENT_TRANSLATION.TR = TRANSLATIONS["en"] -all_language_data = _get_all_language_data() +def translate(key: str) -> str: + return _CURRENT_TRANSLATION.TR.translate(key) -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: - language_data_missing = False - data: dict[str, t.Any] | str = language_data - for lookup in lookups: - assert isinstance(data, dict), f"{lookup} is not a dict" - if lookup not in data: - language_data_missing = True - break - data = data[lookup] - if language_data_missing: - continue - 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.replace("\xa0", " ").strip() for t in texts] - return texts +def regexp(key: str) -> re.Pattern: + return _CURRENT_TRANSLATION.TR.as_regexp(key) -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_in_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) - 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) +def __getattr__(key: str) -> str: + try: + return translate(key) + except KeyError as e: + raise AttributeError(f"Translation key '{key}' not found") from e diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 9de3b82ea5..7e65dc23de 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -2146,9 +2146,9 @@ "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c3b4126112107622a4ae14343700000e67787f175c7273c0b81fc30320fd4659", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2e261c7367373888adc9d30baf7be99f89da114364a54dd096305ac76f5b02eb", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c15845c4d1a46c654b5bb4babed93974d4b7c68b6bb120c74d46a1ec924152ce", -"T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3d3c9ddad06542ed169c761779f8bd6a65484c23462aefba05b90df6135421c2", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2d9efb84f2d69506875061f833cdf2dc5d717c006d4e021346c4c1b15a77fe17", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5af5fa1fb4e69036a2cb77234059253f539bc2024d2f5895559950876897eab8", +"T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7423b5a3985389a8d290b1bf46a63e895c1d10f5506c62db963cae47dc29ef54", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "3dd4bfeb88c50e5cd8cef1930c152b0d00f65a4ceed8ab47ab1915dc02c9064d", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "13432d5369619793e6d362259b004a249b00ef0d0505e15b65b0b2d9f1181653", "T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "747fa7c7cea4b886102440f1b56f84f00f60609243c7044c42a1d65261d6b93b", "T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d9f64781fddcd204ec6be552593edfbf6a9f680f6f4fd79058b94317ed29fa23", "T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8d61ac2c62b0009340d7c2a3559440a24f74af3c0a783a35df26ab72f12f7bf7", @@ -3591,9 +3591,9 @@ "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "438fa8f2cb5e3ab4ee1de63d878f1e91a7cd6cd80300236c0e98fcf78fdd5a4b", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e9a562aea946d2ba4e4a388b18a10e3aabbe6610c5896268c27407d4d93ed187", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2a6166d6df82e48a4f67c68002045e07c707a9c5fa1ebdd83c78ba00af122798", -"T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "6f0ef40247cbb634e9940108f5904414c2dca27c3036556cc1603c16d75ced2d", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "99d747a3f7e92beabc6e4994a686fe6fcf1b0d26b7e6c75089d75a448d7e667e", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "bc45578859691c1414b641b8d980002a7f17727fb7e11f956d981900585e6bc2", +"T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "752a7b86b527b9c003809cf4ca67cfc8678843b4023a4f8235e148d76611087b", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2a6df5aa03cf5fb8ac88bece49d037ec947ee714417f48806b1fab563dd46006", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "6efee559ab18dcb0e7bde66421525dc7307a0bb10fb6b93a6136f219af671676", "T2T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "518a5a3cc6f7d0320b623c4f40ec10549cf553bd6e1a8396379e47b9dce23a55", "T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "bccdd20b9cf4af6877a8bcd4da618bf7d3003c52a6dced0a8295baeed93f97d7", "T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "6d399b370fe97889527deca1e9ee9030e56a7a9dcaaa7b4e1d3f977113f9f6ad", @@ -6499,9 +6499,9 @@ "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d075e5ec0cdc10d90b3a3e3552a90c99c381a9d218b14206ee7f3f7e63915bac", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c7554f3753e6d529ee43eaf6d55f73ae4ba01324432024ffb56ed19305b140a5", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "691ee175d6b846685505d0d6957cba33f9d039be1bbc3b8884cf1e5216724fa5", -"T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "372321a837c6ecab4858a908a4bbf4069ef92cf86a394967b3357be924f0331d", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ac31676daabd1800907e1fd5d1f30b8fec58f03d476a469f5c58a5d10a1a2f9e", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "37e766b25759b29383259a19c3203f2cabb25360857f0e9d6dbf9332c2c4f197", +"T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "0ed1d516d1ebe22e35336ac0a119f685e834077ce716698a6185dc700f069a7e", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "4bb771f2907ffc973abc49722cfe944281d4be63130c3e3818c74a6bb6f4a3da", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "646c38e4880651920048678ac0fa17b958eb44f063ef91be0eee04ec84a6ea20", "T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ee0917fe84e4c98d87d30207c10df75f2b1691947b5649725adfd100192574de", "T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "e326f742a226347e11c9ca3ca42bb4f8271d5689d88d24c1da50e7bb78c9f524", "T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e54072a0abf7c53c691807cd6be5f6faf03576e82f53c1c6495d36c5b98083f5", @@ -7944,9 +7944,9 @@ "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "2beda0a8edbbeeb697043e3380d566180f66a5b61c61a5d30de42c36922e5c66", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e05afbdaa8f03ad83d593ea73ac6058ddc3e7eec9f33bb1af968a34b119983cc", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3213c731907c7d824a2f2c9e6c7a109522132f748506786dde2debf801d985b8", -"T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b1251c6bbf9f0ddcccf203007c7575a3effdd3fcaf04ead5a8390a2d2b39ef1b", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2ec6d721b88f919bcdd16711c6c54f26e4c18245f66e72f3d3f887c7ee9cf9bb", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "297f22704a8fec0bbe42d1911a649e2b869fc86d513f39b05c44220cb8880f65", +"T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2e11502263d89184535c68df8ace2735239cabf4a9ddfb722ce9d8c11c65b483", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ada2eda4bc9b800e48b09748afdc2a8c3a080acc47ec5a8584a31999b1349677", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "50c1e7c333ba952295029c9a419249f226e050c8e24be781cc570fd4ae395182", "T2T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "803b133364cecd79185e643d7bbc07c4aa32c21a49bfbbfeff691d93cebaf15f", "T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "fc0bf10c30d6a0498be2356433a0e7c5d4538da273bc525d4c460882f50f4090", "T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4938d09925d9304319a2824b2bab58f26d1ccc7dcb04c96c028761094860f55b", @@ -9389,9 +9389,9 @@ "T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b0f3afc76d42ea12642b3435069603315de2e6a8bd683917579ae5bb1128cd4b", "T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "cdb924c44b0fd9d287b2ae899d102faffa84758a05b3ce6b25b28e373f8eb70c", "T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "53c4955febb887ca4cfb70e1fda2c7b3c8b81456837ded3762a25d023f71fdfb", -"T2T1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7e6ad8b9b3217cfea80046d8d2286c2c1fef11b58d202eb4bc53785c12acfde3", -"T2T1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "958e561c7791c7401e2581a3b676ee5b1bff8ce4362bf809ae38217aa1590e39", -"T2T1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "c5383e46d3aa84b53e38f90ae1236121078124ad23e72761e52fb89e56afc12f", +"T2T1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "92a4bb2f4ed9db939915ad9ad416864d6636da6cc753602f84514e977bc50777", +"T2T1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "637323897a25d7e993fdee80d3f8ca80e01017446fdf36161ee8b77b80b11e6a", +"T2T1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "65d3f44a49b9a5df6a2a89ac88bf1918227cd92592facdae8832b34bb53b7b17", "T2T1_pt_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fe2a582fdfb2a1910a480eec606bd85f42754f15853631e277e00de55f66d03a", "T2T1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d4f60552cc6298a1ed65ab712a77d65040564e4a4bae31136ce3f2129aff7a16", "T2T1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a4af43720ebb7e822fd00968484e6b7565309421edaa9637bb49f1df76e580df", @@ -11051,9 +11051,9 @@ "T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "277ae752bd567fd94bc02f1aa9e98afe726d47bc7be4e5ab78ca15d372196a0b", "T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "3ac9c3c26c2d28e04f5092cf48c1b06d2ad017a2fe8cf462191b91e879878486", "T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fedd2282f8de29ff91fee2cf8165331ba28bda5074702f91a7e490339ae2de1e", -"T3B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b238407aeb0fdea5962124c3f67055e1668c6590bd08d92f502a574d22eb4cbb", -"T3B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b515d1a9d3c7bc0f3327e391666cf1fce18c69e7835f34039a076a572f3c64a6", -"T3B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "dde9fc66ea6fbbcd220d7b3432dca3b1fc03425abd3c6061c70354088a015253", +"T3B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "23adb496a3ffe4ff81e6129d2eeff43c7dc67e56944caa7f6f55a31adf5876d3", +"T3B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f21bb7bd1d5f6e90c2666332677ddb75c76290689b587c30f2312fb632612dce", +"T3B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "43c2dc5d07991083331cbbde8d11c571cbd5b0e29a5839a1820b06586605dd19", "T3B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ae5b12397fc74b980acd3a00c69aff165e11311052205439bfed16a10a0bcb4d", "T3B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b91e99e48813ad611274a64c8cb0694d1ab55f614afd8a71b3341553360d95a6", "T3B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0de8a4dee73280a8fd209bc4094d572f7275ef408863393ea5f3041a29112d05", @@ -12414,9 +12414,9 @@ "T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "5b0c8450a10350d587addcd53d3ea8ceec21ae75e8e7106749eb8b1b3ca23ea9", "T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "7bdeeeb663dc02c2727d2ef4fe33198d6c553b17924a5f1bf22fe69976facef6", "T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a2aed0e5030bced60c77c711e1d8a32db743b9d2b9c173a9897e95be731b9b85", -"T3B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7d680a384b2bcabead51f75f57f5a22a9a43ce77d6eea45a85228a3da1628c5d", -"T3B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "5313dfe20b24a900127e87083b440b3a0915c5e2af9403d431534d66eb30b8e8", -"T3B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "df07d1f7d9eca559879e0c06bdcd2a07e647de9b2aa441ead02d8dc1558238ce", +"T3B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7878d6af1cc5a2eb5e8d8fa4f7511d18cb35b493a27ad907afca51839096f0a7", +"T3B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "eb139706b092859fbcb503858cfd0efa4611cb4ea38b42070eada2e246f4c0d4", +"T3B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "02714329303c2ea6e6fdb113645ad59c0e030064fc67b362082fabf78b6d9c95", "T3B1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a072fa8b2f358975b2807250a1ab484acc787fdb80d0297dd9d1e73c21247e47", "T3B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "88ec6db5d5188abb03a781960a5d339e7493d5d75ea24409931f71464c162894", "T3B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "12023eb227d0e54b5de2365fffedb74cfeef4fb82cbe18b993dce09d76bdf8df", @@ -15140,9 +15140,9 @@ "T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b87c3af18fe5fbc3165620d27f3f489538e872609ee533a295e05c53932ba7dd", "T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "edf929fe9113071e7f3f6cc385b753e3224f704085c019f1d71b728302be63c9", "T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "af46cbc7baaa00d3f53201bfe108164a37133545e767fc1bc373352fe8fb3bc6", -"T3B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4c2aceec19c316773b1efc03cbc26b40a55ca762f5b72be2950828da0aff421d", -"T3B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "5f30818dbf8f29ec35baf2c7768f9f1c9cb7228167fefdf16e58a40f7a97c614", -"T3B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7484f1573f2753c44bade09ed015823b7fbef541daf1e5694a6fd507aa6e6660", +"T3B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4114043640abd926816baabdf932c530d4b4eb4f705902629056943727b39840", +"T3B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8755cfcb0ef0dce9179c4623769ca17935a7228ef3c05e858d6b4b8602d5c0dc", +"T3B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f889b92e53aa87f8a89d2fd46e187f8ba1b3b25b19987c4bac2bc1b5dadf8983", "T3B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b902e58f30a7466cf63473f6b50a660673c75c7d67d9a139c4570889cae7df42", "T3B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2bf84eec6d1dd8533bce24f0205988190224c8b720455c97e12a869ffba159bf", "T3B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "debf7befdcd861e6cbd19baf5eb29d6734ea4b8112a8a7915c3fb4552c3b1886", @@ -16503,9 +16503,9 @@ "T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "dcb107fec4dca26e2669cf349126ac743c59274af9bc3574e7c94abb003adcbe", "T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "eaa4028c4148291dada8883a28179395e8afc81715c50f78558e5f04c62c285a", "T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3e12267808c57456aab2511b00dd3b94cc7c3f803091814a571ddfb61ff7917d", -"T3B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4e3cb3e637859f14f03207f0f3e56686f13a3a292eb0a8b01f12f48d1c5c2159", -"T3B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "eb6c2d369899865814b535a93e9f7a96c4906a4d6d6b80fa7b0348a4f48851a7", -"T3B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "86f8d5bffbc5b5f4d1ca7b35294cb26278a011fc09f20a716843a34d6e3ce8c6", +"T3B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "05b3e315310a4efe5517a5087f25cd67ac7e49a03caad692a9471a4e7c3c7e22", +"T3B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "308502381a2aea311e7b1a0844256f1ef86e4d66e034ea8120fcdaf7d708deca", +"T3B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3623f86b921776fac7e407153bf272f6793365c58ab0fb61a232a279d738f970", "T3B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ca6a0db368ecc5185d1dfe90b3a556b5daa77f91a12d3eb89d12f82817dba8bd", "T3B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "852b197c421dc3297e5cd17a836df292ad8adac23017e22ba3cb77ec612e9a36", "T3B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "dc085e06bbc9cda97569bdc3fce74d860031a34436cd7b55c730f584e4d345a4", @@ -17866,9 +17866,9 @@ "T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bd9d5b7483e1f4fb4969b5af2199a6d3477f2683ece392b9da36d8ae2e8cf328", "T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d090356afacee3ce952c312debdc2a846b4c659c3e4ef0bd842af1343b97e779", "T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f88f1400cd28121395fdcca57ff44ef27a18f3620b369f8fd49a323fda82cd13", -"T3B1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "c6eec3693e381091bf8e642d52bef4051dfd8c21f56ec5a189163d3915feffda", -"T3B1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e280ae621a8d00520f44178de2668090d9cbd7a69f64790ce98c476baee305b0", -"T3B1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "80144c221ddc02bf6a733f7d33a945e4ce112c31ad98a22ba4b445038ca771de", +"T3B1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a9195e9a284e5720ce8e65e561a74780b74a58464a787855d11643114f9335c1", +"T3B1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "573762eeaceb11bfc996692ee0adeaa518da92a6d943a6187c8ef4c7dea057e7", +"T3B1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ec2a09a276e97abdc4163dd6884b1edc26151b7037b80355c9f53231d665acfb", "T3B1_pt_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d6a03281d148cd9c14b1aa69d908673377000e7f99f4fbab253fd06eebc819bd", "T3B1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "72e8656adcd293ccd973a59804b7465493afc96f4bc77473a744829f660a15d3", "T3B1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ba2821316182f2af6418061a0cdee6ff6f6c99193bb33eed242d39a1081917e8", @@ -18254,7 +18254,7 @@ "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b837ee42e89864dc26e886a2e58a70ef33d5957d1e552e75c886d37f68d80670", "T3T1_cs_test_tutorial_mercury.py::test_tutorial_ignore_menu": "6e2a63119cad3d4344ddd38b574995b1da1d7cba549de058e3be75146aed1d40", "T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_exit": "fecad098ed233a18aa9b9410aea68a9784b0d2a8ba329c46fedddb6964c45f54", -"T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_funfact": "650e50f4f66d9bbd052b155644a0fba09644e6a3b130d1935e11a4377c6650bb", +"T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_funfact": "d4affb941a859b09f37d4adf62a1f1b15ec7f9962bd2870727f58658ec314715", "T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_open_close": "6a48136d7e334bea0804f93057483c151eae696ce5f8fc5152bdf68498a5dfbc", "T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_repeat": "0b2780c4a1b49b0ca5d75e46e54f8a4be6f080f15653a84502ae625af9dbe40e", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a1aadf56e16ee602bac9e36d1c35dfca21824b1a497ab44d6a4a4f1f64964777", @@ -18309,7 +18309,7 @@ "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "775f000e5c12f95d3b4e461e310896faf8db527bb2f5bd0389c4fd5734ca2e2e", "T3T1_de_test_tutorial_mercury.py::test_tutorial_ignore_menu": "22e4d6bc417348955f4ea6dbcfa6d264840843af5fc41caa0af24add7687ab79", "T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_exit": "d964a0fc45cf45227704c04826a6e01d8e89b2408d1a75aa2087f08cb1ac310b", -"T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_funfact": "3d158e77a57ce30191cfa88d6b20d9012a6450747181f8ae9028466fb0e56f2b", +"T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_funfact": "904ee5a3dcbb599236cedfc363254b2d283dfd393fbec9be8dd047a80d81b583", "T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_open_close": "3e0e2a1f9f6744a3575f775c149fbfbe78ca2f5f4053f07bd62103b023018c04", "T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_repeat": "d08c543ee4aee36b556d2487820e40d94f29f38c77eeb08a01b2acbae9c32df6", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "9b9e2909949bd8d0d9db7cf7c4ee754761496cf118deda242d07302ead3db3e6", @@ -18419,7 +18419,7 @@ "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1033b294c5dfb71a38b4675f733e8eec4807553cf8c3a4e369642dd807f388c3", "T3T1_es_test_tutorial_mercury.py::test_tutorial_ignore_menu": "f170f4496264f8952bebb1547a3838d34cad9ad6cdf1e53e47fc2b4e44b4cbfb", "T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_exit": "fe1f116750a85da00f70ef21e57ce6d12db1820e8b6b600b6f40a90933874c98", -"T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_funfact": "77f14a8575a4a65d48697a2d8ab07ab062b2f3aeb0b2c1b35844fb4c9fc8c519", +"T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_funfact": "08597566e754ddaa8c6b6a4fcae98a8ed7215911b749d84d3ae8958729032562", "T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_open_close": "05dd76e07fc5770a4261671ba2c11005974df84514c959deb96d8bf4d9ffbf71", "T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_repeat": "1df0f55fb654dd9a2ed82cd258ad4927bc7795b0f4a6fbdc64b53487cadedc7e", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "239a61de3bec014d42f762a2fd9e9d373ecf464ecd64b5f45d81ecae7dd76934", @@ -18474,7 +18474,7 @@ "T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "26a81adb16667b8e7f1293433272ecc453c775617ea2295b66619de2b0df6998", "T3T1_fr_test_tutorial_mercury.py::test_tutorial_ignore_menu": "fb7356f92e00442b4151c0750f3580c7eb7006211b976371742c633e5d24ef50", "T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_exit": "20fbcfde484270b2fc45857e50f9b7afb5c7e876a2441aa271d02e1954f6cd42", -"T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_funfact": "508cc6cc186cd738f1ff11d85c68d74825ba02a3b0f1624fa3d9eadeec466723", +"T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_funfact": "476cc94e8e51b5dbcf7084dc63fc785f65951b9a2314650c3cdae5268c0b02b5", "T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_open_close": "d521123bacf2dbb487738f8f5afd75c17f9e976401f8df7906bad97a3638a1d1", "T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_repeat": "605e9d23ec2a71e53d28bef9649e220a8f2640a0ef10247ef920396e16b0d339", "T3T1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b8e345283fcc8498d8f0c7f1ad3f5f52777262d9a912a7002ab0ac56a3f3783a", @@ -18529,7 +18529,7 @@ "T3T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a483bd9532abb13f7dd1809ed64dcb59fbef09aea0ecca29b39766fe3d424fad", "T3T1_pt_test_tutorial_mercury.py::test_tutorial_ignore_menu": "fbccc3c9a35c7fdbd73d7ed0660d295b819c1c4aced8fb2704e2eb5a81e586c0", "T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_exit": "6ca84667bee1d9af1e9c27207b7a37c2de1e4a6435ec934a0e086891d4358ed2", -"T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_funfact": "3bac24378884a50e40215e31fc94db5fa25d4a9a50720736fc939ecc975bb752", +"T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_funfact": "2110636e8700cb09ab5fd1e2f6d0c2ca6abe2074b4af5a922cf58d257f2a63b8", "T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_open_close": "39491badb5a5a3172992036cb5c27c3107f280a4b5e1b10000cafbe8b72cb41d", "T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_repeat": "7ef10cf68700559bce5b35f416f1148a071453a1efb32c39abe23fbaa156f4ef" }, @@ -18563,42 +18563,42 @@ "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "a660523b1742b202cef8e772e6d87855680940cd9e8201df22814ae79bebb5f2", "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "f98f326192158f60502ffc7fa8c780e63bb00388afd2b8d79325d8f4a47d5ebf", "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8737ee2452cf4e2bf815157f272cec6889c3f238e005e06661ca31d9f311cdd7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "0d77d1b433eb08a0ec6a1c656bd46949729ea301e999311c307d6e3af674e033", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "0d20e0c874af98c047eee53df8216f619707c3d1423e346bb1f66de20a0e29d3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "80e14919f95ed7bf0a785112890bfeb498a5a907f8e1984b74664859c0087eee", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "eae302e4174214c1cb5299b4d9727f4f20a3afa2933d5e7de594e3508237be8c", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "2137743394ace05582cc9e79aa035f10c5798daee05fd9e3632dbf597ff2142d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "efa0ae88711ba46e16064e494adec2735d68f7eceb9ab4c95b08a73b69ced261", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "9cec808701ddbb24a786f222af1b3aeb2a7d4550b25c3dd103c9e7db4b136dc8", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "aa579e8bd16be33178eddba2cbafb881875dc7be2b016f905fc45f766656658b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "d2e87825d8ab52afb56eac7a768eb9377273ebed00d0bbee3497e5c96656b5a3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "01819f43b9213874b10a6b872748d433fae81374b9ac0296207342197c7bb0e4", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "77727293b26227de717432f7824d0b86a2194506e34f04c4d2b290588435c93e", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "1bcb480c924339a5c8f8f6916884cfaa121adb6f3a4042317c97c5d5a50d7e73", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "f2fbddf0759e5ce9df003730354575d54eafbadfd7433599d01f9d639df8fac6", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "596beeb1e3546f5dfc96bc3753d186eec9e5472c82be4fedde9232e1b64a1c23", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "c76f7c9691505b192dc2dd917f9fcda501bedebc83468555bb67a90ddfaf1e32", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6ab614b35dba5abbbff3d8d376050873488c6d5ad7c3bace3efa6826566c8620", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "8513f0f2f56bbc1f064e731bbce0d5527fb4170e0d3e64c43905de93bb772dd1", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "ce9c1e4aa83d38adec196e76d04903cd28743014c259ec7e4dd56cf51496cac1", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "0d77d1b433eb08a0ec6a1c656bd46949729ea301e999311c307d6e3af674e033", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "0d20e0c874af98c047eee53df8216f619707c3d1423e346bb1f66de20a0e29d3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "80e14919f95ed7bf0a785112890bfeb498a5a907f8e1984b74664859c0087eee", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "eae302e4174214c1cb5299b4d9727f4f20a3afa2933d5e7de594e3508237be8c", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "2137743394ace05582cc9e79aa035f10c5798daee05fd9e3632dbf597ff2142d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "efa0ae88711ba46e16064e494adec2735d68f7eceb9ab4c95b08a73b69ced261", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "9cec808701ddbb24a786f222af1b3aeb2a7d4550b25c3dd103c9e7db4b136dc8", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "aa579e8bd16be33178eddba2cbafb881875dc7be2b016f905fc45f766656658b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "d2e87825d8ab52afb56eac7a768eb9377273ebed00d0bbee3497e5c96656b5a3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "01819f43b9213874b10a6b872748d433fae81374b9ac0296207342197c7bb0e4", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "77727293b26227de717432f7824d0b86a2194506e34f04c4d2b290588435c93e", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "1bcb480c924339a5c8f8f6916884cfaa121adb6f3a4042317c97c5d5a50d7e73", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "f2fbddf0759e5ce9df003730354575d54eafbadfd7433599d01f9d639df8fac6", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "596beeb1e3546f5dfc96bc3753d186eec9e5472c82be4fedde9232e1b64a1c23", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "c76f7c9691505b192dc2dd917f9fcda501bedebc83468555bb67a90ddfaf1e32", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "6ab614b35dba5abbbff3d8d376050873488c6d5ad7c3bace3efa6826566c8620", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "8513f0f2f56bbc1f064e731bbce0d5527fb4170e0d3e64c43905de93bb772dd1", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "ce9c1e4aa83d38adec196e76d04903cd28743014c259ec7e4dd56cf51496cac1", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "dfcda25897b3f6888afb4ec4fabb68d6d9c799a5dd79f2e83608fc972ea8d2db", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "3eb4c8e846e4f327190ec4fde348b2b1902e6cb0cbe431d9541905314f821c4a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cae497672b818c842ef6e1c43a4b301fb72e357cc66c8b0261422537e3bd1e6f", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "61d3df3631aed511bf2ade0da34fc29539f893f9f27624ce2fb114998769df86", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "e0353a1bb069ae39168a346f18788fdabba72dadf7fe297a283bfe2f73e7d52a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "20d225f5e347a67055a96665682724b37d2aae835c3b986fdac12c970e488d6f", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "82e0a731f9f1de9ebfac5f56990700796518e6f638775b5332576a96d4c5fc9a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "4ae3fcce0c87f5d0dd0dfd029c9435e632e2d3e98d33fffd57600a48681024fb", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "7e0dcbc0388a03636d90ebca83bf804ad37348e423964a0e9643dfdeb4e581e6", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "510faccd99641a0c110acfab49cd97a9492df81b5282b7d81386ca0e22c39984", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "79800834634c1d499eb8f152566faf3b63d8465f9c87f78025e16b752ce7be36", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "449c64e3c8d9af22a4a04cf989feadbb724dea56117da65630c0e5c8be49b447", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "c76534e83c350aeda7b5dad4e067a646a00248ea4729e550df3d8f06450ff21d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "7830da50917c5e7b90ff4cccc98102d09865a467e7d5da9527400eff78c1a405", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "c3cd5d3adaec51ad393a1c971bb36bf796cf199d0a5d3e0ac9527f33916f888e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "9a8d51c3020dbd99bef6f11c3837d0795f7bc67c26d7ff28bd0fbde7e6ca77dd", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "cab3f6cde64e568ee6d5f0081e9218c4d0209863ab18b7676ee08bc04ae622ab", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "a743f395389b1948a6f792efe41aafa420f68cf84c192dd89509a81c1e9287ae", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "dfcda25897b3f6888afb4ec4fabb68d6d9c799a5dd79f2e83608fc972ea8d2db", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "3eb4c8e846e4f327190ec4fde348b2b1902e6cb0cbe431d9541905314f821c4a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "cae497672b818c842ef6e1c43a4b301fb72e357cc66c8b0261422537e3bd1e6f", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "61d3df3631aed511bf2ade0da34fc29539f893f9f27624ce2fb114998769df86", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "e0353a1bb069ae39168a346f18788fdabba72dadf7fe297a283bfe2f73e7d52a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "20d225f5e347a67055a96665682724b37d2aae835c3b986fdac12c970e488d6f", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "82e0a731f9f1de9ebfac5f56990700796518e6f638775b5332576a96d4c5fc9a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "4ae3fcce0c87f5d0dd0dfd029c9435e632e2d3e98d33fffd57600a48681024fb", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "7e0dcbc0388a03636d90ebca83bf804ad37348e423964a0e9643dfdeb4e581e6", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "510faccd99641a0c110acfab49cd97a9492df81b5282b7d81386ca0e22c39984", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "79800834634c1d499eb8f152566faf3b63d8465f9c87f78025e16b752ce7be36", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "449c64e3c8d9af22a4a04cf989feadbb724dea56117da65630c0e5c8be49b447", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "c76534e83c350aeda7b5dad4e067a646a00248ea4729e550df3d8f06450ff21d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "7830da50917c5e7b90ff4cccc98102d09865a467e7d5da9527400eff78c1a405", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "c3cd5d3adaec51ad393a1c971bb36bf796cf199d0a5d3e0ac9527f33916f888e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "9a8d51c3020dbd99bef6f11c3837d0795f7bc67c26d7ff28bd0fbde7e6ca77dd", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "cab3f6cde64e568ee6d5f0081e9218c4d0209863ab18b7676ee08bc04ae622ab", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "a743f395389b1948a6f792efe41aafa420f68cf84c192dd89509a81c1e9287ae", "T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "05693d6c4f0aa3c519599c422b00a7436002237a988b31257411807cc215df21", "T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "99e89fff2215758df3853947ff756a1ca7eed121ee802d10d64ce49d7ba554cd", "T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "991a101e4cda5811a95f6c57fa316b1665f85c6f29cd7863ab672082ba3cddbb", @@ -18699,17 +18699,17 @@ "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "991a101e4cda5811a95f6c57fa316b1665f85c6f29cd7863ab672082ba3cddbb", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "991a101e4cda5811a95f6c57fa316b1665f85c6f29cd7863ab672082ba3cddbb", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "991a101e4cda5811a95f6c57fa316b1665f85c6f29cd7863ab672082ba3cddbb", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "0d20e0c874af98c047eee53df8216f619707c3d1423e346bb1f66de20a0e29d3", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "14880e0819b8394cad460024706a656e635a466deba84989708c99fc2d629392", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "e68853dc93de4be6bce481afd349f8556e957c2f9e94b92b2d09e90fc05fc64e", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "8878052b6ec966d1384a08485594ee3310a29c9933f554a6f7b0e83747b15b76", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "0fe00875da0a90547bf7ee2fda0e3c238a15a801d231ad4ccdeb5e85a644534d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "8004153c31cdc504ee586d7ea8eef17f303051ee5263213b0d083ee368e0cd90", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "a2934b6cf377d22a4cfebc27d3b4b6adf7528ec85057e9473e7320ddc02bc046", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "f4d495d40a490e7ef19e217ad186a39455ff1599d91fb9144bb879912e9d50b9", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "b4d352f4558613a3682201db2fb3cd19090be1287cfbbfd20daec2136413d11c", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "77727293b26227de717432f7824d0b86a2194506e34f04c4d2b290588435c93e", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "0a7f74c3e2a7c87065153e1f41853813c64235ee6d438adbdc80e0d60b971a9b", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "3eb4c8e846e4f327190ec4fde348b2b1902e6cb0cbe431d9541905314f821c4a", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "368972dbb0716f52f984be094161a3e2828959c14b1b69d3794a2842d3309a6d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ec57e407e43a867afaaf09ad0344461cc597b739639aa14704ef00c212e73a1e", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ad909e9ae03827083f9804e13653d7312888553e0ed03fa8a240d75fe52b6ad8", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "f10752b0d83ca3e1ac212654e21202784030c51a7121578ca4382f5104b8d92d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "d68bf880fbde8bf89deac6b113a3ed3a33fc685498caf607a0b0fc2aa9119d88", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "e1c039fcba3e3143ec30aeeb3dc1ec48f681a0f933313a65ae058a28a5813c6a", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "242a9fb8fc2de01a0679282a507349007150f8e19ba547f5c9599e2057a4ffbf", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "860c484dc79b049a37b60d215ca26785cde13d2f34c15557f288aca5f4b51aba", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "79800834634c1d499eb8f152566faf3b63d8465f9c87f78025e16b752ce7be36", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "8ed20908d9f820fd7caffa2e1d26f6b79d830bbe0816f1e24d9942b476f2bd2b", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "991a101e4cda5811a95f6c57fa316b1665f85c6f29cd7863ab672082ba3cddbb", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "991a101e4cda5811a95f6c57fa316b1665f85c6f29cd7863ab672082ba3cddbb", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "991a101e4cda5811a95f6c57fa316b1665f85c6f29cd7863ab672082ba3cddbb", @@ -19572,9 +19572,9 @@ "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "77f9c313788e0dc8304343ed710154b34f8c6f88158d5995c2087aa7f7ba642a", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "b428cad12761ea4ef27d33de2f92313bb40582d96ab6dde74f6b1dccbf455378", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "be2868962dc460244208b3f137cd1d0b85dae8c278cb3cbf15f2178945578ced", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "399ff922c7704d108b4e9f366d7a779ff20d58a6b359e4e8011e98e512c26bed", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "afe4947688f0dc0c79b9e5553e9bb4ead0c5d27216c60e25bf2a77951e6f0763", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "95d8bd527735b671fce3fb40ad3e04202b23497a011a7abe1471e0f6915e9994", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "67371e52f408275508b9aa5803a79799a9613a62791ab5719176e924cc1105d8", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "917800b978cf6e3a0db5f0c1c421bdd31bc446ec64916518851ef3463e360e40", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2ef0f3513eeca3c75dfd19dcc492564c8275e1c976b3b9994414cda6890804d2", "T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "66bb0fa404d3cffaee70943f65a2ead0220d406c63673262c5b202ddd79697eb", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "43929b47a1dcf524ae6f77adebc983ddbc4257a1a8ed5bf7fb34a9c747f7d351", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7ec8553b561dbe9973ea50d3600fa5df588a6a4fa145990d0e0bb4f716a76106", @@ -19928,42 +19928,42 @@ "T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "839cc5423b6375ffb7a45f411d1103ae37eb44cf20e8b18b82d3c218d67660b7", "T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "f82a8576218ba7e7821f0412a7a1509473f58619f23ddd22502fa708e5f24826", "T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "2ebac1a5eb6fa5dbbb46e4f98a43dfba502b4d7b5ed3d7459850784b04a226e9", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "fdc00a33a66010c5460ca8d92cdd1b8efe9d9781df5d8376f79b1541b378990b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "d18a6aaae584c20e20586033651ed59e29cf88d56769f80cdbdb708b7200fb31", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "57846b4955879d6106f8610dc9e388cc5c60531c4f59b0b9f2ec0e106d1a9cf2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "5bb80a4108483eb046a8ff3810d9595a7af01748c0bb47ce4cdcfdd70a3209f5", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "c40aec9a8e2370b6b93523d7a97d7b2d579a7c79e2a1356afa9562609aed1fbe", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "94d125eb5ee1194823114fad24dda3d8f256900c689abf6dd1fa81d9ab25fb48", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "ef22790a2d560d613712b6ea874c7cda3154b566df650dd1bf05a7c1cd2caea2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "66bd32d8bc3a1e5adbbd123acc5984e0b65823fc9c2c45e3a8c7767e541e4130", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "b06d1dcaf2c588aaaf21ad68b9830b23159e614de23c88e56d3e9cad78385579", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "8dcffb2996c82f6d478c5a631f18ddb3ec6359adc28efe2b61e76c279ec02f6c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "06609d0867290431cb667f9f51a0baeaedf689571423a7b115529ba8ebf23d0e", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "070eb6befc4f2706ac548beb94138db8c733c14e6eda9a6f95958662d07a69fb", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "f2c74aa67f329207b9e369554ad68c20230fddf44db2d95841b2cf75ad09103b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "d8ee824818f4591d340303961611c6cd53bca502ab61cebcdc3048a977230ce5", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "93dbf37a7b78b60eebc5832356a3ac151155de3d8604190aa5c4a4ded8e570f4", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "34340e50f63acff28a5aa0c33cc4b8e45e89eb24ece8f6c3d23063547770ece7", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "b0b390e9475e8f7b698c0c653c51cb79a53b7b8504828282b0cfbcc4582d66e2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "ba06008353d1eac11ad74e9d13b9b4879b3bbf071f643010915b09b4d0e77a6b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "fdc00a33a66010c5460ca8d92cdd1b8efe9d9781df5d8376f79b1541b378990b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "d18a6aaae584c20e20586033651ed59e29cf88d56769f80cdbdb708b7200fb31", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "57846b4955879d6106f8610dc9e388cc5c60531c4f59b0b9f2ec0e106d1a9cf2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "5bb80a4108483eb046a8ff3810d9595a7af01748c0bb47ce4cdcfdd70a3209f5", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "c40aec9a8e2370b6b93523d7a97d7b2d579a7c79e2a1356afa9562609aed1fbe", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "94d125eb5ee1194823114fad24dda3d8f256900c689abf6dd1fa81d9ab25fb48", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "ef22790a2d560d613712b6ea874c7cda3154b566df650dd1bf05a7c1cd2caea2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "66bd32d8bc3a1e5adbbd123acc5984e0b65823fc9c2c45e3a8c7767e541e4130", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "b06d1dcaf2c588aaaf21ad68b9830b23159e614de23c88e56d3e9cad78385579", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "8dcffb2996c82f6d478c5a631f18ddb3ec6359adc28efe2b61e76c279ec02f6c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "06609d0867290431cb667f9f51a0baeaedf689571423a7b115529ba8ebf23d0e", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "070eb6befc4f2706ac548beb94138db8c733c14e6eda9a6f95958662d07a69fb", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "f2c74aa67f329207b9e369554ad68c20230fddf44db2d95841b2cf75ad09103b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "d8ee824818f4591d340303961611c6cd53bca502ab61cebcdc3048a977230ce5", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "93dbf37a7b78b60eebc5832356a3ac151155de3d8604190aa5c4a4ded8e570f4", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "34340e50f63acff28a5aa0c33cc4b8e45e89eb24ece8f6c3d23063547770ece7", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "b0b390e9475e8f7b698c0c653c51cb79a53b7b8504828282b0cfbcc4582d66e2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "ba06008353d1eac11ad74e9d13b9b4879b3bbf071f643010915b09b4d0e77a6b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "40c97bdfe6e2730f4cd0d484385d54fec4abd5130fce2cb6a0ea88a4f97f436f", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "80f69a76760bd75897906830e0ea0132efbbc956b0493362fe2b49fc292acc3c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0dc6bed44b8e1cf189bde753ded793e2d743a98ddaf4fff3164bab1abd058697", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "577a8522266ac979e95c3522eabab34cf20f17b3a74f521c43e717c2adea5eb1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "10f7c5e2166689b68f2120e8282c01be91c242a62fd606012a0120175e07f260", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "2520f5427b8cfc7d972160e27eb5e3f27251be65813c1034740e28ba934c8eac", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "8c5b639affb3f2524962db5c066022c140417db7a2f4d926517dbf5fcc676398", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "7db25b1dcf43b5979eb4a8941c46bbc9d1ab560e1ffa5a9b87394d290eb8d15b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "23ac8d36bb36fb66346e29409dcb17a60cab9758b1f3128e7a65e0ade2f103f3", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "107d1ace92cfce91906709727ce79a3c0770dfe4909ff6e8e2b75e02552864ca", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "28a8d8b60cc4d39d72ed677bf73b49d0f460adc153ae0d53959833dbdc2fd94d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "84c9759b0ce4e7cd67bad588913e1dd4c5c2bb038d94467d6ccf1ab182682623", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "8d909a919f9a9a77d9f43bdaea71cb734f313dc420115f4efcc32ba19ab463d6", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "62350d2a81888d1214aa6303477a3498d3cd2c6b25a34347f5f572fe19ea1ccc", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "077bfea90aac9a2d07e537a225766d55cad10dcd94efcd59d1f49b3cd2cdd567", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "da5d2c08ee744d69567c0d3406981038d4f33a89268a1d2737d1b98bad99474f", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "8dd9b05bcf8facfcb9440e2e97e059d62950ab7027e30a1c256f814f122a316d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "37e548ebbc2d7864c5afd22df3058bf1e6377219e7844545e8b2681a43d7aa54", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "40c97bdfe6e2730f4cd0d484385d54fec4abd5130fce2cb6a0ea88a4f97f436f", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "80f69a76760bd75897906830e0ea0132efbbc956b0493362fe2b49fc292acc3c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "0dc6bed44b8e1cf189bde753ded793e2d743a98ddaf4fff3164bab1abd058697", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "577a8522266ac979e95c3522eabab34cf20f17b3a74f521c43e717c2adea5eb1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "10f7c5e2166689b68f2120e8282c01be91c242a62fd606012a0120175e07f260", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "2520f5427b8cfc7d972160e27eb5e3f27251be65813c1034740e28ba934c8eac", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "8c5b639affb3f2524962db5c066022c140417db7a2f4d926517dbf5fcc676398", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "7db25b1dcf43b5979eb4a8941c46bbc9d1ab560e1ffa5a9b87394d290eb8d15b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "23ac8d36bb36fb66346e29409dcb17a60cab9758b1f3128e7a65e0ade2f103f3", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "107d1ace92cfce91906709727ce79a3c0770dfe4909ff6e8e2b75e02552864ca", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "28a8d8b60cc4d39d72ed677bf73b49d0f460adc153ae0d53959833dbdc2fd94d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "84c9759b0ce4e7cd67bad588913e1dd4c5c2bb038d94467d6ccf1ab182682623", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "8d909a919f9a9a77d9f43bdaea71cb734f313dc420115f4efcc32ba19ab463d6", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "62350d2a81888d1214aa6303477a3498d3cd2c6b25a34347f5f572fe19ea1ccc", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "077bfea90aac9a2d07e537a225766d55cad10dcd94efcd59d1f49b3cd2cdd567", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "da5d2c08ee744d69567c0d3406981038d4f33a89268a1d2737d1b98bad99474f", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "8dd9b05bcf8facfcb9440e2e97e059d62950ab7027e30a1c256f814f122a316d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "37e548ebbc2d7864c5afd22df3058bf1e6377219e7844545e8b2681a43d7aa54", "T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "e9911d384ee4176e6e226be82865dc957545013b753d40e839b74a1df90ab1ce", "T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "a832737ba9d59b469ba697cd1a1739bc36e1e070b6eae63f89f55db92d2f4175", "T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "656c427f48600d0cfc3e3c739f9959f680a8c45686fe503e81bfbf17e39595eb", @@ -20064,17 +20064,17 @@ "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "656c427f48600d0cfc3e3c739f9959f680a8c45686fe503e81bfbf17e39595eb", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "656c427f48600d0cfc3e3c739f9959f680a8c45686fe503e81bfbf17e39595eb", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "656c427f48600d0cfc3e3c739f9959f680a8c45686fe503e81bfbf17e39595eb", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "d18a6aaae584c20e20586033651ed59e29cf88d56769f80cdbdb708b7200fb31", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "c0cac92d1c87c98028bd97c40fd7f005e94ab1c11f9b3c69589ec8257bfcd2f3", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "84e41a64fd672fc3c1b87c9811e9c7c6255ec43159476d0593c08966546649e1", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "780af09813df2f0555708a2738deb70510a2194e00990d2b8ca295c1904cab5f", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "49cf2bc966125c4574976dee852d1ebcb9e66e37715d9b9952661c15c25c38f8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "d49efca02ff5463f30d6e8db72c18213aa86896162b8432079b15c93a84e2c66", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "822d02b4b694c3fa2c07cbce191e11205e2aac322211bccef54d454a2aa0cef7", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "6b4aa784d766dfefdf9fbcbfd4937fe7e8e339932b30835e1e83327a0b4f7fa9", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "98b2d9c0626be53eccb68d95982dfaa6bbc39ca39be6f3dab2ebd2445a6588c8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "06609d0867290431cb667f9f51a0baeaedf689571423a7b115529ba8ebf23d0e", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "958c1aceb278f1d9116f9c9d572b23d36572cf5f0505888da451a4059c0575ec", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "80f69a76760bd75897906830e0ea0132efbbc956b0493362fe2b49fc292acc3c", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "5ca97dfc1ab19a89e7ab19ed1ae53ee27fcddb564fc93f5bc715a75c825e1c72", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "a24ed3d2898b65e3b8a2331baaea8b9a6d4f688a3f4d1cf1af797daac01f3527", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "5ca791947a4c9b4b9592f0eceba26f82900a4a833da8aef8934fd037c924431b", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "c828cf07f441e5233465ec7047ef517b89ac4e511210c3a3d6448dffbab77926", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "737ad0fecaa5890d7d60c23eed0dd233b5c89555b21c3d2772b5bd5bfa7ccbe1", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "1e33162a51ccb0ad6b48b689453f3ff0c5fc290963903488be8b6d749db11e6a", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "cb3029643c18dcf29afb7a0f15ef1c87f45d6f7858d28058fb126ff35ef9a346", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "0a9ba4648f6f580b5bad02f6edb1d7ed5f08662f0d36cfbe1d937770bb90739d", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "28a8d8b60cc4d39d72ed677bf73b49d0f460adc153ae0d53959833dbdc2fd94d", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "7ecaa73a0a26e7293df4193270e74fe55864423206d2d04f86e14de34cd9a203", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "656c427f48600d0cfc3e3c739f9959f680a8c45686fe503e81bfbf17e39595eb", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "656c427f48600d0cfc3e3c739f9959f680a8c45686fe503e81bfbf17e39595eb", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "656c427f48600d0cfc3e3c739f9959f680a8c45686fe503e81bfbf17e39595eb", @@ -20937,9 +20937,9 @@ "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d8aca4b80c26ef82ce2609c7c8aa2171a3c159373553e908379f4a3123db6452", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "8a2d13d98cf4ec31f5f9e1050cebf94e1989f693daca4b2b5acd155c5d3528f0", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8a96d8870f629f3b0b8905c40fa5aa75f634d92879b4304c9773fb0f7c163ec8", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "17a736f5f40932d17d2f38d2a371798106c56c033de1b473b057e5558004fb54", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "5ad0feea22bb740762edd7a37efb6db10a3379ba37cee76197b7c06182649591", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "93ce28e417b07745f09ddf9bfb80c7b0ab0611b9168a0751f1e846a44bfb7ad4", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "db52689517bd1c5536f7ff63919c8334f8e867606c8677a239e0ef623ceb9703", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d9c1c16dcdac923eda91adb63cc1587307fd3e3d4b5a45e96fd086cab6c299ff", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "74cfd825843f7882a98acd2256045487fb80f36159f77a63716822355b218783", "T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2f776310db759117991e4237886f15fe7fd9514f25034a0ba6a0ff32c02eb56d", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "87fb9013835a109e4b691a56645003f5f0ad6fb0df27a7ca1cafddf84c263811", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "c4196841d98782eafd9bc24730d1f77155029ebfc5f0a5ae673bacf00da9a832", @@ -22658,42 +22658,42 @@ "T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "813345f88839c7258da1db26caf94c94a1eb2b4d7dd1f9e1d846d0a98cf44b18", "T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "971a705e4239668fe6ba9a4d4c54edf734ee4a89a8deacb2c72e9be25680aec2", "T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8be57846060d2a6d1a33037f6b87d02634c0bb5a4f76c16f0355b450f36a15bb", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "59fdc5806b8871678ea05e7f28e1095a3af8b2eda05e48ff6224722ff593822c", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "d7f71fa576e042d51744d03d499249dbab8cc6953bf14afa2f3bca5e3e70f15a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "fd104a3941c8dcef857c14642fb078950d1d056460d00be38120b712322c8c9e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "5029563fa131521c72c239a6ea15b172aad13ed8fdd054ca1ecfeb240fda6188", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "b3f9ab66274ac9a682a1fa9a05c3a7d085d68accbbe4b5b5da619a710a844242", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "55c9e54304ed445a42ff1fac2375a7470e3774a40365ea72da1264cdbe3b9bfc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "bf665cb7482dbb2ef0fd8144b3bd4d507bd309b227d8f6d9670f896237aa7b24", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "4a417972ec531000f7b3042ae0fe463b51e8ab1b769c070602e2f3ccaaef7a63", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "70c4246dae2960a71a3932f78ad1f610e91b5ad2350f149f2f1906a925b85eec", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "56ce3507f357ccb019173c88c65110170d178f77d2a2d19d652099eff93e40bd", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d9ede72a0258cbaccc167bbaf6ec2ba6b2a6f631b76fe51dd6e01cc32be4eb26", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9b66ac95845258e9740d37ac76c9f25bd7bc3883e8bf921bf7d22d36e4e57100", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "6345d4d8690a23a76b60dc48fd3178b5cfcaeccca4848f9a33ead0efb249ba83", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "1aed1f1fe18f6e7728e4cc2cfb91bf9dab34fc7ed5ceb750fe501a5d680782ba", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "e1a720eb4a58dc5046a45ce620aa3d9166527107603984e8bdbead3247cdba9d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "2fd0d4fedfe42374fe6e1311474dd04bd29975d64f94b3de1632273860a0f92d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "193288a0d747f07c832848b61994bdddf4169e98330d1c571ad59191588a3d58", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "a8ccc4cd83dd6074de8669403768b0f959ebf16146aa256be1dba0ffc1d224b3", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "59fdc5806b8871678ea05e7f28e1095a3af8b2eda05e48ff6224722ff593822c", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "d7f71fa576e042d51744d03d499249dbab8cc6953bf14afa2f3bca5e3e70f15a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "fd104a3941c8dcef857c14642fb078950d1d056460d00be38120b712322c8c9e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "5029563fa131521c72c239a6ea15b172aad13ed8fdd054ca1ecfeb240fda6188", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "b3f9ab66274ac9a682a1fa9a05c3a7d085d68accbbe4b5b5da619a710a844242", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "55c9e54304ed445a42ff1fac2375a7470e3774a40365ea72da1264cdbe3b9bfc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "bf665cb7482dbb2ef0fd8144b3bd4d507bd309b227d8f6d9670f896237aa7b24", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "4a417972ec531000f7b3042ae0fe463b51e8ab1b769c070602e2f3ccaaef7a63", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "70c4246dae2960a71a3932f78ad1f610e91b5ad2350f149f2f1906a925b85eec", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "56ce3507f357ccb019173c88c65110170d178f77d2a2d19d652099eff93e40bd", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "d9ede72a0258cbaccc167bbaf6ec2ba6b2a6f631b76fe51dd6e01cc32be4eb26", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "9b66ac95845258e9740d37ac76c9f25bd7bc3883e8bf921bf7d22d36e4e57100", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "6345d4d8690a23a76b60dc48fd3178b5cfcaeccca4848f9a33ead0efb249ba83", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "1aed1f1fe18f6e7728e4cc2cfb91bf9dab34fc7ed5ceb750fe501a5d680782ba", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "e1a720eb4a58dc5046a45ce620aa3d9166527107603984e8bdbead3247cdba9d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "2fd0d4fedfe42374fe6e1311474dd04bd29975d64f94b3de1632273860a0f92d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "193288a0d747f07c832848b61994bdddf4169e98330d1c571ad59191588a3d58", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "a8ccc4cd83dd6074de8669403768b0f959ebf16146aa256be1dba0ffc1d224b3", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "4d50acd3e21670fea33c6e5824d38cb698b4b22456a8bc1d71967e1a5578f711", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "6e8152f9d463035f662ff901e1577f7edc21707b9318cf59de93459e8b177e18", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "58a40a755a8ed452143909b14c27cc73f36343239c9d03fe011fa7f9109cac0d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "3412cc5d0b10e7e4bb5028e028890cee67b72c9f01647d649e5b805e0bf303df", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "39f80fae445b88c33c914858b62895ae4d2eb0abaf497a7e45edb547ce5314d3", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "328116499a621a029ef5372ed5771ad2249071fcb2e8ba68909ad5a47164c2b5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "3b66b1fbd4564b6179cb134986e5845a1f9c867764ec698ac545fa301c9f8663", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "8a1b08c189cd64d9139a9cd4eaccbbc8884b7bd0fd70e885925273099b1662c7", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "ce099c0aee1a79d47754e9474bf8ed31889467bac00d60d5a559c9223cd1323b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "9eaa860b1463437cd781d4d57be1e043f833950cf252030e1cea89f88a1361c2", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "0ff5a86f958b628463c38a64667c16900dd67ae75b5e78eadc9baf5d971b0660", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "b2db69cc98e1472f27f6a13ef2ce8476041ef2691d9007ef99e1c3f5938baef8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "80982eaa0b1b7c39f38d0afad1c41df7b9be84c90f137f57e52be220733cac81", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "2c255cece2cef0cad045d59babb2b1f13b9dac4b1972b5bd67c5f431838eeae1", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "8a7e607fe78cf8ccf400d02a52a5eb4227862f9ca521ae651dcf7e96308c8ebc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "d3bd03aaeec420b9a4fb9b81beab5ffa12503e691f70a93b826ed5d26832a82b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "a177f5c0336550d2242dcc22102178c42e2d2443b1f12dfd9c8dca7ed3354247", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "684c3cb5ecc22a477cd788d81bc35520f90a60c949100c2aff05e5fcb305ffb8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "4d50acd3e21670fea33c6e5824d38cb698b4b22456a8bc1d71967e1a5578f711", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "6e8152f9d463035f662ff901e1577f7edc21707b9318cf59de93459e8b177e18", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "58a40a755a8ed452143909b14c27cc73f36343239c9d03fe011fa7f9109cac0d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "3412cc5d0b10e7e4bb5028e028890cee67b72c9f01647d649e5b805e0bf303df", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "39f80fae445b88c33c914858b62895ae4d2eb0abaf497a7e45edb547ce5314d3", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "328116499a621a029ef5372ed5771ad2249071fcb2e8ba68909ad5a47164c2b5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "3b66b1fbd4564b6179cb134986e5845a1f9c867764ec698ac545fa301c9f8663", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "8a1b08c189cd64d9139a9cd4eaccbbc8884b7bd0fd70e885925273099b1662c7", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "ce099c0aee1a79d47754e9474bf8ed31889467bac00d60d5a559c9223cd1323b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "9eaa860b1463437cd781d4d57be1e043f833950cf252030e1cea89f88a1361c2", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "0ff5a86f958b628463c38a64667c16900dd67ae75b5e78eadc9baf5d971b0660", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "b2db69cc98e1472f27f6a13ef2ce8476041ef2691d9007ef99e1c3f5938baef8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "80982eaa0b1b7c39f38d0afad1c41df7b9be84c90f137f57e52be220733cac81", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "2c255cece2cef0cad045d59babb2b1f13b9dac4b1972b5bd67c5f431838eeae1", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "8a7e607fe78cf8ccf400d02a52a5eb4227862f9ca521ae651dcf7e96308c8ebc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "d3bd03aaeec420b9a4fb9b81beab5ffa12503e691f70a93b826ed5d26832a82b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "a177f5c0336550d2242dcc22102178c42e2d2443b1f12dfd9c8dca7ed3354247", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "684c3cb5ecc22a477cd788d81bc35520f90a60c949100c2aff05e5fcb305ffb8", "T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "771a67b59b1894d1a9ffb2bf8dccaf4b16b3c320a969749097c02dc47225616b", "T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "dd30c78625ba5865339a637e8162304e18da096ac0b6c66385df615d536f25fd", "T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "cf6e2f75443a6d0a64227c79d4f7fd3ebe3799697afc90932fbd87108b288f87", @@ -22794,17 +22794,17 @@ "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "cf6e2f75443a6d0a64227c79d4f7fd3ebe3799697afc90932fbd87108b288f87", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "cf6e2f75443a6d0a64227c79d4f7fd3ebe3799697afc90932fbd87108b288f87", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "cf6e2f75443a6d0a64227c79d4f7fd3ebe3799697afc90932fbd87108b288f87", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "d7f71fa576e042d51744d03d499249dbab8cc6953bf14afa2f3bca5e3e70f15a", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "9d59e0088f85783b4de689f7b30a9188bdc33488c4965c65c33456d25e681e6e", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "d219fc97f13c890987afe52be428bb313d08ccdf5408420ca2e036e293badd18", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "868c16ec5f59062ce8ca37c91efc93636425a1aa4dd30a4bc72a1a0f2707bd6e", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "f24f11422b81370c8b046e6b92fd85ebd952fa0002078874a40d585cd344e0fe", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "7052001fb3cc295144e858971b5648e01a6dc729964bf09953dd22431e077a56", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "f84cf0b5dc98d80580b323a6fc3118e99b4cae208e60d4cd7f9fd334b94f6b40", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "efb643a7a5760dea452b4ab95f8179f95a4ade3392fe87c5b12eea9b52878e53", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "650461c4f9a40483790b2ddc69f124ef76ce7e05165c771efd6d9ce30cc52419", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "d9ede72a0258cbaccc167bbaf6ec2ba6b2a6f631b76fe51dd6e01cc32be4eb26", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "63b0b2129eb4e2bd4df67b9a950656e4b4204787672075a187e0e7b179f4c17e", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "6e8152f9d463035f662ff901e1577f7edc21707b9318cf59de93459e8b177e18", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "ad76f2f1abace1b975f48507f06cb7d9c4be1bca853c4a23e8a39255d53c7dd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "4aae049a25008177abccbf7e20bfcf0e54fd9cd467ea3b14ed8b81a29cbed910", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "23489c3d587cf681d5e3b44508441f0065422043de61f14e4e7750b9945b2b6b", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "ba7d556011d5f89f5fcaedb54c436612deddca0377d781bbacf548e76f7e9884", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "cb036fa3814e452f0f6fa567d88489d7ca2a34acfd850a25e151de7f2fd4ac46", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "e24832bd6d2a888d40616edfde2ab5b0690fdef19cb63eb4f87e360c0363abd4", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "038aa9bca9c8dd16f65f20085f53d7a386ff41417e2632e727cb4623eb48bbd7", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "1b97f06107d375635f993cd086192d845885e2ed4c217b9121f7039a9f196206", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "0ff5a86f958b628463c38a64667c16900dd67ae75b5e78eadc9baf5d971b0660", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "b14de314c3a8911f32d0dbe5e3020e406a50b2e3c293a61e7e169c9ad07f0d8b", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "cf6e2f75443a6d0a64227c79d4f7fd3ebe3799697afc90932fbd87108b288f87", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "cf6e2f75443a6d0a64227c79d4f7fd3ebe3799697afc90932fbd87108b288f87", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "cf6e2f75443a6d0a64227c79d4f7fd3ebe3799697afc90932fbd87108b288f87", @@ -23667,9 +23667,9 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "65b72dc0e626b01cd1a10cdfe17e502ee4b719d0def041c2291678c39aac4467", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2fa8086f3540fa2320b0694246a5ba86d83b0dc42f99c5fe628c9d4e92775277", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "95d5dec333fb20cd896813174f01fb8dd895e0a662be8732cade012fb9578ba4", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "58ad90cf1ef9c04fb3b8c5e95c4f5d46157b03b9c1af82a4aaafb79e2f5a3689", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d2494644a4ded1092dff51cc653c5460dfc1bad7c2b689f88cb11fa56e51cb3c", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d40e6086933fd64c769cf75e056feb13105acb4d54c3b749f188c8152c4a74fe", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "eea7e26f5cd95b93fc761e7457db8bcb0ec9bb930e5544bcb5c60202987dfe41", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e52162ae9daac30bad2f4b123dd85ec666e68b88ee8705306e69edaa72c44364", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "462fe9164fd4940cb776fd3974a02589dcd8bf848882721752e46d174ef0163e", "T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "78ea4e94fffdbe86dca4a086d70c07a89d97549f7fd2547d0bfe5ce962791dc4", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "461644c9ceb90c828d94a6c25a8bff4f513313ca5a9a277d8249d7e15490ac5f", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "eb0d6ba5ad315c51d6b607a5e28d3e84e2d9a3b3f90d6c558f85de7fa99df2b7", @@ -24023,42 +24023,42 @@ "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "bc830837b8119993b31324113840f630e9332b189ebd01cf38dee938b09cc2cc", "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "b999eb3bc11b74a2c53c66d8f8c2e940d8df5c13576e158b1ef74599e3c54391", "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "48e197b87cb33448a3a77c1fcd161fc462f9e30d9528bc159ad33c28219c0584", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "c5124c176240925f4c1ebeb9e5f504992268ee83acb00d6bf1f0522d161235fd", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f4295b524b2d4b5b9f1980adff33cc93d8d202a354b49b9b44071c6832a283cf", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "2bca3d1a67cca409b3f910a407e7200b8637088b2c2a1a505a70284a7949e754", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "885b5830e355cb3591fd40e0e6d448ee5dac53767d09d3a4c27deca03d81ab52", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "ea5a122ffc93e3fcb6ad8f1474ef0929914867fba2816fc30131e952a4ea36b0", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "5e9b9bb331b96be53a16dcdfacbf24b1f7045959220e7d66cba9ee21b2ea33d7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "1be4602d81a6402041597c26e534fcf0c749733d91682b85ab34234491c27e74", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "bab4fd59b64121d9a5da3c4ee27f10396ceff57a31f60ef9c08190be0832857e", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "d9b86c324be4ba17227c9c3683680e2da4a046074691a3c7af943137365572a8", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "7e8ce672af2457501d07c114b18644a8bdef091dfc1f9111fa6350531b0f6f65", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "527117ccbe09695f5bff1c3212bddb1b360cb305cce2e570f219f5f358fe064b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "59b984095cb80d3347e6a2ce4878d60873dd75331895c953eaf3071e26d64b78", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "59a3c1ac86181438f5ed06d3211a3d26220ffda9be1c14e34f7435776d8d1871", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "451c576985f76f510da2e587a850a20687a41cb9840d9a1e6d3e1cd90d356bc3", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "45bd4ab9a5b2c25ea7a6b5064bd1f85634361f2c883c0699984ed4c5da47bad2", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "e0d5be3c73737935114117cac0d12fb5185a2d831c8e29f67fd8e2812a6b32b6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "ca54bd6f4cc0e581abef85028576b318f37a1b6cb7ba7b1470fc846cc4ca14b7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "66d1ef30eebc50c9375d1074bda35ca32f928f1d791189a4c5112744c35f6073", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "c5124c176240925f4c1ebeb9e5f504992268ee83acb00d6bf1f0522d161235fd", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f4295b524b2d4b5b9f1980adff33cc93d8d202a354b49b9b44071c6832a283cf", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "2bca3d1a67cca409b3f910a407e7200b8637088b2c2a1a505a70284a7949e754", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "885b5830e355cb3591fd40e0e6d448ee5dac53767d09d3a4c27deca03d81ab52", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "ea5a122ffc93e3fcb6ad8f1474ef0929914867fba2816fc30131e952a4ea36b0", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "5e9b9bb331b96be53a16dcdfacbf24b1f7045959220e7d66cba9ee21b2ea33d7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "1be4602d81a6402041597c26e534fcf0c749733d91682b85ab34234491c27e74", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "bab4fd59b64121d9a5da3c4ee27f10396ceff57a31f60ef9c08190be0832857e", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "d9b86c324be4ba17227c9c3683680e2da4a046074691a3c7af943137365572a8", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "7e8ce672af2457501d07c114b18644a8bdef091dfc1f9111fa6350531b0f6f65", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "527117ccbe09695f5bff1c3212bddb1b360cb305cce2e570f219f5f358fe064b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "59b984095cb80d3347e6a2ce4878d60873dd75331895c953eaf3071e26d64b78", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "59a3c1ac86181438f5ed06d3211a3d26220ffda9be1c14e34f7435776d8d1871", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "451c576985f76f510da2e587a850a20687a41cb9840d9a1e6d3e1cd90d356bc3", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "45bd4ab9a5b2c25ea7a6b5064bd1f85634361f2c883c0699984ed4c5da47bad2", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "e0d5be3c73737935114117cac0d12fb5185a2d831c8e29f67fd8e2812a6b32b6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "ca54bd6f4cc0e581abef85028576b318f37a1b6cb7ba7b1470fc846cc4ca14b7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "66d1ef30eebc50c9375d1074bda35ca32f928f1d791189a4c5112744c35f6073", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "d5dc41bb19337bfa7830f92860e1888a152a9f3b0bfefddaeda2389f23b1c5cf", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "6a4858cdb9e05cb8eb3a4737c15b8397fb57c613c45c26d1e89f66577bffbe24", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "8fafab491729963e363e3e47919f53b804d44a9fd7b5715c3c6acd2842459d8d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "016134a137c4634c90e0dec878d078af807a39b2afde4c3189a877fd754a4433", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "7284aec11ab9ca60c815f7089a3f4e9d4963d37c406ba264e0ecd344c7a14235", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "86ee7e6943b188e5b6b4370e1faf5286c89f3613e051493b1e1ea99999fb6b74", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "e05a6d378bb05789e3ef7897ab558aa01fc773f7258788158e7ec5aa38e6ea37", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "97bf07d28d3b638653326d46c2d9df8e1805567e39867ae13ed1c69810ceb649", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "59f5e67c2e64e2375c0758121bf031b3c8f554d4338b925d814675f30abd3629", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "c67ffaace6ac518389125ef5953082e005801ddeb84bd12b7745ca7047ef6d2c", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "1127f25a202adb1f6ab55edd3764deddda2f817b9b115fa5910012830f463c3c", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "250a7a584994b9c8f5fea4cdbd30eff58a7e391838fa7895f7f9427a940e4f81", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "9ae20f7fdd3f523f6ae6b2515903434dccc728907d4a77c8137172b950481f44", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "aeaa19ce39f1876ed46f1d57ca573798b2909699432229d4ac2c28ad40764ab9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "783ea1437083feb2b93a568b7db2ec7e75b64e0d177e0ff46188f1181f1b95b1", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "ab1721dfe593f42fcbf75b7645983aa84d992115071a1b511c85a300d5482b85", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "d8071d0a1d214605bab8c433b5e67bb940f7924b38bf046da19bb1e7ead055b0", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "5e168b8b4fbe9c16d2ef123b60b1d39c144fd41463732dc336be4bae57edb980", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "d5dc41bb19337bfa7830f92860e1888a152a9f3b0bfefddaeda2389f23b1c5cf", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "6a4858cdb9e05cb8eb3a4737c15b8397fb57c613c45c26d1e89f66577bffbe24", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "8fafab491729963e363e3e47919f53b804d44a9fd7b5715c3c6acd2842459d8d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "016134a137c4634c90e0dec878d078af807a39b2afde4c3189a877fd754a4433", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "7284aec11ab9ca60c815f7089a3f4e9d4963d37c406ba264e0ecd344c7a14235", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "86ee7e6943b188e5b6b4370e1faf5286c89f3613e051493b1e1ea99999fb6b74", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "e05a6d378bb05789e3ef7897ab558aa01fc773f7258788158e7ec5aa38e6ea37", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "97bf07d28d3b638653326d46c2d9df8e1805567e39867ae13ed1c69810ceb649", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "59f5e67c2e64e2375c0758121bf031b3c8f554d4338b925d814675f30abd3629", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "c67ffaace6ac518389125ef5953082e005801ddeb84bd12b7745ca7047ef6d2c", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "1127f25a202adb1f6ab55edd3764deddda2f817b9b115fa5910012830f463c3c", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "250a7a584994b9c8f5fea4cdbd30eff58a7e391838fa7895f7f9427a940e4f81", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "9ae20f7fdd3f523f6ae6b2515903434dccc728907d4a77c8137172b950481f44", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "aeaa19ce39f1876ed46f1d57ca573798b2909699432229d4ac2c28ad40764ab9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "783ea1437083feb2b93a568b7db2ec7e75b64e0d177e0ff46188f1181f1b95b1", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "ab1721dfe593f42fcbf75b7645983aa84d992115071a1b511c85a300d5482b85", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "d8071d0a1d214605bab8c433b5e67bb940f7924b38bf046da19bb1e7ead055b0", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "5e168b8b4fbe9c16d2ef123b60b1d39c144fd41463732dc336be4bae57edb980", "T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "20faacec3fbdb21ddc38bddc080c033625e38300965e1b34d438273fb96f5bd3", "T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "f090d465dd0ab105b8925ae1590e9021778d20822574fc853a1a9360ae77ee3a", "T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "133bae24a65426ab6f29b12ba1ea0998096e511df637194e27eac3fad505c98f", @@ -24159,17 +24159,17 @@ "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "133bae24a65426ab6f29b12ba1ea0998096e511df637194e27eac3fad505c98f", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "133bae24a65426ab6f29b12ba1ea0998096e511df637194e27eac3fad505c98f", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "133bae24a65426ab6f29b12ba1ea0998096e511df637194e27eac3fad505c98f", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f4295b524b2d4b5b9f1980adff33cc93d8d202a354b49b9b44071c6832a283cf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "8e54c8baf7e12882f0657cc50f9f9863dd8d04fe0c4098af5850a04956bdf2e7", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "fa3435aba69a31a247d3b505fed955264b4abdcbaaa87b2488b08a356e2a0a51", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "cd75dc9c13d55e248abcb6e1dd7fd53cd9233056709d0ae671cb216df331e457", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "72bdd789a24ab74d9c1162f6a89eceb4266b85098f94c3e7047bec3df4769ef1", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "221c65595708c1eb6689a3e64122206aa7738416b2cea23f636092c50544b2a7", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "2822ece5d9bbe378d4985ec39081fdbd5f31912e9277755a53932adc8867efa5", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "4dcaf83b8802c48969449a754c86ebd06b774c586c7a8197b63aaa33955b49ae", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "3c823ef4baa092d69b899f31f0db913e8173e43bf34fb36af75a4d21edabe69a", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "527117ccbe09695f5bff1c3212bddb1b360cb305cce2e570f219f5f358fe064b", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "8f9cb30c2f9838175f340a1b68a421987391ac88117e7c21b36eff3aeb3a9ae1", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "6a4858cdb9e05cb8eb3a4737c15b8397fb57c613c45c26d1e89f66577bffbe24", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "2f25a96c47ffd9f5a64d3c61759c64cd72818f9a75b2f2a21131fa6b9db1c003", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "86c8406cc801d22ee60171e26176d4b5155134bff89f56b6ac99bb996d8724b3", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "baf78c5b8d7f71f2f96ec740d2ceb4c1de74b28d6e89c42a24e70cc428d89762", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "e603efe33fea189f65e1a1d93a2465055c82b9e4791dae039757efb4bfe2f6be", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "72bb2b49c65762eb3da0d4939b8ccd7ca00e536f6f60b7d25df87bbef6bc0df4", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "afdce404d263c187901c369a76fda456311473e58d3911861416492da1b06dea", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "c61d07394b5055ef3b5a087cde8c46e0c70009af4fff960d6437048add49e6f0", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "d82185d110aa9d1414e84deb67f76ff1c3ec080c4d08f9e561a6b60d6af3da83", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "1127f25a202adb1f6ab55edd3764deddda2f817b9b115fa5910012830f463c3c", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "e447cbd8e20feeb5be816027095d9473a323b39f91e6803e99176a7b2ff8faf0", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "133bae24a65426ab6f29b12ba1ea0998096e511df637194e27eac3fad505c98f", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "133bae24a65426ab6f29b12ba1ea0998096e511df637194e27eac3fad505c98f", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "133bae24a65426ab6f29b12ba1ea0998096e511df637194e27eac3fad505c98f", @@ -25032,9 +25032,9 @@ "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "cf85f9662879c47ee1176ed351f15b7a482e5d7bf2a9ab8972ccacf972f2dc6e", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "440d86f4b78fb4094443ff0b3e8a063578feebbc9f416bf180e126dca5de26c1", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "83c97e23837dac456d22b2e1f3d68c4dfe7d294a70d55ea9ea61892472c45a64", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "442dc40def8e7b659085a58e305de05012e537c7d98c736f6843139924f84f38", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8eda3dde305e87b609f69f982430df6ea48c2f9c5deef16a1b28e6b6ac7142dd", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "6bf9a6257a77150eca8b7b6ef0eaa5689207380425e5a8ef99a3ded60a4bf982", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "fdd61d1fa70a58164bc4e0b68ae477a3edf0a1396bb53a09fc5dde6e66cf5b54", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "485032dde176a0a6365df402618ecf2f2ed6390863d39e3457b7c5c5edb801ad", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b900d887e229bf75bb5e71ecccff284171f1071114d37f6da161e7ac078a750f", "T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7c4254af6d21a13399ae833f4bf0bc94ee92d4e55341663e179847941372afb0", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "987ca659e9ddd4778723bb533854ca3aee6d19a0019cf41c8a4f9f172ba01995", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "54edd60fbf77c512a6892df4ebb5616e17a86fbe5128213347846f8233552933", @@ -25388,42 +25388,42 @@ "T3T1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "c2f4f1ea1dfeef5e43f1437c1d5af8651b418923817afcea6bbcba5ec15c6c4a", "T3T1_pt_bitcoin-test_bcash.py::test_send_bch_nochange": "0ab3efb4c065874ff1a7492467595f45b69a20d5625743b19a8c273cdbd10a6d", "T3T1_pt_bitcoin-test_bcash.py::test_send_bch_oldaddr": "45777ba9bc32b38c81a768ab3bc81023420ae28db31075ca71e37b523e064da3", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "6b8f8c6e016e9045ca55a35fd4dde6c34fb618273bc3c010abe134b8ab9b8488", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f3b5a8221fd261485c241a67f9b3146a49f16795466f865db167e9ce4ef25cbe", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cf2c39678c8b6ad9c45a725f6b9482007a0ad933356ebae3e8bb37b1701681ce", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d6386b779a70c4f4327f285961caa9254b13d08a35e22b6cfa0f26f6f325c1a0", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "c505dff13f08947f607adc8b005a3d51c5649a0e96310529a8444932c90669a8", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "187c154bdb478a6540612f8067eb98e059ff2947fccc4292e973b9762dd4dcfe", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "c6e8754e5a65af1574206c37fb26da0ac1de91cf8c623f30444d3c4d48e6904f", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "555eefe1368afd631bcd55402b9e12a5c0b24386d14a63fc952068f75cd82489", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "8670c971864c302778d3675606c9cd0050d337d9eabccaadbeb24937897bc8b5", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "1ffb3160b88dea8c1f616a4a6a8857f2c4b37a3d3ae6d0c6beec167c8a290625", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "831d695a2976e010862a0bd0e4ea6890b2da110ec8bc49e8bbf047a67e3af6d2", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "6e46c7ae9caa219a59038bbcacd99abba5236a5fc790e906ef745486ddc6c55c", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2e1c814fa87ad26d7711d43d90192825f38687d1ea41c3db00049a480b30a02e", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "cf585cddad4d269f5f914e49c11461148dfe47ca5a711bad5f05027091aad6ad", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "df368277e59575c23f9466275bda2a9690e4c4ff9cd411976f331487ab3564bb", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "863bf1fff7c5f1291ca9d5c351f736805b7d272097e24b695911da920326910c", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "2b0a219da26d4da30b6c69b41917cad9137e8a9d25429f0b40f070b56e6220b0", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "1fde31332c978299484b5bd460cd821d35a23d2091af7d69f62ec150b57d4895", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "6b8f8c6e016e9045ca55a35fd4dde6c34fb618273bc3c010abe134b8ab9b8488", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f3b5a8221fd261485c241a67f9b3146a49f16795466f865db167e9ce4ef25cbe", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "cf2c39678c8b6ad9c45a725f6b9482007a0ad933356ebae3e8bb37b1701681ce", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d6386b779a70c4f4327f285961caa9254b13d08a35e22b6cfa0f26f6f325c1a0", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "c505dff13f08947f607adc8b005a3d51c5649a0e96310529a8444932c90669a8", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "187c154bdb478a6540612f8067eb98e059ff2947fccc4292e973b9762dd4dcfe", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "c6e8754e5a65af1574206c37fb26da0ac1de91cf8c623f30444d3c4d48e6904f", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "555eefe1368afd631bcd55402b9e12a5c0b24386d14a63fc952068f75cd82489", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "8670c971864c302778d3675606c9cd0050d337d9eabccaadbeb24937897bc8b5", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "1ffb3160b88dea8c1f616a4a6a8857f2c4b37a3d3ae6d0c6beec167c8a290625", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "831d695a2976e010862a0bd0e4ea6890b2da110ec8bc49e8bbf047a67e3af6d2", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "6e46c7ae9caa219a59038bbcacd99abba5236a5fc790e906ef745486ddc6c55c", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2e1c814fa87ad26d7711d43d90192825f38687d1ea41c3db00049a480b30a02e", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "cf585cddad4d269f5f914e49c11461148dfe47ca5a711bad5f05027091aad6ad", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "df368277e59575c23f9466275bda2a9690e4c4ff9cd411976f331487ab3564bb", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "863bf1fff7c5f1291ca9d5c351f736805b7d272097e24b695911da920326910c", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "2b0a219da26d4da30b6c69b41917cad9137e8a9d25429f0b40f070b56e6220b0", -"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "1fde31332c978299484b5bd460cd821d35a23d2091af7d69f62ec150b57d4895", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "4196383c1fd40e27988e5683a148b77095f4a1c46b9bd6ff9e916a218037c1ac", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "827bd653f3a018bd8c0923f5fa46bf03a65d0a9f7866a9be1c2280299b0ccdc6", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "5d4927657d31fc67f8f513a929cc822e915ee099f4f03bbbb619dfb1f09f6ec4", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "cd370f1a1a8b3a09ce014c242f805d82798f402710e9625abc0f90d294d5c4cd", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "6bb8019542364162956aecd7aa0657625825f82230d11182d5e5814726515daa", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "f089d5d8f5ad3282bfbe0935cb88ddde5acf45977bdcd01c9f9aa38b274eaeca", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "b3d30add8851afb33ab5e456926da9419ad5da2a65bfbda270469c56ab625787", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "4f21c488fc456449487b36f5d8f44a2943cf9d07b0bdd1a7032b952b810e86e2", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "dfc279e9d57c4d54e94fcefbd0eba7dff06563f7a1cfaf19cc80ee2d1d9cc5df", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "d63395e03eaf661bca1bb8257e4c74b8937f1ca14f114fcabb539678a63b6aa4", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "4abb6791b0611adada899eac8868b25cc500c287b8e0caa5e5d71ef011b872e0", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "580223b492af393a6e6f5d75bfd00ee328cb987f8dadf806a2b0c9deb0341842", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "22f23d059b08a4d5962264457dc897feb389f6785aa97a082eb51dfdaa78318f", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "db2b0abcb10adb525272bf1e78f834291a818194c6359a04f8936d6b5891de82", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "4b321540967f7f28042b04da494ff6e16bc06af7572d282e6971a67a11799ca4", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5856eeed48592a972681d6d8de2e47164dc44924f2ffd2b6ef9188084e497c20", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "20c907d96bb707ee0d1f1e80ec863ccd07d3294ef9aecfee6726c8d66f93b4aa", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "360af2558fec2d9567cf8526143dc4db71fad117f9d331c513de066f5663364e", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "4196383c1fd40e27988e5683a148b77095f4a1c46b9bd6ff9e916a218037c1ac", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "827bd653f3a018bd8c0923f5fa46bf03a65d0a9f7866a9be1c2280299b0ccdc6", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "5d4927657d31fc67f8f513a929cc822e915ee099f4f03bbbb619dfb1f09f6ec4", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "cd370f1a1a8b3a09ce014c242f805d82798f402710e9625abc0f90d294d5c4cd", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "6bb8019542364162956aecd7aa0657625825f82230d11182d5e5814726515daa", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "f089d5d8f5ad3282bfbe0935cb88ddde5acf45977bdcd01c9f9aa38b274eaeca", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "b3d30add8851afb33ab5e456926da9419ad5da2a65bfbda270469c56ab625787", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "4f21c488fc456449487b36f5d8f44a2943cf9d07b0bdd1a7032b952b810e86e2", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "dfc279e9d57c4d54e94fcefbd0eba7dff06563f7a1cfaf19cc80ee2d1d9cc5df", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "d63395e03eaf661bca1bb8257e4c74b8937f1ca14f114fcabb539678a63b6aa4", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "4abb6791b0611adada899eac8868b25cc500c287b8e0caa5e5d71ef011b872e0", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "580223b492af393a6e6f5d75bfd00ee328cb987f8dadf806a2b0c9deb0341842", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "22f23d059b08a4d5962264457dc897feb389f6785aa97a082eb51dfdaa78318f", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "db2b0abcb10adb525272bf1e78f834291a818194c6359a04f8936d6b5891de82", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "4b321540967f7f28042b04da494ff6e16bc06af7572d282e6971a67a11799ca4", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5856eeed48592a972681d6d8de2e47164dc44924f2ffd2b6ef9188084e497c20", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "20c907d96bb707ee0d1f1e80ec863ccd07d3294ef9aecfee6726c8d66f93b4aa", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "360af2558fec2d9567cf8526143dc4db71fad117f9d331c513de066f5663364e", "T3T1_pt_bitcoin-test_firo.py::test_spend_lelantus": "faa97731a0438f357922303169421514c1719380d566612feee665b30f48494a", "T3T1_pt_bitcoin-test_fujicoin.py::test_send_p2tr": "625d13072723e54cd954a67b7e745dc41d77df5d8609275078d3da2d5f2eec36", "T3T1_pt_bitcoin-test_getaddress.py::test_address_mac": "e8eb9b57d62689b40a58c053da11694819eb927d8b82b505c6487505cb60a889", @@ -25524,17 +25524,17 @@ "T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "e8eb9b57d62689b40a58c053da11694819eb927d8b82b505c6487505cb60a889", "T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "e8eb9b57d62689b40a58c053da11694819eb927d8b82b505c6487505cb60a889", "T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "e8eb9b57d62689b40a58c053da11694819eb927d8b82b505c6487505cb60a889", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f3b5a8221fd261485c241a67f9b3146a49f16795466f865db167e9ce4ef25cbe", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "48117b2990bfe14712fa41e4d3c17914be025d32e5b48a7140ebcb24626d7385", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "a1f2457a4e1a8398452179605fe0f906157e5f2c9f2996c4fa338a20c390a84c", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "eda5d0b99ce3a7dd13db5e29edfa8b26ff9607af4966ccf56f9109b720ab5788", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "905c5761bf7de58434e671ae35df455e2b9efe4aade283932d84621254382056", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "04ee45ee0e077e929f0266d83fb9ebac9d6d80e2dc069eb708c46a2df7baa494", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "be068b04fa765bb0d29fdae59832dbee6695531eff773b129117afb72441195d", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "91d6a26c39a77106b6932fd6368a9afd0899ce267a640dc7af3ff2d6cc4b87cb", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "f8dd69cbfcb1d33c4741b879ad2cc971af4d3ea8d536cdea74bf25596a6cb5e9", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "831d695a2976e010862a0bd0e4ea6890b2da110ec8bc49e8bbf047a67e3af6d2", -"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "21e1674bd9d4409abfdc752001ffb4bc7d7fe561a7254b1b89ae1a5744790e96", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "827bd653f3a018bd8c0923f5fa46bf03a65d0a9f7866a9be1c2280299b0ccdc6", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "5d0747529784abf659fd5a59f5d16c0b4e72dce207566ae93e614249f0f7d93a", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "4201819111130ebd628f1ebdb64affe710aba5a1eff7630e272b5f11f8dbcb80", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "6d2e9348e6e08fa8285f706add10c63578743f37e415934bcfb78147177f52b1", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "50587bfd55f21b6169223eaeba15413631d4f4e248c938f039ba80cca9267a49", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "ca5e50a261813a2f66dd193889d2487b22f762778eaccf2c644bf5b15a2c0936", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "87558a8e04ce7f270d5e7715a76f2e9bf5a0acad8d452dce9f9610288c010390", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "689247a1c0992f4265e5f16e61ab834ab96956ed424f0035a2f29b0c059eebec", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "5c1d3c45b7146410b05ce0c149e2fe7eec4d1cb13a8457e5719fef039ed38469", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "4abb6791b0611adada899eac8868b25cc500c287b8e0caa5e5d71ef011b872e0", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "a75e1839da4d412c2c9b0f2754fc8dfc5125618bcb00580be3d5b58005ecd675", "T3T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "e8eb9b57d62689b40a58c053da11694819eb927d8b82b505c6487505cb60a889", "T3T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "e8eb9b57d62689b40a58c053da11694819eb927d8b82b505c6487505cb60a889", "T3T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "e8eb9b57d62689b40a58c053da11694819eb927d8b82b505c6487505cb60a889", @@ -26397,9 +26397,9 @@ "T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d3094a7bfe99a6e43fc4c8b0737cda14c05036f2bb85014b4cac7321cfd64721", "T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "b9eb80ed8911576fbc76d04c33017f2b93e8f2b82df0077b138d2653c3b7586e", "T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "d5d64147b0609ae0a2d74e9f3332d2dcff0e19cac19a38b0e0e9854c881a506f", -"T3T1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "92ca8fe1b61e708565004a15231a92726448506f215c8e924c8aaa1ec54eef9f", -"T3T1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "c0fc013ecc05514b29ac6051693616b5a7dbb96fc257c7573140d484bdd353af", -"T3T1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ed93521cc7c9409aef049567ccc33849768dafd7029e62b0cb17980289e64839", +"T3T1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "eb0e437fd18696308f907553654ee7508891f6f13d38bf533a2888231a9e1fad", +"T3T1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9994ad9c69290d029eca5143628ec5ea63365330a9dff7fa1b38b8a063dbe33f", +"T3T1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4b19a8e942bae424636e5af2552c6da6ae224d42d98da8687bb3f4e84c02cbe8", "T3T1_pt_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "15902fb8d7b4df90ad511d20b0e4c7b92e9255d3b6133b3b7ea26f7d5834d0ab", "T3T1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "aca92fd3b9b5a05dcd74a0a5d6824ff6af05904a706880434214c5fca7b662ea", "T3T1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0d3a6d8b6ef0de0cd098a2552a6e4b0f777814a7a68d8d840b9f4be3ece35584",