diff --git a/.github/workflows/build_and_functional_tests.yml b/.github/workflows/build_and_functional_tests.yml index e0d280a5b..974ee5fb7 100644 --- a/.github/workflows/build_and_functional_tests.yml +++ b/.github/workflows/build_and_functional_tests.yml @@ -23,7 +23,7 @@ jobs: uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1 with: upload_app_binaries_artifact: "ragger_elfs" - flags: "DEBUG=1 CAL_TEST_KEY=1 DOMAIN_NAME_TEST_KEY=1 SET_PLUGIN_TEST_KEY=1 NFT_TEST_KEY=1" + flags: "CAL_TEST_KEY=1 DOMAIN_NAME_TEST_KEY=1 SET_PLUGIN_TEST_KEY=1 NFT_TEST_KEY=1" ragger_tests: name: Run ragger tests using the reusable workflow @@ -31,3 +31,22 @@ jobs: uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_ragger_tests.yml@v1 with: download_app_binaries_artifact: "ragger_elfs" + + build_clone_app: + name: Build Clone app using the reusable workflow + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1 + with: + flags: "CHAIN=thundercore" + upload_app_binaries_artifact: "clone_elfs" + + ragger_clone_tests: + name: Run ragger Clone tests using the reusable workflow + needs: + - build_application + - build_clone_app + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_ragger_tests.yml@v1 + with: + download_app_binaries_artifact: "ragger_elfs" + additional_app_binaries_artifact: "clone_elfs" + additional_app_binaries_artifact_dir: ./tests/ragger/.test_dependencies/clone/build/ + test_options: "--with_lib_mode" diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml deleted file mode 100644 index 29cf364b8..000000000 --- a/.github/workflows/ci-workflow.yml +++ /dev/null @@ -1,137 +0,0 @@ ---- -name: Tests (Speculos and Zemu) - -on: - workflow_dispatch: - push: - branches: - - master - - develop - pull_request: - -jobs: - - # ===================================================== - # ZEMU TESTS - # ===================================================== - - building_for_e2e_zemu_tests: - name: Building binaries for E2E Zemu tests - runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest - - steps: - - uses: actions/checkout@v4 - - - name: Build testing binaries - run: | - git config --global --add safe.directory "$GITHUB_WORKSPACE" - cd tests/zemu/ && ./build_local_test_elfs.sh - - - name: Upload app binaries - uses: actions/upload-artifact@v4 - with: - name: e2e_zemu_elfs - path: ./tests/zemu/elfs/ - - jobs-e2e-zemu-tests: - name: E2E Zemu tests - needs: [building_for_e2e_zemu_tests] - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install additional tools - run: sudo apt-get update -y && sudo apt-get install -y libusb-1.0.0 libudev-dev - - - name: Install NodeJS - uses: actions/setup-node@v3 - with: - node-version: "16" - - - name: Install yarn - run: npm install -g yarn - - - name: Build/Install build js deps - run: cd tests/zemu/ && yarn install - - - name: Create tmp folder for artifacts - run: mkdir tests/zemu/elfs - - - name: Download app binaries - uses: actions/download-artifact@v4 - with: - path: tmp/ - - - name: Gather elfs - run: cp tmp/e2e_zemu_elfs/*.elf tests/zemu/elfs/ - - - name: Run zemu tests - run: cd tests/zemu/ && yarn test - - # ===================================================== - # SPECULOS TESTS - # ===================================================== - - - building_for_e2e_speculos_tests: - name: Building binaries for E2E Speculos tests - runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest - - steps: - - uses: actions/checkout@v4 - - - name: Build testing binaries - run: | - mkdir tests/speculos/elfs - make clean && make -j DEBUG=1 NFT_STAGING_KEY=1 BOLOS_SDK=$NANOS_SDK && mv bin/app.elf tests/speculos/elfs/nanos.elf - make clean && make -j DEBUG=1 NFT_STAGING_KEY=1 BOLOS_SDK=$NANOX_SDK && mv bin/app.elf tests/speculos/elfs/nanox.elf - make clean && make -j DEBUG=1 NFT_STAGING_KEY=1 BOLOS_SDK=$NANOSP_SDK && mv bin/app.elf tests/speculos/elfs/nanosp.elf - - - name: Upload app binaries - uses: actions/upload-artifact@v4 - with: - name: e2e_speculos_elfs - path: ./tests/speculos/elfs - - - jobs-e2e-speculos-tests: - name: Speculos tests - strategy: - fail-fast: false - matrix: - model: ["nanosp", "nanos", "nanox"] - - needs: [building_for_e2e_speculos_tests] - runs-on: ubuntu-latest - - steps: - - name: Clone - uses: actions/checkout@v4 - - - name: Create tmp folder for artifacts - run: mkdir tests/speculos/elfs - - - name: Download app binaries - uses: actions/download-artifact@v4 - with: - path: tmp/ - - - name: Gather elfs - run: cp tmp/e2e_speculos_elfs/*.elf tests/speculos/elfs/ - - - name: Install dependencies - run: | - cd tests/speculos - sudo apt-get update && sudo apt-get install -y qemu-user-static - pip install -r requirements.txt - - - name: Run speculos tests - run: | - cd tests/speculos - pytest --model ${{ matrix.model }} --path ./elfs/${{ matrix.model }}.elf --display headless diff --git a/README.md b/README.md index 7a71b1af3..7cc7fc75e 100644 --- a/README.md +++ b/README.md @@ -25,16 +25,15 @@ - [About the project](#about-the-project) - [Documentation](#documentation) - [Plugins](#plugins) -- [Testing](#testing) - - [Requirements](#requirements) - - [Build the applications required by the test suite](#build-the-applications-required-by-the-test-suite) - - [Running all tests](#running-all-tests) - - [With Makefile](#with-makefile) - - [With yarn](#with-yarn) - - [Running a specific test](#running-a-specific-test) - - [Adding tests](#adding-tests) - - [Zemu](#zemu) - - [Update binaries](#update-binaries) +- [Quick start guide](#quick-start-guide) + - [With VSCode](#with-vscode) + - [With a terminal](#with-a-terminal) +- [Compilation and load](#compilation-and-load) + - [Compilation](#compilation) + - [Loading on a physical device](#loading-on-a-physical-device) +- [Tests](#tests) + - [Functional Tests (Ragger based)](#functional-tests-ragger-based) + - [Unit Tests](#unit-tests) - [Contributing](#contributing) @@ -60,94 +59,201 @@ Find the documentations here: - [Plugin guide](https://hackmd.io/300Ukv5gSbCbVcp3cZuwRQ) - [Boilerplate plugin](https://github.com/LedgerHQ/app-plugin-boilerplate) -## Testing +## Quick start guide -Testing is done via the open-source framework [zemu](https://github.com/Zondax/zemu). +### With VSCode -### Requirements +You can quickly setup a convenient environment to build and test your application by using +[Ledger's VSCode developer tools extension](https://marketplace.visualstudio.com/items?itemName=LedgerHQ.ledger-dev-tools) +which leverages the [ledger-app-dev-tools](https://github.com/LedgerHQ/ledger-app-builder/pkgs/container/ledger-app-builder%2Fledger-app-dev-tools) +docker image. -- [nodeJS == 16](https://github.com/nvm-sh/nvm) -- [yarn](https://classic.yarnpkg.com/lang/en/docs/install/#debian-stable) -- [build environment](https://github.com/LedgerHQ/ledger-app-builder/blob/master/Dockerfile) +It will allow you, whether you are developing on macOS, Windows or Linux, +to quickly **build** your apps, **test** them on **Speculos** and **load** them on any supported device. -#### Build the applications required by the test suite +- Install and run [Docker](https://www.docker.com/products/docker-desktop/). +- Make sure you have an X11 server running: + - On Ubuntu Linux, it should be running by default. + - On macOS, install and launch [XQuartz](https://www.xquartz.org/) + (make sure to go to XQuartz > Preferences > Security and check "Allow client connections"). + - On Windows, install and launch [VcXsrv](https://sourceforge.net/projects/vcxsrv/) + (make sure to configure it to disable access control). +- Install [VScode](https://code.visualstudio.com/download) and add [Ledger's extension](https://marketplace.visualstudio.com/items?itemName=LedgerHQ.ledger-dev-tools). +- Open a terminal and clone `app-ethereum` with `git clone git@github.com:LedgerHQ/app-ethereum.git`. +- Open the `app-ethereum` folder with VSCode. +- Use Ledger extension's sidebar menu or open the tasks menu with `ctrl + shift + b` + (`command + shift + b` on a Mac) to conveniently execute actions: + - Build the app for the device model of your choice with `Build`. + - Test your binary on [Speculos](https://github.com/LedgerHQ/speculos) with `Run with Speculos`. + - You can also run functional tests, load the app on a physical device, and more. -1. Add your BOLOS SDKs path to: +> The terminal tab of VSCode will show you what commands the extension runs behind the scene. - `NANOS_SDK` and `NANOX_SDK` +### With a terminal -2. Go to the `tests` folder and run `./build_local_test_elfs.sh` +The [ledger-app-dev-tools](https://github.com/LedgerHQ/ledger-app-builder/pkgs/container/ledger-app-builder%2Fledger-app-dev-tools) +docker image contains all the required tools and libraries to **build**, **test** and **load** an application. - ```sh - cd tests - # This helper script will build the applications required by the test suite and move them at the right place. - yarn install - ./build_local_test_elfs.sh - ``` +You can download it from the ghcr.io docker repository: -### Running all tests +```shell +sudo docker pull ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest +``` + +You can then enter this development environment by executing the following command +from the root directory of the application `git` repository: + +#### Linux (Ubuntu) + +```shell +sudo docker run --rm -ti --user "$(id -u):$(id -g)" --privileged -v "/dev/bus/usb:/dev/bus/usb" -v "$(realpath .):/app" ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest +``` + +#### macOS + +```shell +sudo docker run --rm -ti --user "$(id -u):$(id -g)" --privileged -v "$(pwd -P):/app" ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest +``` + +#### Windows (with PowerShell) + +```shell +docker run --rm -ti --privileged -v "$(Get-Location):/app" ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest +``` -#### With Makefile +The application's code will be available from inside the docker container, +you can proceed to the following compilation steps to build your app. -1. Then you can install and run tests by simply running on the `root` of the repo: +## Compilation and load - ```sh - make test - # This will run `make install_tests` and `make run_tests` - ``` +To easily setup a development environment for compilation and loading on a physical device, you can use the [VSCode integration](#with-vscode) +whether you are on Linux, macOS or Windows. -#### With yarn +If you prefer using a terminal to perform the steps manually, you can use the guide below. -1. Go to the `tests` folder and run: +### Compilation - ```sh - yarn test - ``` +Setup a compilation environment by following the [shell with docker approach](#with-a-terminal). -### Running a specific test +From inside the container, use the following command to build the app: -1. Go to the `tests` folder and run: +```shell +make DEBUG=1 # compile optionally with PRINTF +``` + +You can choose which device to compile and load for by setting the `BOLOS_SDK` environment variable to the following values: + +- `BOLOS_SDK=$NANOS_SDK` +- `BOLOS_SDK=$NANOX_SDK` +- `BOLOS_SDK=$NANOSP_SDK` +- `BOLOS_SDK=$STAX_SDK` - ```sh - yarn jest --runInBand --detectOpenHandles {YourTestFile} - ``` +### Loading on a physical device -2. For example with the `send test`: +This step will vary slightly depending on your platform. - ```sh - yarn jest --runInBand --detectOpenHandles src/send.test.js - ``` +> Your physical device must be connected, unlocked and the screen showing the dashboard (not inside an application). -### Adding tests +#### Linux (Ubuntu) -#### Zemu +First make sure you have the proper udev rules added on your host. +See [udev-rules](https://github.com/LedgerHQ/udev-rules) -To add tests, copy one of the already existing test files in `tests/src/`. -You then need to adapt the `buffer` and `tx` variables to adapt to the APDU you wish to send. +Then once you have [opened a terminal](#with-a-terminal) in the `app-builder` image and [built the app](#compilation-and-load) +for the device you want, run the following command: -- Adapt the expected screen flow. Please create a folder under `tests/snapshots` with the name of the test you're performing. -- Then adapt the `ORIGINAL_SNAPSHOT_PATH_PREFIX` with the name of the folder you just created. -- To create the snapshots, modify the `SNAPSHOT_PATH_PREFIX` and set it to be equal to `ORIGINAL_SNAPSHOT_PATH_PREFIX`. -- Run the tests once, this will create all the snapshots in the folder you created. -- Put back your `SNAPSHOT_PATH_PREFIX` to `snapshots/tmp/`. +```shell +# Run this command from the app-builder container terminal. +make load # load the app on a Nano S by default +``` + +[Setting the BOLOS_SDK environment variable](#compilation-and-load) will allow you to load +on whichever supported device you want. -Finally make sure you adapt the expected signature! +#### macOS / Windows (with PowerShell) -#### Update binaries +> It is assumed you have [Python](https://www.python.org/downloads/) installed on your computer. -Don't forget to update the binaries in the test folder. To do so, compile with those environment variables: +Run these commands on your host from the app's source folder once you have [built the app](#compilation-and-load) +for the device you want: -```sh -make DEBUG=1 ALLOW_DATA=1 +```shell +# Install Python virtualenv +python3 -m pip install virtualenv +# Create the 'ledger' virtualenv +python3 -m virtualenv ledger ``` -Then copy the binary to the `tests/elfs` folder (in this case, compiled with SDK for nanoS): +Enter the Python virtual environment + +- macOS: `source ledger/bin/activate` +- Windows: `.\ledger\Scripts\Activate.ps1` -```sh -cp bin/app.elf tests/elfs/ethereum_nanos.elf +```shell +# Install Ledgerblue (tool to load the app) +python3 -m pip install ledgerblue +# Load the app. +python3 -m ledgerblue.runScript --scp --fileName bin/app.apdu --elfFile bin/app.elf ``` -Repeat the operation for a binary compiled with nanoX SDK and change for `ethereum_nanox.elf`. +## Tests + +The Ethereum app comes with different tests: + +- Functional Tests implemented with Ledger's [Ragger](https://github.com/LedgerHQ/ragger) test framework. +- Unit Tests, allowing to test basic simple functions + +### Functional Tests (Ragger based) + +#### Linux (Ubuntu) + +On Linux, you can use [Ledger's VS Code extension](#with-vscode) to run the tests. +If you prefer not to, open a terminal and follow the steps below. + +Install the tests requirements: + +```shell +pip install -r tests/ragger/requirements.txt +``` + +Then you can: + +Run the functional tests (here for nanos but available for any device once you have built the binaries): + +```shell +pytest tests/ragger/ --tb=short -v --device nanos +``` + +Please see the corresponding ducomentation [USAGE](tests/ragger/usage.md) + +Or run your app directly with Speculos + +```shell +speculos --model nanos build/nanos/bin/app.elf +``` + +#### macOS / Windows + +To test your app on macOS or Windows, it is recommended to use [Ledger's VS Code extension](#with-vscode) +to quickly setup a working test environment. + +You can use the following sequence of tasks and commands (all accessible in the **extension sidebar menu**): + +- `Select build target` +- `Build app` + +Then you can choose to execute the functional tests: + +- Use `Run tests`. + +Or simply run the app on the Speculos emulator: + +- `Run with Speculos`. + +### Unit Tests + +Those tests are available in the directory `tests/unit`. Please see the corresponding [README](tests/unit/README.md) +to compile and run them. ## Contributing diff --git a/client/CHANGELOG.md b/client/CHANGELOG.md index b20c1b49c..b67daf09f 100644 --- a/client/CHANGELOG.md +++ b/client/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.4.1] - 2024-04-05 + +### Added + +- Add new function `send_raw`, allowing to send a raw payload APDU +- Add new error code definition + ## [0.4.0] - 2024-04-03 ### Added diff --git a/client/src/ledger_app_clients/ethereum/__init__.py b/client/src/ledger_app_clients/ethereum/__init__.py index ce05207b0..1f628c4fb 100644 --- a/client/src/ledger_app_clients/ethereum/__init__.py +++ b/client/src/ledger_app_clients/ethereum/__init__.py @@ -1,4 +1,4 @@ try: - from ledger_app_clients.ethereum.__version__ import __version__ # noqa + from __version__ import __version__ # noqa except ImportError: __version__ = "unknown version" # noqa diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index 3e1feaa5c..52dc06ffe 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -21,6 +21,7 @@ class StatusWord(IntEnum): INVALID_P1_P2 = 0x6b00 CONDITION_NOT_SATISFIED = 0x6985 REF_DATA_NOT_FOUND = 0x6a88 + EXCEPTION_OVERFLOW = 0x6807 class DomainNameTag(IntEnum): @@ -49,6 +50,15 @@ def _exchange(self, payload: bytes): def response(self) -> Optional[RAPDU]: return self._client.last_async_response + def send_raw(self, cla: int, ins: int, p1: int, p2: int, payload: bytes): + header = bytearray() + header.append(cla) + header.append(ins) + header.append(p1) + header.append(p2) + header.append(len(payload)) + return self._exchange(header + payload) + def eip712_send_struct_def_struct_name(self, name: str): return self._exchange_async(self._cmd_builder.eip712_send_struct_def_struct_name(name)) @@ -131,6 +141,12 @@ def get_public_addr(self, bip32_path, chain_id)) + def get_eth2_public_addr(self, + display: bool = True, + bip32_path: str = "m/12381/3600/0/0"): + return self._exchange_async(self._cmd_builder.get_eth2_public_addr(display, + bip32_path)) + def provide_domain_name(self, challenge: int, name: str, addr: bytes) -> RAPDU: payload = format_tlv(DomainNameTag.STRUCTURE_TYPE, 3) # TrustedDomainName payload += format_tlv(DomainNameTag.STRUCTURE_VERSION, 1) diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index 0ba0809bb..9c60a6af5 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -11,6 +11,7 @@ class InsType(IntEnum): GET_PUBLIC_ADDR = 0x02 + GET_ETH2_PUBLIC_ADDR = 0x0e SIGN = 0x04 PERSONAL_SIGN = 0x08 PROVIDE_ERC20_TOKEN_INFORMATION = 0x0a @@ -250,6 +251,15 @@ def get_public_addr(self, int(chaincode), payload) + def get_eth2_public_addr(self, + display: bool, + bip32_path: str) -> bytes: + payload = pack_derivation_path(bip32_path) + return self._serialize(InsType.GET_ETH2_PUBLIC_ADDR, + int(display), + 0x00, + payload) + def set_plugin(self, type_: int, version: int, diff --git a/client/src/ledger_app_clients/ethereum/eip712/InputData.py b/client/src/ledger_app_clients/ethereum/eip712/InputData.py index a19ccf3e8..e10bb249b 100644 --- a/client/src/ledger_app_clients/ethereum/eip712/InputData.py +++ b/client/src/ledger_app_clients/ethereum/eip712/InputData.py @@ -6,8 +6,8 @@ import copy from typing import Any, Callable, Optional -from ledger_app_clients.ethereum import keychain -from ledger_app_clients.ethereum.client import EthAppClient, EIP712FieldType +from client import keychain +from client.client import EthAppClient, EIP712FieldType # global variables diff --git a/tests/speculos/ethereum_client/__init__.py b/tests/ragger/.test_dependencies/clone/.clone_application_goes_there similarity index 100% rename from tests/speculos/ethereum_client/__init__.py rename to tests/ragger/.test_dependencies/clone/.clone_application_goes_there diff --git a/tests/ragger/client b/tests/ragger/client index 96cd109b0..66dee0e50 120000 --- a/tests/ragger/client +++ b/tests/ragger/client @@ -1 +1 @@ -../../client \ No newline at end of file +../../client/src/ledger_app_clients/ethereum \ No newline at end of file diff --git a/tests/ragger/conftest.py b/tests/ragger/conftest.py index 6dd6f4ba3..24087655b 100644 --- a/tests/ragger/conftest.py +++ b/tests/ragger/conftest.py @@ -1,4 +1,49 @@ +import sys +from pathlib import Path +import warnings +import glob + from ragger.conftest import configuration +####################### +# CONFIGURATION START # +####################### + +# You can configure optional parameters by overriding the value of +# ragger.configuration.OPTIONAL_CONFIGURATION +# Please refer to ragger/conftest/configuration.py for their descriptions and accepted values + +def pytest_addoption(parser): + parser.addoption("--with_lib_mode", action="store_true", help="Run the test with Library Mode") + + +parent: Path = Path(__file__).parent +testFiles = glob.glob("test_*.py", root_dir=f"{parent}") +collect_ignore = [] +if "--with_lib_mode" in sys.argv: + + # ============================================================================== + # /!\ Tests are started in Library mode: unselect (ignore) unrelated modules /!\ + # ============================================================================== + + warnings.warn("Main app is started in library mode") + + configuration.OPTIONAL.MAIN_APP_DIR = "tests/ragger/.test_dependencies/" + + collect_ignore += [f for f in testFiles if "test_clone" not in f] + +else: + + # =========================================================================== + # /!\ Standards tests without Library mode: unselect (ignore) clone tests /!\ + # =========================================================================== + + collect_ignore += [f for f in testFiles if "test_clone" in f] + + +##################### +# CONFIGURATION END # +##################### + # Pull all features from the base ragger conftest using the overridden configuration pytest_plugins = ("ragger.conftest.base_conftest", ) diff --git a/tests/ragger/constants.py b/tests/ragger/constants.py index 0f375a71f..8a434dfc0 100644 --- a/tests/ragger/constants.py +++ b/tests/ragger/constants.py @@ -1,5 +1,3 @@ -from pathlib import Path import os -ROOT_SNAPSHOT_PATH = Path(__file__).parent -ABIS_FOLDER = "%s/abis" % (os.path.dirname(__file__)) +ABIS_FOLDER = f"{os.path.dirname(__file__)}/abis" diff --git a/tests/ragger/requirements.txt b/tests/ragger/requirements.txt index 1149a7528..2cf1b1677 100644 --- a/tests/ragger/requirements.txt +++ b/tests/ragger/requirements.txt @@ -1,3 +1,5 @@ pytest ecdsa -./client/ +web3~=6.0 +ragger[speculos] +py_ecc diff --git a/tests/speculos/setup.cfg b/tests/ragger/setup.cfg similarity index 100% rename from tests/speculos/setup.cfg rename to tests/ragger/setup.cfg diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00000.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00000.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00000.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00000.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00001.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00001.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00001.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00001.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00002.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00002.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00002.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00002.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00003.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00003.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00003.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00003.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00004.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00004.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00004.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00004.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00005.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00005.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00005.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00005.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00006.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00006.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00006.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00006.png diff --git a/tests/speculos/screenshots/pubkey/nanos/get_public_key/00000.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00000.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/get_public_key/00000.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00000.png diff --git a/tests/speculos/screenshots/pubkey/nanos/get_public_key/00001.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00001.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/get_public_key/00001.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00001.png diff --git a/tests/speculos/screenshots/pubkey/nanos/get_public_key/00002.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00002.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/get_public_key/00002.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00002.png diff --git a/tests/speculos/screenshots/pubkey/nanos/get_public_key/00003.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00003.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/get_public_key/00003.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00003.png diff --git a/tests/speculos/screenshots/pubkey/nanos/get_public_key/00004.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00004.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/get_public_key/00004.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00004.png diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00005.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00005.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00005.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00005.png diff --git a/tests/zemu/snapshots/nanos_eip191_metamask/00006.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00006.png similarity index 100% rename from tests/zemu/snapshots/nanos_eip191_metamask/00006.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00006.png diff --git a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00000.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00000.png similarity index 100% rename from tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00000.png rename to tests/ragger/snapshots/nanos/test_clone_thundercore/00000.png diff --git a/tests/ragger/snapshots/nanos/test_clone_thundercore/00001.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00001.png new file mode 100644 index 000000000..98c2086b4 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_clone_thundercore/00001.png differ diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00005.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00002.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00005.png rename to tests/ragger/snapshots/nanos/test_clone_thundercore/00002.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00006.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00006.png rename to tests/ragger/snapshots/nanos/test_clone_thundercore/00003.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00007.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00007.png rename to tests/ragger/snapshots/nanos/test_clone_thundercore/00004.png diff --git a/tests/ragger/snapshots/nanos/test_clone_thundercore/00005.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00005.png new file mode 100644 index 000000000..c55dc1194 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_clone_thundercore/00005.png differ diff --git a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00006.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00006.png similarity index 100% rename from tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00006.png rename to tests/ragger/snapshots/nanos/test_clone_thundercore/00006.png diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00010.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00007.png similarity index 100% rename from tests/zemu/snapshots/nanos_approve_dai_tokens/00010.png rename to tests/ragger/snapshots/nanos/test_clone_thundercore/00007.png diff --git a/tests/speculos/screenshots/sign/nanos/limit_nonce/00008.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00008.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/limit_nonce/00008.png rename to tests/ragger/snapshots/nanos/test_clone_thundercore/00008.png diff --git a/tests/zemu/snapshots/nanos_transfer_eip1559/00009.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00009.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_eip1559/00009.png rename to tests/ragger/snapshots/nanos/test_clone_thundercore/00009.png diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00010.png b/tests/ragger/snapshots/nanos/test_clone_thundercore/00010.png similarity index 100% rename from tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00010.png rename to tests/ragger/snapshots/nanos/test_clone_thundercore/00010.png diff --git a/tests/ragger/snapshots/nanos/test_get_eth2_pk/00000.png b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00000.png new file mode 100644 index 000000000..1c4d4d7b8 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00000.png differ diff --git a/tests/ragger/snapshots/nanos/test_get_eth2_pk/00001.png b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00001.png new file mode 100644 index 000000000..e3a34c775 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00001.png differ diff --git a/tests/ragger/snapshots/nanos/test_get_eth2_pk/00002.png b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00002.png new file mode 100644 index 000000000..5e9d10968 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00002.png differ diff --git a/tests/ragger/snapshots/nanos/test_get_eth2_pk/00003.png b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00003.png new file mode 100644 index 000000000..b7d21a91e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00003.png differ diff --git a/tests/ragger/snapshots/nanos/test_get_eth2_pk/00004.png b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00004.png new file mode 100644 index 000000000..24be343c6 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00004.png differ diff --git a/tests/ragger/snapshots/nanos/test_get_eth2_pk/00005.png b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00005.png new file mode 100644 index 000000000..f032e45c1 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00005.png differ diff --git a/tests/ragger/snapshots/nanos/test_get_eth2_pk/00006.png b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00006.png new file mode 100644 index 000000000..4118dbf8a Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00006.png differ diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00004.png b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00007.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00004.png rename to tests/ragger/snapshots/nanos/test_get_eth2_pk/00007.png diff --git a/tests/zemu/snapshots/nanos_enable_blind_signing/00008.png b/tests/ragger/snapshots/nanos/test_get_eth2_pk/00008.png similarity index 100% rename from tests/zemu/snapshots/nanos_enable_blind_signing/00008.png rename to tests/ragger/snapshots/nanos/test_get_eth2_pk/00008.png diff --git a/tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00000.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00000.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00000.png rename to tests/ragger/snapshots/nanos/test_legacy_chainid/00000.png diff --git a/tests/ragger/snapshots/nanos/test_legacy_chainid/00001.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00001.png new file mode 100644 index 000000000..67d53e362 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_legacy_chainid/00001.png differ diff --git a/tests/speculos/screenshots/sign/nanos/blind_simple/00005.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00002.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_simple/00005.png rename to tests/ragger/snapshots/nanos/test_legacy_chainid/00002.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_simple/00006.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_simple/00006.png rename to tests/ragger/snapshots/nanos/test_legacy_chainid/00003.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_simple/00007.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_simple/00007.png rename to tests/ragger/snapshots/nanos/test_legacy_chainid/00004.png diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00007.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00005.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_112233445566_network/00007.png rename to tests/ragger/snapshots/nanos/test_legacy_chainid/00005.png diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00008.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00006.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_112233445566_network/00008.png rename to tests/ragger/snapshots/nanos/test_legacy_chainid/00006.png diff --git a/tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00007.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00007.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00007.png rename to tests/ragger/snapshots/nanos/test_legacy_chainid/00007.png diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00010.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00008.png similarity index 100% rename from tests/zemu/snapshots/nanos_eip191_nonascii/00010.png rename to tests/ragger/snapshots/nanos/test_legacy_chainid/00008.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_simple/00009.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00009.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_simple/00009.png rename to tests/ragger/snapshots/nanos/test_legacy_chainid/00009.png diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00017.png b/tests/ragger/snapshots/nanos/test_legacy_chainid/00010.png similarity index 100% rename from tests/zemu/snapshots/nanos_eip191_opensea/00017.png rename to tests/ragger/snapshots/nanos/test_legacy_chainid/00010.png diff --git a/tests/zemu/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00000.png b/tests/ragger/snapshots/nanos/test_legacy_contract/00000.png similarity index 100% rename from tests/zemu/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00000.png rename to tests/ragger/snapshots/nanos/test_legacy_contract/00000.png diff --git a/tests/zemu/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00001.png b/tests/ragger/snapshots/nanos/test_legacy_contract/00001.png similarity index 100% rename from tests/zemu/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00001.png rename to tests/ragger/snapshots/nanos/test_legacy_contract/00001.png diff --git a/tests/zemu/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00002.png b/tests/ragger/snapshots/nanos/test_legacy_contract/00002.png similarity index 100% rename from tests/zemu/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00002.png rename to tests/ragger/snapshots/nanos/test_legacy_contract/00002.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00000.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00000.png rename to tests/ragger/snapshots/nanos/test_legacy_send_bsc/00000.png diff --git a/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00001.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00001.png new file mode 100644 index 000000000..29e50386e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00001.png differ diff --git a/tests/speculos/screenshots/sign/nanos/limit_nonce/00004.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00002.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/limit_nonce/00004.png rename to tests/ragger/snapshots/nanos/test_legacy_send_bsc/00002.png diff --git a/tests/speculos/screenshots/sign/nanos/limit_nonce/00005.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/limit_nonce/00005.png rename to tests/ragger/snapshots/nanos/test_legacy_send_bsc/00003.png diff --git a/tests/speculos/screenshots/sign/nanos/limit_nonce/00006.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/limit_nonce/00006.png rename to tests/ragger/snapshots/nanos/test_legacy_send_bsc/00004.png diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00007.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00005.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_bsc/00007.png rename to tests/ragger/snapshots/nanos/test_legacy_send_bsc/00005.png diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00008.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00006.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_bsc/00008.png rename to tests/ragger/snapshots/nanos/test_legacy_send_bsc/00006.png diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00007.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00007.png similarity index 100% rename from tests/zemu/snapshots/nanos_approve_dai_tokens/00007.png rename to tests/ragger/snapshots/nanos/test_legacy_send_bsc/00007.png diff --git a/tests/zemu/snapshots/nanos_enable_blind_signing/00000.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00008.png similarity index 100% rename from tests/zemu/snapshots/nanos_enable_blind_signing/00000.png rename to tests/ragger/snapshots/nanos/test_legacy_send_bsc/00008.png diff --git a/tests/speculos/screenshots/sign/nanos/nonce_display/00009.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00009.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/nonce_display/00009.png rename to tests/ragger/snapshots/nanos/test_legacy_send_bsc/00009.png diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00012.png b/tests/ragger/snapshots/nanos/test_legacy_send_bsc/00010.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_112233445566_network/00012.png rename to tests/ragger/snapshots/nanos/test_legacy_send_bsc/00010.png diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_metamask/00001.png b/tests/ragger/snapshots/nanos/test_personal_sign_metamask/00000.png similarity index 100% rename from tests/speculos/screenshots/eip191/nanos/personal_sign_metamask/00001.png rename to tests/ragger/snapshots/nanos/test_personal_sign_metamask/00000.png diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_metamask/00002.png b/tests/ragger/snapshots/nanos/test_personal_sign_metamask/00001.png similarity index 100% rename from tests/speculos/screenshots/eip191/nanos/personal_sign_metamask/00002.png rename to tests/ragger/snapshots/nanos/test_personal_sign_metamask/00001.png diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00002.png b/tests/ragger/snapshots/nanos/test_personal_sign_metamask/00002.png similarity index 100% rename from tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00002.png rename to tests/ragger/snapshots/nanos/test_personal_sign_metamask/00002.png diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00012.png b/tests/ragger/snapshots/nanos/test_personal_sign_metamask/00003.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_bsc/00012.png rename to tests/ragger/snapshots/nanos/test_personal_sign_metamask/00003.png diff --git a/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00000.png b/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00000.png new file mode 100644 index 000000000..dc3315f7a Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00000.png differ diff --git a/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00001.png b/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00001.png new file mode 100644 index 000000000..5b3e16d4a Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00001.png differ diff --git a/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00002.png b/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00002.png new file mode 100644 index 000000000..93165d028 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00002.png differ diff --git a/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00003.png b/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00003.png new file mode 100644 index 000000000..c923961c3 Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00003.png differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_metamask/00003.png b/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00004.png similarity index 100% rename from tests/speculos/screenshots/eip191/nanos/personal_sign_metamask/00003.png rename to tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00004.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00011.png b/tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00005.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00011.png rename to tests/ragger/snapshots/nanos/test_personal_sign_non_ascii/00005.png diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_metamask/00000.png b/tests/ragger/snapshots/nanos/test_personal_sign_reject/00000.png similarity index 100% rename from tests/speculos/screenshots/eip191/nanos/personal_sign_metamask/00000.png rename to tests/ragger/snapshots/nanos/test_personal_sign_reject/00000.png diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00001.png b/tests/ragger/snapshots/nanos/test_personal_sign_reject/00001.png similarity index 100% rename from tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00001.png rename to tests/ragger/snapshots/nanos/test_personal_sign_reject/00001.png diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00005.png b/tests/ragger/snapshots/nanos/test_personal_sign_reject/00002.png similarity index 100% rename from tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00005.png rename to tests/ragger/snapshots/nanos/test_personal_sign_reject/00002.png diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00003.png b/tests/ragger/snapshots/nanos/test_personal_sign_reject/00003.png similarity index 100% rename from tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00003.png rename to tests/ragger/snapshots/nanos/test_personal_sign_reject/00003.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00011.png b/tests/ragger/snapshots/nanos/test_personal_sign_reject/00004.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum_clone/00011.png rename to tests/ragger/snapshots/nanos/test_personal_sign_reject/00004.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_simple/00000.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_simple/00000.png rename to tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00000.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00001.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00001.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00001.png rename to tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00001.png diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00002.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00002.png new file mode 100644 index 000000000..10706b86e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00002.png differ diff --git a/tests/speculos/screenshots/sign/nanos/nonce_display/00004.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/nonce_display/00004.png rename to tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00003.png diff --git a/tests/speculos/screenshots/sign/nanos/nonce_display/00005.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/nonce_display/00005.png rename to tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00004.png diff --git a/tests/speculos/screenshots/sign/nanos/nonce_display/00006.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00005.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/nonce_display/00006.png rename to tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00005.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00008.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00006.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00008.png rename to tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00006.png diff --git a/tests/speculos/screenshots/sign/nanos/reject/00007.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00007.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/reject/00007.png rename to tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00007.png diff --git a/tests/speculos/screenshots/sign/nanos/reject/00008.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00008.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/reject/00008.png rename to tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00008.png diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00012.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00009.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_palm_network/00012.png rename to tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00009.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00010.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00010.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00010.png rename to tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00010.png diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00011.png b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00011.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_blind_and_nonce_display/00011.png differ diff --git a/tests/speculos/screenshots/sign/nanos/limit_nonce/00000.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/limit_nonce/00000.png rename to tests/ragger/snapshots/nanos/test_sign_blind_simple/00000.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_simple/00001.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00001.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_simple/00001.png rename to tests/ragger/snapshots/nanos/test_sign_blind_simple/00001.png diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00002.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00002.png new file mode 100644 index 000000000..10706b86e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00002.png differ diff --git a/tests/speculos/screenshots/sign/nanos/reject/00004.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/reject/00004.png rename to tests/ragger/snapshots/nanos/test_sign_blind_simple/00003.png diff --git a/tests/speculos/screenshots/sign/nanos/reject/00005.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/reject/00005.png rename to tests/ragger/snapshots/nanos/test_sign_blind_simple/00004.png diff --git a/tests/speculos/screenshots/sign/nanos/reject/00006.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00005.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/reject/00006.png rename to tests/ragger/snapshots/nanos/test_sign_blind_simple/00005.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00009.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00006.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00009.png rename to tests/ragger/snapshots/nanos/test_sign_blind_simple/00006.png diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00007.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00007.png similarity index 100% rename from tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00007.png rename to tests/ragger/snapshots/nanos/test_sign_blind_simple/00007.png diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00008.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00008.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00008.png differ diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00009.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00009.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_112233445566_network/00009.png rename to tests/ragger/snapshots/nanos/test_sign_blind_simple/00009.png diff --git a/tests/ragger/snapshots/nanos/test_sign_blind_simple/00010.png b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00010.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_blind_simple/00010.png differ diff --git a/tests/speculos/screenshots/sign/nanos/nonce_display/00000.png b/tests/ragger/snapshots/nanos/test_sign_eip_2930/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/nonce_display/00000.png rename to tests/ragger/snapshots/nanos/test_sign_eip_2930/00000.png diff --git a/tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00001.png b/tests/ragger/snapshots/nanos/test_sign_eip_2930/00001.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00001.png rename to tests/ragger/snapshots/nanos/test_sign_eip_2930/00001.png diff --git a/tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00002.png b/tests/ragger/snapshots/nanos/test_sign_eip_2930/00002.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00002.png rename to tests/ragger/snapshots/nanos/test_sign_eip_2930/00002.png diff --git a/tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00003.png b/tests/ragger/snapshots/nanos/test_sign_eip_2930/00003.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00003.png rename to tests/ragger/snapshots/nanos/test_sign_eip_2930/00003.png diff --git a/tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00004.png b/tests/ragger/snapshots/nanos/test_sign_eip_2930/00004.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00004.png rename to tests/ragger/snapshots/nanos/test_sign_eip_2930/00004.png diff --git a/tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00005.png b/tests/ragger/snapshots/nanos/test_sign_eip_2930/00005.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00005.png rename to tests/ragger/snapshots/nanos/test_sign_eip_2930/00005.png diff --git a/tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00006.png b/tests/ragger/snapshots/nanos/test_sign_eip_2930/00006.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanos/sign_eip_2930/00006.png rename to tests/ragger/snapshots/nanos/test_sign_eip_2930/00006.png diff --git a/tests/speculos/screenshots/sign/nanos/simple/00008.png b/tests/ragger/snapshots/nanos/test_sign_eip_2930/00007.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/simple/00008.png rename to tests/ragger/snapshots/nanos/test_sign_eip_2930/00007.png diff --git a/tests/ragger/snapshots/nanos/test_sign_eip_2930/00008.png b/tests/ragger/snapshots/nanos/test_sign_eip_2930/00008.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_eip_2930/00008.png differ diff --git a/tests/speculos/screenshots/sign/nanos/reject/00000.png b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/reject/00000.png rename to tests/ragger/snapshots/nanos/test_sign_limit_nonce/00000.png diff --git a/tests/speculos/screenshots/sign/nanos/limit_nonce/00001.png b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00001.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/limit_nonce/00001.png rename to tests/ragger/snapshots/nanos/test_sign_limit_nonce/00001.png diff --git a/tests/speculos/screenshots/sign/nanos/limit_nonce/00002.png b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00002.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/limit_nonce/00002.png rename to tests/ragger/snapshots/nanos/test_sign_limit_nonce/00002.png diff --git a/tests/speculos/screenshots/sign/nanos/limit_nonce/00003.png b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/limit_nonce/00003.png rename to tests/ragger/snapshots/nanos/test_sign_limit_nonce/00003.png diff --git a/tests/speculos/screenshots/sign/nanos/simple/00004.png b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/simple/00004.png rename to tests/ragger/snapshots/nanos/test_sign_limit_nonce/00004.png diff --git a/tests/speculos/screenshots/sign/nanos/simple/00005.png b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00005.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/simple/00005.png rename to tests/ragger/snapshots/nanos/test_sign_limit_nonce/00005.png diff --git a/tests/speculos/screenshots/sign/nanos/simple/00006.png b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00006.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/simple/00006.png rename to tests/ragger/snapshots/nanos/test_sign_limit_nonce/00006.png diff --git a/tests/speculos/screenshots/sign/nanos/limit_nonce/00007.png b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00007.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/limit_nonce/00007.png rename to tests/ragger/snapshots/nanos/test_sign_limit_nonce/00007.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00008.png b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00008.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00008.png rename to tests/ragger/snapshots/nanos/test_sign_limit_nonce/00008.png diff --git a/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00009.png b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00009.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_limit_nonce/00009.png differ diff --git a/tests/speculos/screenshots/sign/nanos/simple/00000.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/simple/00000.png rename to tests/ragger/snapshots/nanos/test_sign_nonce_display/00000.png diff --git a/tests/ragger/snapshots/nanos/test_sign_nonce_display/00001.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00001.png new file mode 100644 index 000000000..10706b86e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00001.png differ diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00004.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00002.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_112233445566_network/00004.png rename to tests/ragger/snapshots/nanos/test_sign_nonce_display/00002.png diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00005.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00003.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_112233445566_network/00005.png rename to tests/ragger/snapshots/nanos/test_sign_nonce_display/00003.png diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00006.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00004.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_112233445566_network/00006.png rename to tests/ragger/snapshots/nanos/test_sign_nonce_display/00004.png diff --git a/tests/speculos/screenshots/sign/nanos/nonce_display/00007.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00005.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/nonce_display/00007.png rename to tests/ragger/snapshots/nanos/test_sign_nonce_display/00005.png diff --git a/tests/speculos/screenshots/sign/nanos/blind_simple/00008.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00006.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/blind_simple/00008.png rename to tests/ragger/snapshots/nanos/test_sign_nonce_display/00006.png diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00011.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00007.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_112233445566_network/00011.png rename to tests/ragger/snapshots/nanos/test_sign_nonce_display/00007.png diff --git a/tests/ragger/snapshots/nanos/test_sign_nonce_display/00008.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00008.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00008.png differ diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00009.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00009.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_bsc/00009.png rename to tests/ragger/snapshots/nanos/test_sign_nonce_display/00009.png diff --git a/tests/ragger/snapshots/nanos/test_sign_nonce_display/00010.png b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00010.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_nonce_display/00010.png differ diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00000.png b/tests/ragger/snapshots/nanos/test_sign_reject/00000.png similarity index 100% rename from tests/zemu/snapshots/nanos_approve_dai_tokens/00000.png rename to tests/ragger/snapshots/nanos/test_sign_reject/00000.png diff --git a/tests/ragger/snapshots/nanos/test_sign_reject/00001.png b/tests/ragger/snapshots/nanos/test_sign_reject/00001.png new file mode 100644 index 000000000..10706b86e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_reject/00001.png differ diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00004.png b/tests/ragger/snapshots/nanos/test_sign_reject/00002.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_bsc/00004.png rename to tests/ragger/snapshots/nanos/test_sign_reject/00002.png diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00005.png b/tests/ragger/snapshots/nanos/test_sign_reject/00003.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_bsc/00005.png rename to tests/ragger/snapshots/nanos/test_sign_reject/00003.png diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00006.png b/tests/ragger/snapshots/nanos/test_sign_reject/00004.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_bsc/00006.png rename to tests/ragger/snapshots/nanos/test_sign_reject/00004.png diff --git a/tests/speculos/screenshots/sign/nanos/nonce_display/00008.png b/tests/ragger/snapshots/nanos/test_sign_reject/00005.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/nonce_display/00008.png rename to tests/ragger/snapshots/nanos/test_sign_reject/00005.png diff --git a/tests/zemu/snapshots/nanos_transfer_eip1559/00006.png b/tests/ragger/snapshots/nanos/test_sign_reject/00006.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_eip1559/00006.png rename to tests/ragger/snapshots/nanos/test_sign_reject/00006.png diff --git a/tests/zemu/snapshots/nanos_transfer_eip1559/00007.png b/tests/ragger/snapshots/nanos/test_sign_reject/00007.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_eip1559/00007.png rename to tests/ragger/snapshots/nanos/test_sign_reject/00007.png diff --git a/tests/ragger/snapshots/nanos/test_sign_reject/00008.png b/tests/ragger/snapshots/nanos/test_sign_reject/00008.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_reject/00008.png differ diff --git a/tests/speculos/screenshots/sign/nanos/reject/00009.png b/tests/ragger/snapshots/nanos/test_sign_reject/00009.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/reject/00009.png rename to tests/ragger/snapshots/nanos/test_sign_reject/00009.png diff --git a/tests/ragger/snapshots/nanos/test_sign_reject/00010.png b/tests/ragger/snapshots/nanos/test_sign_reject/00010.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_reject/00010.png differ diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00000.png b/tests/ragger/snapshots/nanos/test_sign_simple/00000.png similarity index 100% rename from tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00000.png rename to tests/ragger/snapshots/nanos/test_sign_simple/00000.png diff --git a/tests/ragger/snapshots/nanos/test_sign_simple/00001.png b/tests/ragger/snapshots/nanos/test_sign_simple/00001.png new file mode 100644 index 000000000..10706b86e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_simple/00001.png differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00004.png b/tests/ragger/snapshots/nanos/test_sign_simple/00002.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00004.png rename to tests/ragger/snapshots/nanos/test_sign_simple/00002.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00005.png b/tests/ragger/snapshots/nanos/test_sign_simple/00003.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00005.png rename to tests/ragger/snapshots/nanos/test_sign_simple/00003.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00006.png b/tests/ragger/snapshots/nanos/test_sign_simple/00004.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00006.png rename to tests/ragger/snapshots/nanos/test_sign_simple/00004.png diff --git a/tests/speculos/screenshots/sign/nanos/simple/00007.png b/tests/ragger/snapshots/nanos/test_sign_simple/00005.png similarity index 100% rename from tests/speculos/screenshots/sign/nanos/simple/00007.png rename to tests/ragger/snapshots/nanos/test_sign_simple/00005.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00008.png b/tests/ragger/snapshots/nanos/test_sign_simple/00006.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum_clone/00008.png rename to tests/ragger/snapshots/nanos/test_sign_simple/00006.png diff --git a/tests/ragger/snapshots/nanos/test_sign_simple/00007.png b/tests/ragger/snapshots/nanos/test_sign_simple/00007.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_simple/00007.png differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00009.png b/tests/ragger/snapshots/nanos/test_sign_simple/00008.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_palm_network/00009.png rename to tests/ragger/snapshots/nanos/test_sign_simple/00008.png diff --git a/tests/ragger/snapshots/nanos/test_sign_simple/00009.png b/tests/ragger/snapshots/nanos/test_sign_simple/00009.png new file mode 100644 index 000000000..ce795f34e Binary files /dev/null and b/tests/ragger/snapshots/nanos/test_sign_simple/00009.png differ diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00000.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_60/00000.png similarity index 100% rename from tests/ragger/snapshots/nanosp/get_pk_rejected/00000.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_60/00000.png diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00001.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_60/00001.png similarity index 100% rename from tests/ragger/snapshots/nanosp/get_pk_rejected/00001.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_60/00001.png diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00002.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_60/00002.png similarity index 100% rename from tests/ragger/snapshots/nanosp/get_pk_rejected/00002.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_60/00002.png diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00003.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_60/00003.png similarity index 100% rename from tests/ragger/snapshots/nanosp/get_pk_rejected/00003.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_60/00003.png diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00004.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_60/00004.png similarity index 100% rename from tests/ragger/snapshots/nanosp/get_pk_rejected/00004.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_60/00004.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00000.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00000.png similarity index 100% rename from tests/ragger/snapshots/nanox/get_pk_rejected/00000.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_700/00000.png diff --git a/tests/speculos/screenshots/pubkey/nanox/get_public_key/00001.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00001.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/get_public_key/00001.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_700/00001.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00002.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00002.png similarity index 100% rename from tests/ragger/snapshots/nanox/get_pk_rejected/00002.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_700/00002.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00003.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00003.png similarity index 100% rename from tests/ragger/snapshots/nanox/get_pk_rejected/00003.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_700/00003.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00004.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00004.png similarity index 100% rename from tests/ragger/snapshots/nanox/get_pk_rejected/00004.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_700/00004.png diff --git a/tests/ragger/snapshots/nanosp/test_clone_thundercore b/tests/ragger/snapshots/nanosp/test_clone_thundercore new file mode 120000 index 000000000..1de979b17 --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_clone_thundercore @@ -0,0 +1 @@ +../nanox/test_clone_thundercore \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_get_eth2_pk b/tests/ragger/snapshots/nanosp/test_get_eth2_pk new file mode 120000 index 000000000..dc7c37197 --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_get_eth2_pk @@ -0,0 +1 @@ +../nanox/test_get_eth2_pk \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_legacy_chainid b/tests/ragger/snapshots/nanosp/test_legacy_chainid new file mode 120000 index 000000000..d3597343a --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_legacy_chainid @@ -0,0 +1 @@ +../nanox/test_legacy_chainid \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_legacy_contract b/tests/ragger/snapshots/nanosp/test_legacy_contract new file mode 120000 index 000000000..ab2ec19ea --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_legacy_contract @@ -0,0 +1 @@ +../nanox/test_legacy_contract \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_legacy_send_bsc b/tests/ragger/snapshots/nanosp/test_legacy_send_bsc new file mode 120000 index 000000000..026f1966f --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_legacy_send_bsc @@ -0,0 +1 @@ +../nanox/test_legacy_send_bsc \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_personal_sign_metamask b/tests/ragger/snapshots/nanosp/test_personal_sign_metamask new file mode 120000 index 000000000..3b23af2dd --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_personal_sign_metamask @@ -0,0 +1 @@ +../nanox/test_personal_sign_metamask \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_personal_sign_non_ascii b/tests/ragger/snapshots/nanosp/test_personal_sign_non_ascii new file mode 120000 index 000000000..ee2a02866 --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_personal_sign_non_ascii @@ -0,0 +1 @@ +../nanox/test_personal_sign_non_ascii \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_personal_sign_opensea b/tests/ragger/snapshots/nanosp/test_personal_sign_opensea new file mode 120000 index 000000000..60d0d6f18 --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_personal_sign_opensea @@ -0,0 +1 @@ +../nanox/test_personal_sign_opensea/ \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_personal_sign_reject b/tests/ragger/snapshots/nanosp/test_personal_sign_reject new file mode 120000 index 000000000..5ecbf85cf --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_personal_sign_reject @@ -0,0 +1 @@ +../nanox/test_personal_sign_reject \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_sign_blind_and_nonce_display b/tests/ragger/snapshots/nanosp/test_sign_blind_and_nonce_display new file mode 120000 index 000000000..a9c688075 --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_sign_blind_and_nonce_display @@ -0,0 +1 @@ +../nanox/test_sign_blind_and_nonce_display \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_sign_blind_simple b/tests/ragger/snapshots/nanosp/test_sign_blind_simple new file mode 120000 index 000000000..3ab181588 --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_sign_blind_simple @@ -0,0 +1 @@ +../nanox/test_sign_blind_simple \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_sign_eip_2930 b/tests/ragger/snapshots/nanosp/test_sign_eip_2930 new file mode 120000 index 000000000..9ce65369a --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_sign_eip_2930 @@ -0,0 +1 @@ +../nanox/test_sign_eip_2930 \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_sign_limit_nonce b/tests/ragger/snapshots/nanosp/test_sign_limit_nonce new file mode 120000 index 000000000..9f9d7996a --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_sign_limit_nonce @@ -0,0 +1 @@ +../nanox/test_sign_limit_nonce \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_sign_nonce_display b/tests/ragger/snapshots/nanosp/test_sign_nonce_display new file mode 120000 index 000000000..1d4b5ed43 --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_sign_nonce_display @@ -0,0 +1 @@ +../nanox/test_sign_nonce_display \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_sign_reject b/tests/ragger/snapshots/nanosp/test_sign_reject new file mode 120000 index 000000000..2f1476fcc --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_sign_reject @@ -0,0 +1 @@ +../nanox/test_sign_reject \ No newline at end of file diff --git a/tests/ragger/snapshots/nanosp/test_sign_simple b/tests/ragger/snapshots/nanosp/test_sign_simple new file mode 120000 index 000000000..3c8db9e40 --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_sign_simple @@ -0,0 +1 @@ +../nanox/test_sign_simple \ No newline at end of file diff --git a/tests/speculos/screenshots/pubkey/nanox/get_public_key/00000.png b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00000.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/get_public_key/00000.png rename to tests/ragger/snapshots/nanox/get_pk_rejected_60/00000.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00001.png b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00001.png similarity index 100% rename from tests/ragger/snapshots/nanox/get_pk_rejected/00001.png rename to tests/ragger/snapshots/nanox/get_pk_rejected_60/00001.png diff --git a/tests/speculos/screenshots/pubkey/nanox/get_public_key/00002.png b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00002.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/get_public_key/00002.png rename to tests/ragger/snapshots/nanox/get_pk_rejected_60/00002.png diff --git a/tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00003.png b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00003.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00003.png rename to tests/ragger/snapshots/nanox/get_pk_rejected_60/00003.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected_60/00004.png b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00004.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00004.png differ diff --git a/tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00000.png b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00000.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00000.png rename to tests/ragger/snapshots/nanox/get_pk_rejected_700/00000.png diff --git a/tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00001.png b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00001.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00001.png rename to tests/ragger/snapshots/nanox/get_pk_rejected_700/00001.png diff --git a/tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00002.png b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00002.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00002.png rename to tests/ragger/snapshots/nanox/get_pk_rejected_700/00002.png diff --git a/tests/speculos/screenshots/sign/nanox/reject/00005.png b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/reject/00005.png rename to tests/ragger/snapshots/nanox/get_pk_rejected_700/00003.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected_700/00004.png b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00004.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00004.png differ diff --git a/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00000.png b/tests/ragger/snapshots/nanox/test_clone_thundercore/00000.png similarity index 100% rename from tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00000.png rename to tests/ragger/snapshots/nanox/test_clone_thundercore/00000.png diff --git a/tests/ragger/snapshots/nanox/test_clone_thundercore/00001.png b/tests/ragger/snapshots/nanox/test_clone_thundercore/00001.png new file mode 100644 index 000000000..af5ca55bb Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_clone_thundercore/00001.png differ diff --git a/tests/speculos/screenshots/sign/nanox/limit_nonce/00002.png b/tests/ragger/snapshots/nanox/test_clone_thundercore/00002.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/limit_nonce/00002.png rename to tests/ragger/snapshots/nanox/test_clone_thundercore/00002.png diff --git a/tests/ragger/snapshots/nanox/test_clone_thundercore/00003.png b/tests/ragger/snapshots/nanox/test_clone_thundercore/00003.png new file mode 100644 index 000000000..16fbf15df Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_clone_thundercore/00003.png differ diff --git a/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00004.png b/tests/ragger/snapshots/nanox/test_clone_thundercore/00004.png similarity index 100% rename from tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00004.png rename to tests/ragger/snapshots/nanox/test_clone_thundercore/00004.png diff --git a/tests/ragger/snapshots/nanox/test_clone_thundercore/00005.png b/tests/ragger/snapshots/nanox/test_clone_thundercore/00005.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_clone_thundercore/00005.png differ diff --git a/tests/ragger/snapshots/nanox/test_clone_thundercore/00006.png b/tests/ragger/snapshots/nanox/test_clone_thundercore/00006.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_clone_thundercore/00006.png differ diff --git a/tests/zemu/snapshots/nanox_transfer_eip1559/00007.png b/tests/ragger/snapshots/nanox/test_clone_thundercore/00007.png similarity index 100% rename from tests/zemu/snapshots/nanox_transfer_eip1559/00007.png rename to tests/ragger/snapshots/nanox/test_clone_thundercore/00007.png diff --git a/tests/ragger/snapshots/nanox/test_get_eth2_pk/00000.png b/tests/ragger/snapshots/nanox/test_get_eth2_pk/00000.png new file mode 100644 index 000000000..bb3289d6b Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_get_eth2_pk/00000.png differ diff --git a/tests/ragger/snapshots/nanox/test_get_eth2_pk/00001.png b/tests/ragger/snapshots/nanox/test_get_eth2_pk/00001.png new file mode 100644 index 000000000..aa05c8c56 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_get_eth2_pk/00001.png differ diff --git a/tests/ragger/snapshots/nanox/test_get_eth2_pk/00002.png b/tests/ragger/snapshots/nanox/test_get_eth2_pk/00002.png new file mode 100644 index 000000000..5eb4dd498 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_get_eth2_pk/00002.png differ diff --git a/tests/ragger/snapshots/nanox/test_get_eth2_pk/00003.png b/tests/ragger/snapshots/nanox/test_get_eth2_pk/00003.png new file mode 100644 index 000000000..53ae65195 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_get_eth2_pk/00003.png differ diff --git a/tests/ragger/snapshots/nanox/test_get_eth2_pk/00004.png b/tests/ragger/snapshots/nanox/test_get_eth2_pk/00004.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_get_eth2_pk/00004.png differ diff --git a/tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00000.png b/tests/ragger/snapshots/nanox/test_legacy_chainid/00000.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00000.png rename to tests/ragger/snapshots/nanox/test_legacy_chainid/00000.png diff --git a/tests/ragger/snapshots/nanox/test_legacy_chainid/00001.png b/tests/ragger/snapshots/nanox/test_legacy_chainid/00001.png new file mode 100644 index 000000000..86eecc0a1 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_legacy_chainid/00001.png differ diff --git a/tests/speculos/screenshots/sign/nanox/nonce_display/00002.png b/tests/ragger/snapshots/nanox/test_legacy_chainid/00002.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/nonce_display/00002.png rename to tests/ragger/snapshots/nanox/test_legacy_chainid/00002.png diff --git a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00003.png b/tests/ragger/snapshots/nanox/test_legacy_chainid/00003.png similarity index 100% rename from tests/zemu/snapshots/nanox_transfer_112233445566_network/00003.png rename to tests/ragger/snapshots/nanox/test_legacy_chainid/00003.png diff --git a/tests/ragger/snapshots/nanox/test_legacy_chainid/00004.png b/tests/ragger/snapshots/nanox/test_legacy_chainid/00004.png new file mode 100644 index 000000000..c2a8d9070 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_legacy_chainid/00004.png differ diff --git a/tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00005.png b/tests/ragger/snapshots/nanox/test_legacy_chainid/00005.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00005.png rename to tests/ragger/snapshots/nanox/test_legacy_chainid/00005.png diff --git a/tests/ragger/snapshots/nanox/test_legacy_chainid/00006.png b/tests/ragger/snapshots/nanox/test_legacy_chainid/00006.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_legacy_chainid/00006.png differ diff --git a/tests/zemu/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00000.png b/tests/ragger/snapshots/nanox/test_legacy_contract/00000.png similarity index 100% rename from tests/zemu/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00000.png rename to tests/ragger/snapshots/nanox/test_legacy_contract/00000.png diff --git a/tests/zemu/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00001.png b/tests/ragger/snapshots/nanox/test_legacy_contract/00001.png similarity index 100% rename from tests/zemu/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00001.png rename to tests/ragger/snapshots/nanox/test_legacy_contract/00001.png diff --git a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00000.png b/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00000.png similarity index 100% rename from tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00000.png rename to tests/ragger/snapshots/nanox/test_legacy_send_bsc/00000.png diff --git a/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00001.png b/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00001.png new file mode 100644 index 000000000..1d220e0dc Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00001.png differ diff --git a/tests/speculos/screenshots/sign/nanox/reject/00002.png b/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00002.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/reject/00002.png rename to tests/ragger/snapshots/nanox/test_legacy_send_bsc/00002.png diff --git a/tests/zemu/snapshots/nanox_transfer_bsc/00003.png b/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00003.png similarity index 100% rename from tests/zemu/snapshots/nanox_transfer_bsc/00003.png rename to tests/ragger/snapshots/nanox/test_legacy_send_bsc/00003.png diff --git a/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00004.png b/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00004.png new file mode 100644 index 000000000..cf48bdfc0 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00004.png differ diff --git a/tests/speculos/screenshots/sign/nanox/blind_simple/00005.png b/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00005.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_simple/00005.png rename to tests/ragger/snapshots/nanox/test_legacy_send_bsc/00005.png diff --git a/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00006.png b/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00006.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_legacy_send_bsc/00006.png differ diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_metamask/00000.png b/tests/ragger/snapshots/nanox/test_personal_sign_metamask/00000.png new file mode 100644 index 000000000..b0936ada5 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_metamask/00000.png differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00005.png b/tests/ragger/snapshots/nanox/test_personal_sign_metamask/00001.png similarity index 100% rename from tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00005.png rename to tests/ragger/snapshots/nanox/test_personal_sign_metamask/00001.png diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_metamask/00002.png b/tests/ragger/snapshots/nanox/test_personal_sign_metamask/00002.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_metamask/00002.png differ diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00000.png b/tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00000.png new file mode 100644 index 000000000..c965f50bd Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00000.png differ diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00001.png b/tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00001.png new file mode 100644 index 000000000..234ab0661 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00001.png differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00005.png b/tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00002.png similarity index 100% rename from tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00005.png rename to tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00002.png diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00003.png b/tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00003.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_non_ascii/00003.png differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00001.png b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00000.png similarity index 92% rename from tests/zemu/snapshots/nanox_eip191_opensea/00001.png rename to tests/ragger/snapshots/nanox/test_personal_sign_opensea/00000.png index 4f59a8d40..e1159c546 100644 Binary files a/tests/zemu/snapshots/nanox_eip191_opensea/00001.png and b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00000.png differ diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00001.png b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00001.png new file mode 100644 index 000000000..3f7614292 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00001.png differ diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00002.png b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00002.png new file mode 100644 index 000000000..685ff399d Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00002.png differ diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00003.png b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00003.png new file mode 100644 index 000000000..668a2a67a Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00003.png differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00005.png b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00004.png similarity index 100% rename from tests/zemu/snapshots/nanox_eip191_opensea/00005.png rename to tests/ragger/snapshots/nanox/test_personal_sign_opensea/00004.png diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00005.png b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00005.png new file mode 100644 index 000000000..a3799d23f Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00005.png differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00007.png b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00006.png similarity index 100% rename from tests/zemu/snapshots/nanox_eip191_opensea/00007.png rename to tests/ragger/snapshots/nanox/test_personal_sign_opensea/00006.png diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00008.png b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00007.png similarity index 100% rename from tests/zemu/snapshots/nanox_eip191_opensea/00008.png rename to tests/ragger/snapshots/nanox/test_personal_sign_opensea/00007.png diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00008.png b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00008.png new file mode 100644 index 000000000..e7ffedd90 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00008.png differ diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00009.png b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00009.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_opensea/00009.png differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_metamask/00000.png b/tests/ragger/snapshots/nanox/test_personal_sign_reject/00000.png similarity index 100% rename from tests/speculos/screenshots/eip191/nanox/personal_sign_metamask/00000.png rename to tests/ragger/snapshots/nanox/test_personal_sign_reject/00000.png diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_reject/00001.png b/tests/ragger/snapshots/nanox/test_personal_sign_reject/00001.png new file mode 100644 index 000000000..380d883f3 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_reject/00001.png differ diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_reject/00002.png b/tests/ragger/snapshots/nanox/test_personal_sign_reject/00002.png new file mode 100644 index 000000000..e7ffedd90 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_reject/00002.png differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00003.png b/tests/ragger/snapshots/nanox/test_personal_sign_reject/00003.png similarity index 100% rename from tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00003.png rename to tests/ragger/snapshots/nanox/test_personal_sign_reject/00003.png diff --git a/tests/ragger/snapshots/nanox/test_personal_sign_reject/00004.png b/tests/ragger/snapshots/nanox/test_personal_sign_reject/00004.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_personal_sign_reject/00004.png differ diff --git a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00000.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00000.png similarity index 100% rename from tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00000.png rename to tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00000.png diff --git a/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00001.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00001.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00001.png rename to tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00001.png diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00002.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00002.png new file mode 100644 index 000000000..36ecb93f5 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00002.png differ diff --git a/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00003.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00003.png rename to tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00003.png diff --git a/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00004.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00004.png rename to tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00004.png diff --git a/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00005.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00005.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00005.png rename to tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00005.png diff --git a/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00006.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00006.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00006.png rename to tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00006.png diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00007.png b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00007.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_blind_and_nonce_display/00007.png differ diff --git a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00000.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00000.png similarity index 100% rename from tests/speculos/screenshots/erc721/nanox/transfer_erc721/00000.png rename to tests/ragger/snapshots/nanox/test_sign_blind_simple/00000.png diff --git a/tests/speculos/screenshots/sign/nanox/blind_simple/00001.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00001.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_simple/00001.png rename to tests/ragger/snapshots/nanox/test_sign_blind_simple/00001.png diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00002.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00002.png new file mode 100644 index 000000000..36ecb93f5 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00002.png differ diff --git a/tests/speculos/screenshots/sign/nanox/blind_simple/00003.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_simple/00003.png rename to tests/ragger/snapshots/nanox/test_sign_blind_simple/00003.png diff --git a/tests/speculos/screenshots/sign/nanox/blind_simple/00004.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_simple/00004.png rename to tests/ragger/snapshots/nanox/test_sign_blind_simple/00004.png diff --git a/tests/speculos/screenshots/sign/nanox/nonce_display/00005.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00005.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/nonce_display/00005.png rename to tests/ragger/snapshots/nanox/test_sign_blind_simple/00005.png diff --git a/tests/ragger/snapshots/nanox/test_sign_blind_simple/00006.png b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00006.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_blind_simple/00006.png differ diff --git a/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00000.png b/tests/ragger/snapshots/nanox/test_sign_eip_2930/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00000.png rename to tests/ragger/snapshots/nanox/test_sign_eip_2930/00000.png diff --git a/tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00001.png b/tests/ragger/snapshots/nanox/test_sign_eip_2930/00001.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00001.png rename to tests/ragger/snapshots/nanox/test_sign_eip_2930/00001.png diff --git a/tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00002.png b/tests/ragger/snapshots/nanox/test_sign_eip_2930/00002.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00002.png rename to tests/ragger/snapshots/nanox/test_sign_eip_2930/00002.png diff --git a/tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00003.png b/tests/ragger/snapshots/nanox/test_sign_eip_2930/00003.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00003.png rename to tests/ragger/snapshots/nanox/test_sign_eip_2930/00003.png diff --git a/tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00004.png b/tests/ragger/snapshots/nanox/test_sign_eip_2930/00004.png similarity index 100% rename from tests/speculos/screenshots/eip2930/nanox/sign_eip_2930/00004.png rename to tests/ragger/snapshots/nanox/test_sign_eip_2930/00004.png diff --git a/tests/zemu/snapshots/nanox_approve_dai_tokens/00005.png b/tests/ragger/snapshots/nanox/test_sign_eip_2930/00005.png similarity index 100% rename from tests/zemu/snapshots/nanox_approve_dai_tokens/00005.png rename to tests/ragger/snapshots/nanox/test_sign_eip_2930/00005.png diff --git a/tests/ragger/snapshots/nanox/test_sign_eip_2930/00006.png b/tests/ragger/snapshots/nanox/test_sign_eip_2930/00006.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_eip_2930/00006.png differ diff --git a/tests/speculos/screenshots/sign/nanox/blind_simple/00000.png b/tests/ragger/snapshots/nanox/test_sign_limit_nonce/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/blind_simple/00000.png rename to tests/ragger/snapshots/nanox/test_sign_limit_nonce/00000.png diff --git a/tests/speculos/screenshots/sign/nanox/limit_nonce/00001.png b/tests/ragger/snapshots/nanox/test_sign_limit_nonce/00001.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/limit_nonce/00001.png rename to tests/ragger/snapshots/nanox/test_sign_limit_nonce/00001.png diff --git a/tests/speculos/screenshots/sign/nanox/simple/00002.png b/tests/ragger/snapshots/nanox/test_sign_limit_nonce/00002.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/simple/00002.png rename to tests/ragger/snapshots/nanox/test_sign_limit_nonce/00002.png diff --git a/tests/speculos/screenshots/sign/nanox/limit_nonce/00003.png b/tests/ragger/snapshots/nanox/test_sign_limit_nonce/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/limit_nonce/00003.png rename to tests/ragger/snapshots/nanox/test_sign_limit_nonce/00003.png diff --git a/tests/speculos/screenshots/sign/nanox/limit_nonce/00004.png b/tests/ragger/snapshots/nanox/test_sign_limit_nonce/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/limit_nonce/00004.png rename to tests/ragger/snapshots/nanox/test_sign_limit_nonce/00004.png diff --git a/tests/ragger/snapshots/nanox/test_sign_limit_nonce/00005.png b/tests/ragger/snapshots/nanox/test_sign_limit_nonce/00005.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_limit_nonce/00005.png differ diff --git a/tests/speculos/screenshots/sign/nanox/limit_nonce/00000.png b/tests/ragger/snapshots/nanox/test_sign_nonce_display/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/limit_nonce/00000.png rename to tests/ragger/snapshots/nanox/test_sign_nonce_display/00000.png diff --git a/tests/ragger/snapshots/nanox/test_sign_nonce_display/00001.png b/tests/ragger/snapshots/nanox/test_sign_nonce_display/00001.png new file mode 100644 index 000000000..36ecb93f5 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_nonce_display/00001.png differ diff --git a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00002.png b/tests/ragger/snapshots/nanox/test_sign_nonce_display/00002.png similarity index 100% rename from tests/zemu/snapshots/nanox_transfer_112233445566_network/00002.png rename to tests/ragger/snapshots/nanox/test_sign_nonce_display/00002.png diff --git a/tests/speculos/screenshots/sign/nanox/nonce_display/00003.png b/tests/ragger/snapshots/nanox/test_sign_nonce_display/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/nonce_display/00003.png rename to tests/ragger/snapshots/nanox/test_sign_nonce_display/00003.png diff --git a/tests/speculos/screenshots/sign/nanox/nonce_display/00004.png b/tests/ragger/snapshots/nanox/test_sign_nonce_display/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/nonce_display/00004.png rename to tests/ragger/snapshots/nanox/test_sign_nonce_display/00004.png diff --git a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00005.png b/tests/ragger/snapshots/nanox/test_sign_nonce_display/00005.png similarity index 100% rename from tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00005.png rename to tests/ragger/snapshots/nanox/test_sign_nonce_display/00005.png diff --git a/tests/ragger/snapshots/nanox/test_sign_nonce_display/00006.png b/tests/ragger/snapshots/nanox/test_sign_nonce_display/00006.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_nonce_display/00006.png differ diff --git a/tests/speculos/screenshots/sign/nanox/nonce_display/00000.png b/tests/ragger/snapshots/nanox/test_sign_reject/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/nonce_display/00000.png rename to tests/ragger/snapshots/nanox/test_sign_reject/00000.png diff --git a/tests/ragger/snapshots/nanox/test_sign_reject/00001.png b/tests/ragger/snapshots/nanox/test_sign_reject/00001.png new file mode 100644 index 000000000..36ecb93f5 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_reject/00001.png differ diff --git a/tests/zemu/snapshots/nanox_transfer_bsc/00002.png b/tests/ragger/snapshots/nanox/test_sign_reject/00002.png similarity index 100% rename from tests/zemu/snapshots/nanox_transfer_bsc/00002.png rename to tests/ragger/snapshots/nanox/test_sign_reject/00002.png diff --git a/tests/speculos/screenshots/sign/nanox/reject/00003.png b/tests/ragger/snapshots/nanox/test_sign_reject/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/reject/00003.png rename to tests/ragger/snapshots/nanox/test_sign_reject/00003.png diff --git a/tests/speculos/screenshots/sign/nanox/reject/00004.png b/tests/ragger/snapshots/nanox/test_sign_reject/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/reject/00004.png rename to tests/ragger/snapshots/nanox/test_sign_reject/00004.png diff --git a/tests/ragger/snapshots/nanox/test_sign_reject/00005.png b/tests/ragger/snapshots/nanox/test_sign_reject/00005.png new file mode 100644 index 000000000..e90cd9db3 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_reject/00005.png differ diff --git a/tests/ragger/snapshots/nanox/test_sign_reject/00006.png b/tests/ragger/snapshots/nanox/test_sign_reject/00006.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_reject/00006.png differ diff --git a/tests/speculos/screenshots/sign/nanox/reject/00000.png b/tests/ragger/snapshots/nanox/test_sign_simple/00000.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/reject/00000.png rename to tests/ragger/snapshots/nanox/test_sign_simple/00000.png diff --git a/tests/ragger/snapshots/nanox/test_sign_simple/00001.png b/tests/ragger/snapshots/nanox/test_sign_simple/00001.png new file mode 100644 index 000000000..36ecb93f5 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_simple/00001.png differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00002.png b/tests/ragger/snapshots/nanox/test_sign_simple/00002.png similarity index 100% rename from tests/zemu/snapshots/nanox_transfer_ethereum/00002.png rename to tests/ragger/snapshots/nanox/test_sign_simple/00002.png diff --git a/tests/speculos/screenshots/sign/nanox/simple/00003.png b/tests/ragger/snapshots/nanox/test_sign_simple/00003.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/simple/00003.png rename to tests/ragger/snapshots/nanox/test_sign_simple/00003.png diff --git a/tests/speculos/screenshots/sign/nanox/simple/00004.png b/tests/ragger/snapshots/nanox/test_sign_simple/00004.png similarity index 100% rename from tests/speculos/screenshots/sign/nanox/simple/00004.png rename to tests/ragger/snapshots/nanox/test_sign_simple/00004.png diff --git a/tests/ragger/snapshots/nanox/test_sign_simple/00005.png b/tests/ragger/snapshots/nanox/test_sign_simple/00005.png new file mode 100644 index 000000000..657887225 Binary files /dev/null and b/tests/ragger/snapshots/nanox/test_sign_simple/00005.png differ diff --git a/tests/ragger/snapshots/stax/get_pk_rejected/00000.png b/tests/ragger/snapshots/stax/get_pk_rejected_60/00000.png similarity index 100% rename from tests/ragger/snapshots/stax/get_pk_rejected/00000.png rename to tests/ragger/snapshots/stax/get_pk_rejected_60/00000.png diff --git a/tests/ragger/snapshots/stax/get_pk_rejected/00001.png b/tests/ragger/snapshots/stax/get_pk_rejected_60/00001.png similarity index 100% rename from tests/ragger/snapshots/stax/get_pk_rejected/00001.png rename to tests/ragger/snapshots/stax/get_pk_rejected_60/00001.png diff --git a/tests/ragger/snapshots/stax/get_pk_rejected/00002.png b/tests/ragger/snapshots/stax/get_pk_rejected_60/00002.png similarity index 100% rename from tests/ragger/snapshots/stax/get_pk_rejected/00002.png rename to tests/ragger/snapshots/stax/get_pk_rejected_60/00002.png diff --git a/tests/ragger/snapshots/stax/get_pk_rejected_700/00000.png b/tests/ragger/snapshots/stax/get_pk_rejected_700/00000.png new file mode 100644 index 000000000..759339003 Binary files /dev/null and b/tests/ragger/snapshots/stax/get_pk_rejected_700/00000.png differ diff --git a/tests/ragger/snapshots/stax/get_pk_rejected_700/00001.png b/tests/ragger/snapshots/stax/get_pk_rejected_700/00001.png new file mode 100644 index 000000000..aa683fab0 Binary files /dev/null and b/tests/ragger/snapshots/stax/get_pk_rejected_700/00001.png differ diff --git a/tests/ragger/snapshots/stax/get_pk_rejected_700/00002.png b/tests/ragger/snapshots/stax/get_pk_rejected_700/00002.png new file mode 100644 index 000000000..b0eba3f0c Binary files /dev/null and b/tests/ragger/snapshots/stax/get_pk_rejected_700/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_clone_thundercore/00000.png b/tests/ragger/snapshots/stax/test_clone_thundercore/00000.png new file mode 100644 index 000000000..f992e718a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_clone_thundercore/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_clone_thundercore/00001.png b/tests/ragger/snapshots/stax/test_clone_thundercore/00001.png new file mode 100644 index 000000000..aaf074560 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_clone_thundercore/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_clone_thundercore/00002.png b/tests/ragger/snapshots/stax/test_clone_thundercore/00002.png new file mode 100644 index 000000000..bc1ca9382 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_clone_thundercore/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_clone_thundercore/00003.png b/tests/ragger/snapshots/stax/test_clone_thundercore/00003.png new file mode 100644 index 000000000..a21279c8a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_clone_thundercore/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_clone_thundercore/00004.png b/tests/ragger/snapshots/stax/test_clone_thundercore/00004.png new file mode 100644 index 000000000..a21279c8a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_clone_thundercore/00004.png differ diff --git a/tests/ragger/snapshots/stax/test_get_eth2_pk/00000.png b/tests/ragger/snapshots/stax/test_get_eth2_pk/00000.png new file mode 100644 index 000000000..832d70e18 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_get_eth2_pk/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_get_eth2_pk/00001.png b/tests/ragger/snapshots/stax/test_get_eth2_pk/00001.png new file mode 100644 index 000000000..13499fcc9 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_get_eth2_pk/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_legacy_chainid/00000.png b/tests/ragger/snapshots/stax/test_legacy_chainid/00000.png new file mode 100644 index 000000000..74fa840cc Binary files /dev/null and b/tests/ragger/snapshots/stax/test_legacy_chainid/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_legacy_chainid/00001.png b/tests/ragger/snapshots/stax/test_legacy_chainid/00001.png new file mode 100644 index 000000000..6a59429f1 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_legacy_chainid/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_legacy_chainid/00002.png b/tests/ragger/snapshots/stax/test_legacy_chainid/00002.png new file mode 100644 index 000000000..930dba7ac Binary files /dev/null and b/tests/ragger/snapshots/stax/test_legacy_chainid/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_legacy_chainid/00003.png b/tests/ragger/snapshots/stax/test_legacy_chainid/00003.png new file mode 100644 index 000000000..aed7d3335 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_legacy_chainid/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_legacy_chainid/00004.png b/tests/ragger/snapshots/stax/test_legacy_chainid/00004.png new file mode 100644 index 000000000..a21279c8a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_legacy_chainid/00004.png differ diff --git a/tests/ragger/snapshots/stax/test_legacy_send_bsc/00000.png b/tests/ragger/snapshots/stax/test_legacy_send_bsc/00000.png new file mode 100644 index 000000000..5f9bab11e Binary files /dev/null and b/tests/ragger/snapshots/stax/test_legacy_send_bsc/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_legacy_send_bsc/00001.png b/tests/ragger/snapshots/stax/test_legacy_send_bsc/00001.png new file mode 100644 index 000000000..f13c0f55e Binary files /dev/null and b/tests/ragger/snapshots/stax/test_legacy_send_bsc/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_legacy_send_bsc/00002.png b/tests/ragger/snapshots/stax/test_legacy_send_bsc/00002.png new file mode 100644 index 000000000..35c265345 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_legacy_send_bsc/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_legacy_send_bsc/00003.png b/tests/ragger/snapshots/stax/test_legacy_send_bsc/00003.png new file mode 100644 index 000000000..ff517f2ef Binary files /dev/null and b/tests/ragger/snapshots/stax/test_legacy_send_bsc/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_legacy_send_bsc/00004.png b/tests/ragger/snapshots/stax/test_legacy_send_bsc/00004.png new file mode 100644 index 000000000..a21279c8a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_legacy_send_bsc/00004.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_metamask/00000.png b/tests/ragger/snapshots/stax/test_personal_sign_metamask/00000.png new file mode 100644 index 000000000..f7398110b Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_metamask/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_metamask/00001.png b/tests/ragger/snapshots/stax/test_personal_sign_metamask/00001.png new file mode 100644 index 000000000..e964717dd Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_metamask/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_metamask/00002.png b/tests/ragger/snapshots/stax/test_personal_sign_metamask/00002.png new file mode 100644 index 000000000..83a0d80f8 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_metamask/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_metamask/00003.png b/tests/ragger/snapshots/stax/test_personal_sign_metamask/00003.png new file mode 100644 index 000000000..1c2d6cd43 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_metamask/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00000.png b/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00000.png new file mode 100644 index 000000000..f7398110b Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00001.png b/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00001.png new file mode 100644 index 000000000..f5806b230 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00002.png b/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00002.png new file mode 100644 index 000000000..83a0d80f8 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00003.png b/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00003.png new file mode 100644 index 000000000..1c2d6cd43 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_non_ascii/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_opensea/00000.png b/tests/ragger/snapshots/stax/test_personal_sign_opensea/00000.png new file mode 100644 index 000000000..f7398110b Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_opensea/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_opensea/00001.png b/tests/ragger/snapshots/stax/test_personal_sign_opensea/00001.png new file mode 100644 index 000000000..a499291ee Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_opensea/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_opensea/00002.png b/tests/ragger/snapshots/stax/test_personal_sign_opensea/00002.png new file mode 100644 index 000000000..bbf0532c0 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_opensea/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_opensea/00003.png b/tests/ragger/snapshots/stax/test_personal_sign_opensea/00003.png new file mode 100644 index 000000000..83a0d80f8 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_opensea/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_opensea/00004.png b/tests/ragger/snapshots/stax/test_personal_sign_opensea/00004.png new file mode 100644 index 000000000..1c2d6cd43 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_opensea/00004.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_reject/00000.png b/tests/ragger/snapshots/stax/test_personal_sign_reject/00000.png new file mode 100644 index 000000000..f7398110b Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_reject/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_reject/00001.png b/tests/ragger/snapshots/stax/test_personal_sign_reject/00001.png new file mode 100644 index 000000000..d4cf6afbd Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_reject/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_reject/00002.png b/tests/ragger/snapshots/stax/test_personal_sign_reject/00002.png new file mode 100644 index 000000000..df803b1ac Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_reject/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_personal_sign_reject/00003.png b/tests/ragger/snapshots/stax/test_personal_sign_reject/00003.png new file mode 100644 index 000000000..b1ff1b3ab Binary files /dev/null and b/tests/ragger/snapshots/stax/test_personal_sign_reject/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00000.png b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00000.png new file mode 100644 index 000000000..f992e718a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00001.png b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00001.png new file mode 100644 index 000000000..107b38cc4 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00002.png b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00002.png new file mode 100644 index 000000000..24dbb3ca8 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00003.png b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00003.png new file mode 100644 index 000000000..d4429dd58 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00004.png b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00004.png new file mode 100644 index 000000000..687a019ce Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00004.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00005.png b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00005.png new file mode 100644 index 000000000..a21279c8a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_and_nonce_display/00005.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00000.png b/tests/ragger/snapshots/stax/test_sign_blind_simple/00000.png new file mode 100644 index 000000000..f992e718a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_simple/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00001.png b/tests/ragger/snapshots/stax/test_sign_blind_simple/00001.png new file mode 100644 index 000000000..107b38cc4 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_simple/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00002.png b/tests/ragger/snapshots/stax/test_sign_blind_simple/00002.png new file mode 100644 index 000000000..ec36a96f1 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_simple/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00003.png b/tests/ragger/snapshots/stax/test_sign_blind_simple/00003.png new file mode 100644 index 000000000..bc1ca9382 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_simple/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_blind_simple/00004.png b/tests/ragger/snapshots/stax/test_sign_blind_simple/00004.png new file mode 100644 index 000000000..a21279c8a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_blind_simple/00004.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_eip_2930/00000.png b/tests/ragger/snapshots/stax/test_sign_eip_2930/00000.png new file mode 100644 index 000000000..10cc82524 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_eip_2930/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_eip_2930/00001.png b/tests/ragger/snapshots/stax/test_sign_eip_2930/00001.png new file mode 100644 index 000000000..7009de19e Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_eip_2930/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_eip_2930/00002.png b/tests/ragger/snapshots/stax/test_sign_eip_2930/00002.png new file mode 100644 index 000000000..a27b17e42 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_eip_2930/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_eip_2930/00003.png b/tests/ragger/snapshots/stax/test_sign_eip_2930/00003.png new file mode 100644 index 000000000..c47bf6c29 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_eip_2930/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_eip_2930/00004.png b/tests/ragger/snapshots/stax/test_sign_eip_2930/00004.png new file mode 100644 index 000000000..a21279c8a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_eip_2930/00004.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_limit_nonce/00000.png b/tests/ragger/snapshots/stax/test_sign_limit_nonce/00000.png new file mode 100644 index 000000000..f992e718a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_limit_nonce/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_limit_nonce/00001.png b/tests/ragger/snapshots/stax/test_sign_limit_nonce/00001.png new file mode 100644 index 000000000..915fb9ca8 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_limit_nonce/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_limit_nonce/00002.png b/tests/ragger/snapshots/stax/test_sign_limit_nonce/00002.png new file mode 100644 index 000000000..2833c2381 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_limit_nonce/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_limit_nonce/00003.png b/tests/ragger/snapshots/stax/test_sign_limit_nonce/00003.png new file mode 100644 index 000000000..687a019ce Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_limit_nonce/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_limit_nonce/00004.png b/tests/ragger/snapshots/stax/test_sign_limit_nonce/00004.png new file mode 100644 index 000000000..a21279c8a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_limit_nonce/00004.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_nonce_display/00000.png b/tests/ragger/snapshots/stax/test_sign_nonce_display/00000.png new file mode 100644 index 000000000..f992e718a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_nonce_display/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_nonce_display/00001.png b/tests/ragger/snapshots/stax/test_sign_nonce_display/00001.png new file mode 100644 index 000000000..37f64b165 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_nonce_display/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_nonce_display/00002.png b/tests/ragger/snapshots/stax/test_sign_nonce_display/00002.png new file mode 100644 index 000000000..d4429dd58 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_nonce_display/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_nonce_display/00003.png b/tests/ragger/snapshots/stax/test_sign_nonce_display/00003.png new file mode 100644 index 000000000..687a019ce Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_nonce_display/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_nonce_display/00004.png b/tests/ragger/snapshots/stax/test_sign_nonce_display/00004.png new file mode 100644 index 000000000..a21279c8a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_nonce_display/00004.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_reject/00000.png b/tests/ragger/snapshots/stax/test_sign_reject/00000.png new file mode 100644 index 000000000..f992e718a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_reject/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_reject/00001.png b/tests/ragger/snapshots/stax/test_sign_reject/00001.png new file mode 100644 index 000000000..ec36a96f1 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_reject/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_reject/00002.png b/tests/ragger/snapshots/stax/test_sign_reject/00002.png new file mode 100644 index 000000000..bc1ca9382 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_reject/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_reject/00003.png b/tests/ragger/snapshots/stax/test_sign_reject/00003.png new file mode 100644 index 000000000..9d261148b Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_reject/00003.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_reject/00004.png b/tests/ragger/snapshots/stax/test_sign_reject/00004.png new file mode 100644 index 000000000..cebc8bede Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_reject/00004.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_reject/00005.png b/tests/ragger/snapshots/stax/test_sign_reject/00005.png new file mode 100644 index 000000000..b1ff1b3ab Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_reject/00005.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_simple/00000.png b/tests/ragger/snapshots/stax/test_sign_simple/00000.png new file mode 100644 index 000000000..f992e718a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_simple/00000.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_simple/00001.png b/tests/ragger/snapshots/stax/test_sign_simple/00001.png new file mode 100644 index 000000000..ec36a96f1 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_simple/00001.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_simple/00002.png b/tests/ragger/snapshots/stax/test_sign_simple/00002.png new file mode 100644 index 000000000..bc1ca9382 Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_simple/00002.png differ diff --git a/tests/ragger/snapshots/stax/test_sign_simple/00003.png b/tests/ragger/snapshots/stax/test_sign_simple/00003.png new file mode 100644 index 000000000..a21279c8a Binary files /dev/null and b/tests/ragger/snapshots/stax/test_sign_simple/00003.png differ diff --git a/tests/ragger/staking_deposit/key_handling/key_derivation/path.py b/tests/ragger/staking_deposit/key_handling/key_derivation/path.py new file mode 100644 index 000000000..b9e2e2b71 --- /dev/null +++ b/tests/ragger/staking_deposit/key_handling/key_derivation/path.py @@ -0,0 +1,40 @@ +from typing import List + +from bip_utils import Bip39SeedGenerator +from bip_utils.utils.mnemonic import Mnemonic + +from .tree import ( + derive_master_SK, + derive_child_SK, +) + + +def path_to_nodes(path: str) -> List[int]: + """ + Maps from a path string to a list of indices where each index represents the corresponding level in the path. + """ + path = path.replace(' ', '') + if not set(path).issubset(set('m1234567890/')): + raise ValueError(f"Invalid path {path}") + + indices = path.split('/') + + if indices[0] != 'm': + raise ValueError(f"The first character of path should be `m`. Got {indices[0]}.") + indices.pop(0) + + return [int(index) for index in indices] + + +def mnemonic_and_path_to_key(mnemonic: str, path: str) -> int: + """ + Return the SK at position `path`, derived from `mnemonic`. The password is to be + compliant with BIP39 mnemonics that use passwords, but is not used by this CLI outside of tests. + """ + #seed = get_seed(mnemonic) + seed = Bip39SeedGenerator(Mnemonic.FromString(mnemonic)).Generate() + + sk = derive_master_SK(seed) + for node in path_to_nodes(path): + sk = derive_child_SK(parent_SK=sk, index=node) + return sk diff --git a/tests/ragger/staking_deposit/key_handling/key_derivation/tree.py b/tests/ragger/staking_deposit/key_handling/key_derivation/tree.py new file mode 100644 index 000000000..53fcd0ec7 --- /dev/null +++ b/tests/ragger/staking_deposit/key_handling/key_derivation/tree.py @@ -0,0 +1,85 @@ +from staking_deposit.utils.crypto import ( + HKDF, + SHA256, +) +from py_ecc.optimized_bls12_381 import curve_order as bls_curve_order +from typing import List + + +def _flip_bits_256(input: int) -> int: + """ + Flips 256 bits worth of `input`. + """ + return input ^ (2**256 - 1) + + +def _IKM_to_lamport_SK(*, IKM: bytes, salt: bytes) -> List[bytes]: + """ + Derives the lamport SK for a given `IKM` and `salt`. + + Ref: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2333.md#ikm_to_lamport_sk + """ + OKM = HKDF(salt=salt, IKM=IKM, L=8160) + lamport_SK = [OKM[i: i + 32] for i in range(0, 8160, 32)] + return lamport_SK + + +def _parent_SK_to_lamport_PK(*, parent_SK: int, index: int) -> bytes: + """ + Derives the `index`th child's lamport PK from the `parent_SK`. + + Ref: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2333.md#parent_sk_to_lamport_pk + """ + salt = index.to_bytes(4, byteorder='big') + IKM = parent_SK.to_bytes(32, byteorder='big') + lamport_0 = _IKM_to_lamport_SK(IKM=IKM, salt=salt) + not_IKM = _flip_bits_256(parent_SK).to_bytes(32, byteorder='big') + lamport_1 = _IKM_to_lamport_SK(IKM=not_IKM, salt=salt) + lamport_SKs = lamport_0 + lamport_1 + lamport_PKs = [SHA256(sk) for sk in lamport_SKs] + compressed_PK = SHA256(b''.join(lamport_PKs)) + return compressed_PK + + +def _HKDF_mod_r(*, IKM: bytes, key_info: bytes=b'') -> int: + """ + Hashes the IKM using HKDF and returns the answer as an int modulo r, the BLS field order. + + Ref: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2333.md#hkdf_mod_r + """ + L = 48 # `ceil((3 * ceil(log2(r))) / 16)`, where `r` is the order of the BLS 12-381 curve + salt = b'BLS-SIG-KEYGEN-SALT-' + SK = 0 + while SK == 0: + salt = SHA256(salt) + okm = HKDF( + salt=salt, + IKM=IKM + b'\x00', # add postfix `I2OSP(0, 1)` + L=L, + info=key_info + L.to_bytes(2, 'big'), + ) + SK = int.from_bytes(okm, byteorder='big') % bls_curve_order + return SK + + +def derive_child_SK(*, parent_SK: int, index: int) -> int: + """ + Given a parent SK `parent_SK`, return the child SK at the supplied `index`. + + Ref: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2333.md#derive_child_sk + """ + if index < 0 or index >= 2**32: + raise IndexError(f"`index` should be greater than or equal to 0 and less than 2**32. Got index={index}.") + lamport_PK = _parent_SK_to_lamport_PK(parent_SK=parent_SK, index=index) + return _HKDF_mod_r(IKM=lamport_PK) + + +def derive_master_SK(seed: bytes) -> int: + """ + Given a seed, derive the master SK. + + Ref: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2333.md#derive_master_sk + """ + if len(seed) < 32: + raise ValueError(f"`len(seed)` should be greater than or equal to 32. Got {len(seed)}.") + return _HKDF_mod_r(IKM=seed) diff --git a/tests/ragger/staking_deposit/utils/crypto.py b/tests/ragger/staking_deposit/utils/crypto.py new file mode 100644 index 000000000..48a9d76a1 --- /dev/null +++ b/tests/ragger/staking_deposit/utils/crypto.py @@ -0,0 +1,55 @@ +from typing import Any + +from Crypto.Hash import ( + SHA256 as _sha256, + SHA512 as _sha512, +) +from Crypto.Protocol.KDF import ( + scrypt as _scrypt, + HKDF as _HKDF, + PBKDF2 as _PBKDF2, +) +from Crypto.Cipher import ( + AES as _AES +) + + +def SHA256(x: bytes) -> bytes: + return _sha256.new(x).digest() + + +def scrypt(*, password: str, salt: str, n: int, r: int, p: int, dklen: int) -> bytes: + if n * r * p < 2**20: # 128 MB memory usage + raise ValueError("The Scrypt parameters chosen are not secure.") + if n >= 2**(128 * r / 8): + raise ValueError("The given `n` should be less than `2**(128 * r / 8)`." + f"\tGot `n={n}`, r={r}, 2**(128 * r / 8)={2**(128 * r / 8)}") + res = _scrypt(password=password, salt=salt, key_len=dklen, N=n, r=r, p=p) + return res if isinstance(res, bytes) else res[0] # PyCryptodome can return Tuple[bytes] + + +def PBKDF2(*, password: bytes, salt: bytes, dklen: int, c: int, prf: str) -> bytes: + if 'sha' not in prf: + raise ValueError(f"String 'sha' is not in `prf`({prf})") + if 'sha256' in prf and c < 2**18: + ''' + Verify the number of rounds of SHA256-PBKDF2. SHA512 not checked as use in BIP39 + does not require, and therefore doesn't use, safe parameters (c=2048). + + Ref: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#from-mnemonic-to-seed + ''' + raise ValueError("The PBKDF2 parameters chosen are not secure.") + _hash = _sha256 if 'sha256' in prf else _sha512 + res = _PBKDF2(password=password, salt=salt, dkLen=dklen, count=c, hmac_hash_module=_hash) # type: ignore + return res if isinstance(res, bytes) else res[0] # PyCryptodome can return Tuple[bytes] + + +def HKDF(*, salt: bytes, IKM: bytes, L: int, info: bytes=b'') -> bytes: + res = _HKDF(master=IKM, key_len=L, salt=salt, hashmod=_sha256, context=info) + return res if isinstance(res, bytes) else res[0] # PyCryptodome can return Tuple[bytes] + + +def AES_128_CTR(*, key: bytes, iv: bytes) -> Any: + if len(key) != 16: + raise ValueError(f"The key length should be 16. Got {len(key)}.") + return _AES.new(key=key, mode=_AES.MODE_CTR, initial_value=iv, nonce=b'') diff --git a/tests/ragger/test_blind_sign.py b/tests/ragger/test_blind_sign.py index f3a9acb85..29bbd0c9c 100644 --- a/tests/ragger/test_blind_sign.py +++ b/tests/ragger/test_blind_sign.py @@ -1,22 +1,27 @@ +from pathlib import Path import json import pytest +from web3 import Web3 + +from client.client import EthAppClient, StatusWord + from ragger.backend import BackendInterface from ragger.firmware import Firmware from ragger.navigator import Navigator, NavInsID from ragger.error import ExceptionRAPDU -from ledger_app_clients.ethereum.client import EthAppClient, StatusWord -from web3 import Web3 -from constants import ROOT_SNAPSHOT_PATH, ABIS_FOLDER + +from constants import ABIS_FOLDER # Token approval, would require loading the "internal plugin" & # providing the token metadata from the CAL def test_blind_sign(firmware: Firmware, backend: BackendInterface, - navigator: Navigator): + navigator: Navigator, + default_screenshot_path: Path): app_client = EthAppClient(backend) - with open("%s/erc20.json" % (ABIS_FOLDER)) as file: + with open(f"{ABIS_FOLDER}/erc20.json", encoding="utf-8") as file: contract = Web3().eth.contract( abi=json.load(file), address=None @@ -41,13 +46,13 @@ def test_blind_sign(firmware: Firmware, pass assert e.value.status == StatusWord.INVALID_DATA - moves = list() + moves = [] if firmware.device.startswith("nano"): if firmware.device == "nanos": moves += [NavInsID.RIGHT_CLICK] moves += [NavInsID.BOTH_CLICK] else: moves += [NavInsID.USE_CASE_CHOICE_CONFIRM] - navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, + navigator.navigate_and_compare(default_screenshot_path, "blind-signed_approval", moves) diff --git a/tests/ragger/test_clone.py b/tests/ragger/test_clone.py new file mode 100644 index 000000000..be1e4cbe8 --- /dev/null +++ b/tests/ragger/test_clone.py @@ -0,0 +1,34 @@ +from pathlib import Path +from web3 import Web3 + +from ragger.backend import BackendInterface +from ragger.firmware import Firmware +from ragger.navigator import Navigator + +from test_sign import common + + +# Values used across all tests +ADDR = bytes.fromhex("5a321744667052affa8386ed49e00ef223cbffc3") +BIP32_PATH = "m/44'/1001'/0'/0/0" +NONCE = 68 +GAS_PRICE = 13 +GAS_LIMIT = 21000 +VALUE = 0.31415 + + +# Transfer on Clone app +def test_clone_thundercore(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + default_screenshot_path: Path, + test_name: str): + tx_params: dict = { + "nonce": NONCE, + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), + "gas": GAS_LIMIT, + "to": ADDR, + "value": Web3.to_wei(VALUE, "ether"), + "chainId": 108 + } + common(firmware, backend, navigator, default_screenshot_path, tx_params, test_name, BIP32_PATH) diff --git a/tests/ragger/test_configuration_cmd.py b/tests/ragger/test_configuration_cmd.py new file mode 100644 index 000000000..c8a8e95f7 --- /dev/null +++ b/tests/ragger/test_configuration_cmd.py @@ -0,0 +1,48 @@ +from pathlib import Path +from typing import List +import re +from ragger.backend import BackendInterface +from ragger.utils.misc import get_current_app_name_and_version + + +def test_check_version(backend: BackendInterface): + """Check version and name""" + + # Send the APDU + app_name, version = get_current_app_name_and_version(backend) + print(f" Name: {app_name}") + print(f" Version: {version}") + _verify_version(version.split("-")[0]) + + +def _verify_version(version: str) -> None: + """Verify the app version, based on defines in Makefile + + Args: + Version (str): Version to be checked + """ + + vers_dict = {} + vers_str = "" + lines = _read_makefile() + version_re = re.compile(r"^APPVERSION_(?P\w)\s?=\s?(?P\d*)", re.I) + for line in lines: + info = version_re.match(line) + if info: + dinfo = info.groupdict() + vers_dict[dinfo["part"]] = dinfo["val"] + try: + vers_str = f"{vers_dict['M']}.{vers_dict['N']}.{vers_dict['P']}" + except KeyError: + pass + assert version == vers_str + + +def _read_makefile() -> List[str]: + """Read lines from the parent Makefile """ + + parent = Path(__file__).parent.parent.parent.resolve() + makefile = f"{parent}/Makefile" + with open(makefile, "r", encoding="utf-8") as f_p: + lines = f_p.readlines() + return lines diff --git a/tests/ragger/test_domain_name.py b/tests/ragger/test_domain_name.py index 90f5419b0..0e0a90888 100644 --- a/tests/ragger/test_domain_name.py +++ b/tests/ragger/test_domain_name.py @@ -1,15 +1,15 @@ +from pathlib import Path import pytest +from web3 import Web3 + +import client.response_parser as ResponseParser +from client.client import EthAppClient, StatusWord +from client.settings import SettingID, settings_toggle + from ragger.backend import BackendInterface from ragger.firmware import Firmware from ragger.error import ExceptionRAPDU from ragger.navigator import Navigator, NavInsID -from constants import ROOT_SNAPSHOT_PATH - -import ledger_app_clients.ethereum.response_parser as ResponseParser -from ledger_app_clients.ethereum.client import EthAppClient, StatusWord -from ledger_app_clients.ethereum.settings import SettingID, settings_toggle - -from web3 import Web3 # Values used across all tests @@ -25,13 +25,14 @@ AMOUNT = 1.22 -@pytest.fixture(params=[False, True]) -def verbose(request) -> bool: +@pytest.fixture(name="verbose", params=[False, True]) +def verbose_fixture(request) -> bool: return request.param -def common(app_client: EthAppClient) -> int: - if app_client._client.firmware.device == "nanos": +def common(firmware: Firmware, app_client: EthAppClient) -> int: + + if firmware.device == "nanos": pytest.skip("Not supported on LNS") challenge = app_client.get_challenge() return ResponseParser.challenge(challenge.data) @@ -40,10 +41,10 @@ def common(app_client: EthAppClient) -> int: def test_send_fund(firmware: Firmware, backend: BackendInterface, navigator: Navigator, - test_name: str, + default_screenshot_path: Path, verbose: bool): app_client = EthAppClient(backend) - challenge = common(app_client) + challenge = common(firmware, app_client) if verbose: settings_toggle(firmware, navigator, [SettingID.VERBOSE_ENS]) @@ -59,7 +60,7 @@ def test_send_fund(firmware: Firmware, "value": Web3.to_wei(AMOUNT, "ether"), "chainId": CHAIN_ID }): - moves = list() + moves = [] if firmware.device.startswith("nano"): moves += [NavInsID.RIGHT_CLICK] * 4 if verbose: @@ -70,16 +71,14 @@ def test_send_fund(firmware: Firmware, if verbose: moves += [NavInsID.USE_CASE_REVIEW_TAP] moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] - navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, + navigator.navigate_and_compare(default_screenshot_path, "domain_name_verbose_" + str(verbose), moves) -def test_send_fund_wrong_challenge(firmware: Firmware, - backend: BackendInterface, - navigator: Navigator): +def test_send_fund_wrong_challenge(firmware: Firmware, backend: BackendInterface): app_client = EthAppClient(backend) - challenge = common(app_client) + challenge = common(firmware, app_client) with pytest.raises(ExceptionRAPDU) as e: app_client.provide_domain_name(~challenge & 0xffffffff, NAME, ADDR) @@ -89,9 +88,9 @@ def test_send_fund_wrong_challenge(firmware: Firmware, def test_send_fund_wrong_addr(firmware: Firmware, backend: BackendInterface, navigator: Navigator, - test_name: str): + default_screenshot_path: Path): app_client = EthAppClient(backend) - challenge = common(app_client) + challenge = common(firmware, app_client) app_client.provide_domain_name(challenge, NAME, ADDR) @@ -107,14 +106,14 @@ def test_send_fund_wrong_addr(firmware: Firmware, "value": Web3.to_wei(AMOUNT, "ether"), "chainId": CHAIN_ID }): - moves = list() + moves = [] if firmware.device.startswith("nano"): moves += [NavInsID.RIGHT_CLICK] * 4 moves += [NavInsID.BOTH_CLICK] else: moves += [NavInsID.USE_CASE_REVIEW_TAP] * 2 moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] - navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, + navigator.navigate_and_compare(default_screenshot_path, "domain_name_wrong_addr", moves) @@ -122,9 +121,9 @@ def test_send_fund_wrong_addr(firmware: Firmware, def test_send_fund_non_mainnet(firmware: Firmware, backend: BackendInterface, navigator: Navigator, - test_name: str): + default_screenshot_path: Path): app_client = EthAppClient(backend) - challenge = common(app_client) + challenge = common(firmware, app_client) app_client.provide_domain_name(challenge, NAME, ADDR) @@ -137,14 +136,14 @@ def test_send_fund_non_mainnet(firmware: Firmware, "value": Web3.to_wei(AMOUNT, "ether"), "chainId": 5 }): - moves = list() + moves = [] if firmware.device.startswith("nano"): moves += [NavInsID.RIGHT_CLICK] * 5 moves += [NavInsID.BOTH_CLICK] else: moves += [NavInsID.USE_CASE_REVIEW_TAP] * 2 moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] - navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, + navigator.navigate_and_compare(default_screenshot_path, "domain_name_non_mainnet", moves) @@ -152,9 +151,9 @@ def test_send_fund_non_mainnet(firmware: Firmware, def test_send_fund_unknown_chain(firmware: Firmware, backend: BackendInterface, navigator: Navigator, - test_name: str): + default_screenshot_path: Path): app_client = EthAppClient(backend) - challenge = common(app_client) + challenge = common(firmware, app_client) app_client.provide_domain_name(challenge, NAME, ADDR) @@ -167,56 +166,48 @@ def test_send_fund_unknown_chain(firmware: Firmware, "value": Web3.to_wei(AMOUNT, "ether"), "chainId": 9 }): - moves = list() + moves = [] if firmware.device.startswith("nano"): moves += [NavInsID.RIGHT_CLICK] * 5 moves += [NavInsID.BOTH_CLICK] else: moves += [NavInsID.USE_CASE_REVIEW_TAP] * 3 moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] - navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, + navigator.navigate_and_compare(default_screenshot_path, "domain_name_unknown_chain", moves) -def test_send_fund_domain_too_long(firmware: Firmware, - backend: BackendInterface, - navigator: Navigator): +def test_send_fund_domain_too_long(firmware: Firmware, backend: BackendInterface): app_client = EthAppClient(backend) - challenge = common(app_client) + challenge = common(firmware, app_client) with pytest.raises(ExceptionRAPDU) as e: app_client.provide_domain_name(challenge, "ledger" + "0"*25 + ".eth", ADDR) assert e.value.status == StatusWord.INVALID_DATA -def test_send_fund_domain_invalid_character(firmware: Firmware, - backend: BackendInterface, - navigator: Navigator): +def test_send_fund_domain_invalid_character(firmware: Firmware, backend: BackendInterface): app_client = EthAppClient(backend) - challenge = common(app_client) + challenge = common(firmware, app_client) with pytest.raises(ExceptionRAPDU) as e: app_client.provide_domain_name(challenge, "l\xe8dger.eth", ADDR) assert e.value.status == StatusWord.INVALID_DATA -def test_send_fund_uppercase(firmware: Firmware, - backend: BackendInterface, - navigator: Navigator): +def test_send_fund_uppercase(firmware: Firmware, backend: BackendInterface): app_client = EthAppClient(backend) - challenge = common(app_client) + challenge = common(firmware, app_client) with pytest.raises(ExceptionRAPDU) as e: app_client.provide_domain_name(challenge, NAME.upper(), ADDR) assert e.value.status == StatusWord.INVALID_DATA -def test_send_fund_domain_non_ens(firmware: Firmware, - backend: BackendInterface, - navigator: Navigator): +def test_send_fund_domain_non_ens(firmware: Firmware, backend: BackendInterface): app_client = EthAppClient(backend) - challenge = common(app_client) + challenge = common(firmware, app_client) with pytest.raises(ExceptionRAPDU) as e: app_client.provide_domain_name(challenge, "ledger.hte", ADDR) diff --git a/tests/ragger/test_eip191.py b/tests/ragger/test_eip191.py new file mode 100644 index 000000000..3fc9cbf82 --- /dev/null +++ b/tests/ragger/test_eip191.py @@ -0,0 +1,167 @@ +from pathlib import Path +import pytest + +from client.client import EthAppClient, StatusWord +import client.response_parser as ResponseParser +from client.utils import recover_message + +from ragger.error import ExceptionRAPDU +from ragger.backend import BackendInterface +from ragger.firmware import Firmware +from ragger.navigator import Navigator, NavInsID + + +BIP32_PATH = "m/44'/60'/0'/0/0" + + +def test_personal_sign_metamask(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + + msg = "Example `personal_sign` message" + + app_client = EthAppClient(backend) + + with app_client.get_public_addr(display=False): + pass + _, DEVICE_ADDR, _ = ResponseParser.pk_addr(app_client.response().data) + + with app_client.personal_sign(BIP32_PATH, msg.encode('utf-8')): + if firmware.device.startswith("nano"): + next_action = NavInsID.RIGHT_CLICK + confirm_action = NavInsID.BOTH_CLICK + initial_instructions = [NavInsID.RIGHT_CLICK] + # Skip 1st screen because 'Sign' is already present + navigator.navigate(initial_instructions, + screen_change_after_last_instruction=False) + else: + next_action = NavInsID.USE_CASE_REVIEW_TAP + confirm_action = NavInsID.USE_CASE_REVIEW_CONFIRM + + navigator.navigate_until_text_and_compare(next_action, + [confirm_action], + "Sign", + default_screenshot_path, + test_name) + + # verify signature + vrs = ResponseParser.signature(app_client.response().data) + addr = recover_message(msg.encode('utf-8'), vrs) + assert addr == DEVICE_ADDR + + +def test_personal_sign_non_ascii(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + + msg = "0x9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658" + + app_client = EthAppClient(backend) + + with app_client.get_public_addr(display=False): + pass + _, DEVICE_ADDR, _ = ResponseParser.pk_addr(app_client.response().data) + + with app_client.personal_sign(BIP32_PATH, msg.encode('utf-8')): + if firmware.device.startswith("nano"): + next_action = NavInsID.RIGHT_CLICK + confirm_action = NavInsID.BOTH_CLICK + initial_instructions = [NavInsID.RIGHT_CLICK] + # Skip 1st screen because 'Sign' is already present + navigator.navigate(initial_instructions, + screen_change_before_first_instruction=False, + screen_change_after_last_instruction=False) + else: + next_action = NavInsID.USE_CASE_REVIEW_TAP + confirm_action = NavInsID.USE_CASE_REVIEW_CONFIRM + + navigator.navigate_until_text_and_compare(next_action, + [confirm_action], + "Sign", + default_screenshot_path, + test_name) + + # verify signature + vrs = ResponseParser.signature(app_client.response().data) + addr = recover_message(msg.encode('utf-8'), vrs) + assert addr == DEVICE_ADDR + + +def test_personal_sign_opensea(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + + msg = "Welcome to OpenSea!\n\nClick to sign in and accept the OpenSea Terms of Service: https://opensea.io/tos\n\nThis request will not trigger a blockchain transaction or cost any gas fees.\n\nYour authentication status will reset after 24 hours.\n\nWallet address:\n0x9858effd232b4033e47d90003d41ec34ecaeda94\n\nNonce:\n2b02c8a0-f74f-4554-9821-a28054dc9121" + + app_client = EthAppClient(backend) + + with app_client.get_public_addr(display=False): + pass + _, DEVICE_ADDR, _ = ResponseParser.pk_addr(app_client.response().data) + + if firmware.device == "nanos": + pytest.skip("Not supported on LNS") + with app_client.personal_sign(BIP32_PATH, msg.encode('utf-8')): + if firmware.device.startswith("nano"): + next_action = NavInsID.RIGHT_CLICK + confirm_action = NavInsID.BOTH_CLICK + initial_instructions = [NavInsID.RIGHT_CLICK] + # Skip 1st screen because 'Sign' is already present + navigator.navigate(initial_instructions, + screen_change_before_first_instruction=False, + screen_change_after_last_instruction=False) + else: + next_action = NavInsID.USE_CASE_REVIEW_TAP + confirm_action = NavInsID.USE_CASE_REVIEW_CONFIRM + + navigator.navigate_until_text_and_compare(next_action, + [confirm_action], + "Sign", + default_screenshot_path, + test_name) + + # verify signature + vrs = ResponseParser.signature(app_client.response().data) + addr = recover_message(msg.encode('utf-8'), vrs) + assert addr == DEVICE_ADDR + + +def test_personal_sign_reject(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + + msg = "This is an reject sign" + + app_client = EthAppClient(backend) + + try: + with app_client.personal_sign(BIP32_PATH, msg.encode('utf-8')): + if firmware.device.startswith("nano"): + next_action = NavInsID.RIGHT_CLICK + confirm_action = NavInsID.BOTH_CLICK + navigator.navigate_until_text_and_compare(next_action, + [confirm_action], + "Cancel", + default_screenshot_path, + test_name) + else: + # instructions = [NavInsID.USE_CASE_REVIEW_TAP] + instructions = [NavInsID.USE_CASE_CHOICE_REJECT, + NavInsID.USE_CASE_CHOICE_CONFIRM, + NavInsID.USE_CASE_STATUS_DISMISS] + navigator.navigate_and_compare(default_screenshot_path, + test_name, + instructions) + + except ExceptionRAPDU as e: + assert e.status == StatusWord.CONDITION_NOT_SATISFIED + else: + assert False # An exception should have been raised diff --git a/tests/ragger/test_eip712.py b/tests/ragger/test_eip712.py index 1aedc0024..99865ef52 100644 --- a/tests/ragger/test_eip712.py +++ b/tests/ragger/test_eip712.py @@ -1,21 +1,22 @@ import fnmatch import os -import pytest import time from configparser import ConfigParser from functools import partial from pathlib import Path -from ragger.backend import BackendInterface -from ragger.firmware import Firmware -from ragger.navigator import Navigator, NavInsID import json from typing import Optional -from constants import ROOT_SNAPSHOT_PATH +import pytest -import ledger_app_clients.ethereum.response_parser as ResponseParser -from ledger_app_clients.ethereum.client import EthAppClient -from ledger_app_clients.ethereum.eip712 import InputData -from ledger_app_clients.ethereum.settings import SettingID, settings_toggle +import client.response_parser as ResponseParser +from client.utils import recover_message +from client.client import EthAppClient +from client.eip712 import InputData +from client.settings import SettingID, settings_toggle + +from ragger.backend import BackendInterface +from ragger.firmware import Firmware +from ragger.navigator import Navigator, NavInsID class SnapshotsConfig: @@ -32,7 +33,7 @@ def __init__(self, test_name: str, idx: int = 0): def eip712_json_path() -> str: - return "%s/eip712_input_files" % (os.path.dirname(__file__)) + return f"{os.path.dirname(__file__)}/eip712_input_files" def input_files() -> list[str]: @@ -43,18 +44,18 @@ def input_files() -> list[str]: return sorted(files) -@pytest.fixture(params=input_files()) -def input_file(request) -> str: +@pytest.fixture(name="input_file", params=input_files()) +def input_file_fixture(request) -> str: return Path(request.param) -@pytest.fixture(params=[True, False]) -def verbose(request) -> bool: +@pytest.fixture(name="verbose", params=[True, False]) +def verbose_fixture(request) -> bool: return request.param -@pytest.fixture(params=[False, True]) -def filtering(request) -> bool: +@pytest.fixture(name="filtering", params=[False, True]) +def filtering_fixture(request) -> bool: return request.param @@ -66,7 +67,7 @@ def test_eip712_legacy(firmware: Firmware, BIP32_PATH, bytes.fromhex('6137beb405d9ff777172aa879e33edb34a1460e701802746c5ef96e741710e59'), bytes.fromhex('eb4221181ff3f1a83ea7313993ca9218496e424604ba9492bb4052c03d5c3df8')): - moves = list() + moves = [] if firmware.device.startswith("nano"): moves += [NavInsID.RIGHT_CLICK] if firmware.device == "nanos": @@ -87,28 +88,29 @@ def test_eip712_legacy(firmware: Firmware, assert s == bytes.fromhex("52d8ba9153de9255da220ffd36762c0b027701a3b5110f0a765f94b16a9dfb55") -def autonext(fw: Firmware, nav: Navigator): - moves = list() - if fw.device.startswith("nano"): +def autonext(firmware: Firmware, navigator: Navigator, default_screenshot_path: Path): + moves = [] + if firmware.device.startswith("nano"): moves = [NavInsID.RIGHT_CLICK] else: moves = [NavInsID.USE_CASE_REVIEW_TAP] if snaps_config is not None: - nav.navigate_and_compare(ROOT_SNAPSHOT_PATH, - snaps_config.test_name, - moves, - screen_change_before_first_instruction=False, - screen_change_after_last_instruction=False, - snap_start_idx=snaps_config.idx) + navigator.navigate_and_compare(default_screenshot_path, + snaps_config.test_name, + moves, + screen_change_before_first_instruction=False, + screen_change_after_last_instruction=False, + snap_start_idx=snaps_config.idx) snaps_config.idx += 1 else: - nav.navigate(moves, + navigator.navigate(moves, screen_change_before_first_instruction=False, screen_change_after_last_instruction=False) -def eip712_new_common(fw: Firmware, - nav: Navigator, +def eip712_new_common(firmware: Firmware, + navigator: Navigator, + default_screenshot_path: Path, app_client: EthAppClient, json_data: dict, filters: Optional[dict], @@ -116,10 +118,10 @@ def eip712_new_common(fw: Firmware, assert InputData.process_data(app_client, json_data, filters, - partial(autonext, fw, nav)) + partial(autonext, firmware, navigator, default_screenshot_path)) with app_client.eip712_sign_new(BIP32_PATH): - moves = list() - if fw.device.startswith("nano"): + moves = [] + if firmware.device.startswith("nano"): # need to skip the message hash if not verbose and filters is None: moves = [NavInsID.RIGHT_CLICK] * 2 @@ -131,56 +133,59 @@ def eip712_new_common(fw: Firmware, moves += [NavInsID.USE_CASE_REVIEW_TAP] moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] if snaps_config is not None: - nav.navigate_and_compare(ROOT_SNAPSHOT_PATH, + navigator.navigate_and_compare(default_screenshot_path, snaps_config.test_name, moves, snap_start_idx=snaps_config.idx) snaps_config.idx += 1 else: - nav.navigate(moves) + navigator.navigate(moves) return ResponseParser.signature(app_client.response().data) def test_eip712_new(firmware: Firmware, backend: BackendInterface, navigator: Navigator, + default_screenshot_path: Path, input_file: Path, verbose: bool, filtering: bool): app_client = EthAppClient(backend) if firmware.device == "nanos": pytest.skip("Not supported on LNS") - else: - test_path = "%s/%s" % (input_file.parent, "-".join(input_file.stem.split("-")[:-1])) - conf_file = "%s.ini" % (test_path) - filters = None - if filtering: - try: - with open("%s-filter.json" % (test_path)) as f: - filters = json.load(f) - except (IOError, json.decoder.JSONDecodeError) as e: - pytest.skip("Filter file error: %s" % (e.strerror)) - - config = ConfigParser() - config.read(conf_file) - - # sanity check - assert "signature" in config.sections() - assert "v" in config["signature"] - assert "r" in config["signature"] - assert "s" in config["signature"] - - if verbose: - settings_toggle(firmware, navigator, [SettingID.VERBOSE_EIP712]) - - with open(input_file) as file: - v, r, s = eip712_new_common(firmware, - navigator, - app_client, - json.load(file), - filters, - verbose) + test_path = f"{input_file.parent}/{'-'.join(input_file.stem.split('-')[:-1])}" + conf_file = f"{test_path}.ini" + + filters = None + if filtering: + try: + filterfile = Path(f"{test_path}-filter.json") + with open(filterfile, encoding="utf-8") as f: + filters = json.load(f) + except (IOError, json.decoder.JSONDecodeError) as e: + pytest.skip(f"{filterfile.name}: {e.strerror}") + + config = ConfigParser() + config.read(conf_file) + + # sanity check + assert "signature" in config.sections() + assert "v" in config["signature"] + assert "r" in config["signature"] + assert "s" in config["signature"] + + if verbose: + settings_toggle(firmware, navigator, [SettingID.VERBOSE_EIP712]) + + with open(input_file, encoding="utf-8") as file: + v, r, s = eip712_new_common(firmware, + navigator, + default_screenshot_path, + app_client, + json.load(file), + filters, + verbose) assert v == bytes.fromhex(config["signature"]["v"]) assert r == bytes.fromhex(config["signature"]["r"]) @@ -190,50 +195,56 @@ def test_eip712_new(firmware: Firmware, def test_eip712_address_substitution(firmware: Firmware, backend: BackendInterface, navigator: Navigator, + default_screenshot_path: Path, verbose: bool): global snaps_config app_client = EthAppClient(backend) if firmware.device == "nanos": pytest.skip("Not supported on LNS") + + with app_client.get_public_addr(display=False): + pass + _, DEVICE_ADDR, _ = ResponseParser.pk_addr(app_client.response().data) + + test_name = "eip712_address_substitution" + if verbose: + test_name += "_verbose" + snaps_config = SnapshotsConfig(test_name) + with open(f"{eip712_json_path()}/address_substitution.json", encoding="utf-8") as file: + data = json.load(file) + + app_client.provide_token_metadata("DAI", + bytes.fromhex(data["message"]["token"][2:]), + 18, + 1) + + challenge = ResponseParser.challenge(app_client.get_challenge().data) + app_client.provide_domain_name(challenge, + "vitalik.eth", + bytes.fromhex(data["message"]["to"][2:])) + + if verbose: + settings_toggle(firmware, navigator, [SettingID.VERBOSE_EIP712]) + filters = None else: - test_name = "eip712_address_substitution" - if verbose: - test_name += "_verbose" - snaps_config = SnapshotsConfig(test_name) - with open("%s/address_substitution.json" % (eip712_json_path())) as file: - data = json.load(file) - - app_client.provide_token_metadata("DAI", - bytes.fromhex(data["message"]["token"][2:]), - 18, - 1) - - challenge = ResponseParser.challenge(app_client.get_challenge().data) - app_client.provide_domain_name(challenge, - "vitalik.eth", - bytes.fromhex(data["message"]["to"][2:])) - - if verbose: - settings_toggle(firmware, navigator, [SettingID.VERBOSE_EIP712]) - filters = None - else: - filters = { - "name": "Token test", - "fields": { - "amount": "Amount", - "token": "Token", - "to": "To", - } - } - - v, r, s = eip712_new_common(firmware, - navigator, - app_client, - data, - filters, - verbose) - - assert v == bytes.fromhex("1b") - assert r == bytes.fromhex("d4a0e058251cdc3845aaa5eb8409d8a189ac668db7c55a64eb3121b0db7fd8c0") - assert s == bytes.fromhex("3221800e4f45272c6fa8fafda5e94c848d1a4b90c442aa62afa8e8d6a9af0f00") + filters = { + "name": "Token test", + "fields": { + "amount": "Amount", + "token": "Token", + "to": "To", + } + } + + vrs = eip712_new_common(firmware, + navigator, + default_screenshot_path, + app_client, + data, + filters, + verbose) + + # verify signature + addr = recover_message(data, vrs) + assert addr == DEVICE_ADDR diff --git a/tests/ragger/test_erc20information.py b/tests/ragger/test_erc20information.py new file mode 100644 index 000000000..130b3ac9c --- /dev/null +++ b/tests/ragger/test_erc20information.py @@ -0,0 +1,27 @@ +import pytest + +from client.client import EthAppClient, StatusWord + +from ragger.error import ExceptionRAPDU +from ragger.backend import BackendInterface + + +def test_provide_erc20_token(backend: BackendInterface): + + app_client = EthAppClient(backend) + + addr = bytes.fromhex("e41d2489571d322189246dafa5ebde1f4699f498") + response = app_client.provide_token_metadata("ZRX", addr, 18, 1) + assert response.status == StatusWord.OK + + +def test_provide_erc20_token_error(backend: BackendInterface): + + app_client = EthAppClient(backend) + + addr = bytes.fromhex("e41d2489571d322189246dafa5ebde1f4699f498") + sign = bytes.fromhex("deadbeef") + with pytest.raises(ExceptionRAPDU) as e: + app_client.provide_token_metadata("ZRX", addr, 18, 1, sign) + + assert e.value.status == StatusWord.INVALID_DATA diff --git a/tests/ragger/test_get_address.py b/tests/ragger/test_get_address.py index de933c287..fd7b682ff 100644 --- a/tests/ragger/test_get_address.py +++ b/tests/ragger/test_get_address.py @@ -1,30 +1,37 @@ -import pytest +from pathlib import Path from typing import Optional +import pytest + +from py_ecc.bls import G2ProofOfPossession as bls + +from staking_deposit.key_handling.key_derivation.path import mnemonic_and_path_to_key + +from ragger.bip.seed import SPECULOS_MNEMONIC from ragger.error import ExceptionRAPDU from ragger.firmware import Firmware from ragger.backend import BackendInterface from ragger.navigator import Navigator, NavInsID -from ledger_app_clients.ethereum.client import EthAppClient, StatusWord -import ledger_app_clients.ethereum.response_parser as ResponseParser from ragger.bip import calculate_public_key_and_chaincode, CurveChoice -from constants import ROOT_SNAPSHOT_PATH + +from client.client import EthAppClient, StatusWord +import client.response_parser as ResponseParser -@pytest.fixture(params=[True, False]) -def with_chaincode(request) -> bool: +@pytest.fixture(name="with_chaincode", params=[True, False]) +def with_chaincode_fixture(request) -> bool: return request.param -@pytest.fixture(params=[None, 1, 2, 5, 137]) -def chain(request) -> Optional[int]: +@pytest.fixture(name="chain", params=[None, 1, 2, 5, 137]) +def chain_fixture(request) -> Optional[int]: return request.param def get_moves(firmware: Firmware, - navigator: BackendInterface, chain: Optional[int] = None, - reject: bool = False): - moves = list() + reject: bool = False, + pk_eth2: bool = False): + moves = [] if firmware.is_nano: moves += [NavInsID.RIGHT_CLICK] @@ -34,9 +41,14 @@ def get_moves(firmware: Firmware, moves += [NavInsID.RIGHT_CLICK] if reject: moves += [NavInsID.RIGHT_CLICK] + if pk_eth2: + if firmware.device == "nanos": + moves += [NavInsID.RIGHT_CLICK] * 2 + moves += [NavInsID.RIGHT_CLICK] moves += [NavInsID.BOTH_CLICK] else: - moves += [NavInsID.USE_CASE_REVIEW_TAP] + if not pk_eth2: + moves += [NavInsID.USE_CASE_REVIEW_TAP] if chain is not None and chain > 1: moves += [NavInsID.USE_CASE_ADDRESS_CONFIRMATION_TAP] if reject: @@ -47,33 +59,65 @@ def get_moves(firmware: Firmware, return moves +@pytest.mark.parametrize( + "path, suffix", + [ + ("m/44'/60'/0'/0/0", "60"), + ("m/44'/700'/1'/0/0", "700") + ], +) def test_get_pk_rejected(firmware: Firmware, backend: BackendInterface, - navigator: Navigator): + navigator: Navigator, + default_screenshot_path: Path, + path, + suffix): app_client = EthAppClient(backend) with pytest.raises(ExceptionRAPDU) as e: - with app_client.get_public_addr(): - navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, - "get_pk_rejected", - get_moves(firmware, navigator, reject=True)) + with app_client.get_public_addr(bip32_path=path): + navigator.navigate_and_compare(default_screenshot_path, + f"get_pk_rejected_{suffix}", + get_moves(firmware, reject=True)) assert e.value.status == StatusWord.CONDITION_NOT_SATISFIED def test_get_pk(firmware: Firmware, backend: BackendInterface, navigator: Navigator, + default_screenshot_path: Path, with_chaincode: bool, chain: Optional[int]): app_client = EthAppClient(backend) with app_client.get_public_addr(chaincode=with_chaincode, chain_id=chain): - navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, - "get_pk_%s" % (chain), - get_moves(firmware, navigator, chain=chain)) - pk, addr, chaincode = ResponseParser.pk_addr(app_client.response().data, with_chaincode) + navigator.navigate_and_compare(default_screenshot_path, + f"get_pk_{chain}", + get_moves(firmware, chain=chain)) + pk, _, chaincode = ResponseParser.pk_addr(app_client.response().data, with_chaincode) ref_pk, ref_chaincode = calculate_public_key_and_chaincode(curve=CurveChoice.Secp256k1, path="m/44'/60'/0'/0/0") assert pk.hex() == ref_pk if with_chaincode: assert chaincode.hex() == ref_chaincode + + +def test_get_eth2_pk(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + app_client = EthAppClient(backend) + + path="m/12381/3600/0/0" + with app_client.get_eth2_public_addr(bip32_path=path): + navigator.navigate_and_compare(default_screenshot_path, + test_name, + get_moves(firmware, pk_eth2=True)) + + pk = app_client.response().data + ref_pk = bls.SkToPk(mnemonic_and_path_to_key(SPECULOS_MNEMONIC, path)) + if firmware.name == "stax": + pk = pk[1:49] + + assert pk == ref_pk diff --git a/tests/ragger/test_nft.py b/tests/ragger/test_nft.py index 9046e39d4..7dc611617 100644 --- a/tests/ragger/test_nft.py +++ b/tests/ragger/test_nft.py @@ -1,17 +1,19 @@ -import pytest -from typing import Optional, Any from pathlib import Path -from typing import Callable +from typing import Callable, Optional, Any +import json +import pytest +from web3 import Web3 + +from client.client import EthAppClient, StatusWord +import client.response_parser as ResponseParser +from client.utils import get_selector_from_data, recover_transaction + from ragger.error import ExceptionRAPDU from ragger.firmware import Firmware from ragger.backend import BackendInterface from ragger.navigator import Navigator, NavInsID -from ledger_app_clients.ethereum.client import EthAppClient, StatusWord -import ledger_app_clients.ethereum.response_parser as ResponseParser -from ledger_app_clients.ethereum.utils import get_selector_from_data, recover_transaction -from web3 import Web3 -import json -from constants import ROOT_SNAPSHOT_PATH, ABIS_FOLDER + +from constants import ABIS_FOLDER BIP32_PATH = "m/44'/60'/0'/0/0" @@ -52,7 +54,7 @@ def common_nav_nft(is_nano: bool, nano_steps: int, stax_steps: int, reject: bool) -> list[NavInsID]: - moves = list() + moves = [] if is_nano: moves += [NavInsID.RIGHT_CLICK] * nano_steps if reject: @@ -71,23 +73,24 @@ def common_nav_nft(is_nano: bool, def snapshot_test_name(nft_type: str, fn: str, chain_id: int, reject: bool) -> str: - name = "%s_%s_%s" % (nft_type, fn, str(chain_id)) + name = f"{nft_type}_{fn}_{str(chain_id)}" if reject: name += "-rejected" return name -def common_test_nft(fw: Firmware, - back: BackendInterface, - nav: Navigator, +def common_test_nft(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + default_screenshot_path: Path, collec: NFTCollection, action: Action, reject: bool, plugin_name: str): global DEVICE_ADDR - app_client = EthAppClient(back) + app_client = EthAppClient(backend) - if app_client._client.firmware.name == "nanos": + if firmware.device == "nanos": pytest.skip("Not supported on LNS") if DEVICE_ADDR is None: # to only have to request it once @@ -111,12 +114,12 @@ def common_test_nft(fw: Firmware, "data": data, } with app_client.sign(BIP32_PATH, tx_params): - nav.navigate_and_compare(ROOT_SNAPSHOT_PATH, + navigator.navigate_and_compare(default_screenshot_path, snapshot_test_name(plugin_name.lower(), action.fn_name, collec.chain_id, reject), - action.nav_fn(fw.is_nano, + action.nav_fn(firmware.is_nano, collec.chain_id, reject)) # verify signature @@ -126,13 +129,14 @@ def common_test_nft(fw: Firmware, def common_test_nft_reject(test_fn: Callable, - fw: Firmware, - back: BackendInterface, - nav: Navigator, + firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + default_screenshot_path: Path, collec: NFTCollection, action: Action): with pytest.raises(ExceptionRAPDU) as e: - test_fn(fw, back, nav, collec, action, True) + test_fn(firmware, backend, navigator, default_screenshot_path, collec, action, True) assert e.value.status == StatusWord.CONDITION_NOT_SATISFIED # ERC-721 @@ -140,13 +144,13 @@ def common_test_nft_reject(test_fn: Callable, ERC721_PLUGIN = "ERC721" -with open("%s/erc721.json" % (ABIS_FOLDER)) as file: +with open(f"{ABIS_FOLDER}/erc721.json", encoding="utf-8") as file: contract_erc721 = Web3().eth.contract( abi=json.load(file), address=bytes(20) ) -# ui nav functions +# ui navigator functions def nav_erc721_transfer_from(is_nano: bool, chain_id: int, @@ -212,25 +216,27 @@ def nav_erc721_set_approval_for_all(is_nano: bool, ] -@pytest.fixture(params=collecs_721) -def collec_721(request) -> NFTCollection: +@pytest.fixture(name="collec_721", params=collecs_721) +def collec_721_fixture(request) -> NFTCollection: return request.param -@pytest.fixture(params=actions_721) -def action_721(request) -> Action: +@pytest.fixture(name="action_721", params=actions_721) +def action_721_fixture(request) -> Action: return request.param def test_erc721(firmware: Firmware, backend: BackendInterface, navigator: Navigator, + default_screenshot_path: Path, collec_721: NFTCollection, action_721: Action, reject: bool = False): common_test_nft(firmware, backend, navigator, + default_screenshot_path, collec_721, action_721, reject, @@ -239,11 +245,13 @@ def test_erc721(firmware: Firmware, def test_erc721_reject(firmware: Firmware, backend: BackendInterface, - navigator: Navigator): + navigator: Navigator, + default_screenshot_path: Path): common_test_nft_reject(test_erc721, firmware, backend, navigator, + default_screenshot_path, collecs_721[0], actions_721[0]) @@ -252,14 +260,14 @@ def test_erc721_reject(firmware: Firmware, ERC1155_PLUGIN = "ERC1155" -with open("%s/erc1155.json" % (ABIS_FOLDER)) as file: +with open(f"{ABIS_FOLDER}/erc1155.json", encoding="utf-8") as file: contract_erc1155 = Web3().eth.contract( abi=json.load(file), address=bytes(20) ) -# ui nav functions +# ui navigator functions def nav_erc1155_safe_transfer_from(is_nano: bool, chain_id: int, @@ -323,25 +331,27 @@ def nav_erc1155_set_approval_for_all(is_nano: bool, ] -@pytest.fixture(params=collecs_1155) -def collec_1155(request) -> bool: +@pytest.fixture(name="collec_1155", params=collecs_1155) +def collec_1155_fixture(request) -> bool: return request.param -@pytest.fixture(params=actions_1155) -def action_1155(request) -> Action: +@pytest.fixture(name="action_1155", params=actions_1155) +def action_1155_fixture(request) -> Action: return request.param def test_erc1155(firmware: Firmware, backend: BackendInterface, navigator: Navigator, + default_screenshot_path: Path, collec_1155: NFTCollection, action_1155: Action, reject: bool = False): common_test_nft(firmware, backend, navigator, + default_screenshot_path, collec_1155, action_1155, reject, @@ -350,10 +360,12 @@ def test_erc1155(firmware: Firmware, def test_erc1155_reject(firmware: Firmware, backend: BackendInterface, - navigator: Navigator): + navigator: Navigator, + default_screenshot_path: Path): common_test_nft_reject(test_erc1155, firmware, backend, navigator, + default_screenshot_path, collecs_1155[0], actions_1155[0]) diff --git a/tests/ragger/test_sign.py b/tests/ragger/test_sign.py index 401be19a0..48a0fbe53 100644 --- a/tests/ragger/test_sign.py +++ b/tests/ragger/test_sign.py @@ -1,34 +1,49 @@ +from pathlib import Path +from web3 import Web3 + +from client.client import EthAppClient, StatusWord +import client.response_parser as ResponseParser +from client.settings import SettingID, settings_toggle +from client.utils import recover_transaction + +from ragger.error import ExceptionRAPDU from ragger.backend import BackendInterface from ragger.firmware import Firmware from ragger.navigator import Navigator, NavInsID -from ledger_app_clients.ethereum.client import EthAppClient -import ledger_app_clients.ethereum.response_parser as ResponseParser -from ledger_app_clients.ethereum.utils import recover_transaction -from web3 import Web3 # Values used across all tests CHAIN_ID = 1 ADDR = bytes.fromhex("0011223344556677889900112233445566778899") +ADDR2 = bytes.fromhex("5a321744667052affa8386ed49e00ef223cbffc3") +ADDR3 = bytes.fromhex("dac17f958d2ee523a2206206994597c13d831ec7") +ADDR4 = bytes.fromhex("b2bb2b958afa2e96dab3f3ce7162b87daea39017") BIP32_PATH = "m/44'/60'/0'/0/0" +BIP32_PATH2 = "m/44'/60'/1'/0/0" NONCE = 21 +NONCE2 = 68 GAS_PRICE = 13 +GAS_PRICE2 = 5 GAS_LIMIT = 21000 AMOUNT = 1.22 +AMOUNT2 = 0.31415 -def common(fw: Firmware, - back: BackendInterface, - nav: Navigator, - tx_params: dict): - app_client = EthAppClient(back) +def common(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + default_screenshot_path: Path, + tx_params: dict, + test_name: str = "", + path: str = BIP32_PATH): + app_client = EthAppClient(backend) - with app_client.get_public_addr(display=False): + with app_client.get_public_addr(bip32_path=path, display=False): pass _, DEVICE_ADDR, _ = ResponseParser.pk_addr(app_client.response().data) - with app_client.sign(BIP32_PATH, tx_params): - if fw.device.startswith("nano"): + with app_client.sign(path, tx_params): + if firmware.device.startswith("nano"): next_action = NavInsID.RIGHT_CLICK confirm_action = NavInsID.BOTH_CLICK end_text = "Accept" @@ -36,7 +51,15 @@ def common(fw: Firmware, next_action = NavInsID.USE_CASE_REVIEW_TAP confirm_action = NavInsID.USE_CASE_REVIEW_CONFIRM end_text = "Sign" - nav.navigate_until_text(next_action, [confirm_action], end_text) + + if test_name: + navigator.navigate_until_text_and_compare(next_action, + [confirm_action], + end_text, + default_screenshot_path, + test_name) + else: + navigator.navigate_until_text(next_action, [confirm_action], end_text) # verify signature vrs = ResponseParser.signature(app_client.response().data) @@ -44,19 +67,149 @@ def common(fw: Firmware, assert addr == DEVICE_ADDR -def test_legacy(firmware: Firmware, backend: BackendInterface, navigator: Navigator): - common(firmware, backend, navigator, { +def common_reject(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + default_screenshot_path: Path, + tx_params: dict, + test_name: str, + path: str = BIP32_PATH): + app_client = EthAppClient(backend) + + try: + with app_client.sign(path, tx_params): + if firmware.device.startswith("nano"): + next_action = NavInsID.RIGHT_CLICK + confirm_action = NavInsID.BOTH_CLICK + navigator.navigate_until_text_and_compare(next_action, + [confirm_action], + "Reject", + default_screenshot_path, + test_name) + else: + instructions = [NavInsID.USE_CASE_REVIEW_TAP] * 2 + instructions += [NavInsID.USE_CASE_CHOICE_REJECT, + NavInsID.USE_CASE_CHOICE_CONFIRM, + NavInsID.USE_CASE_STATUS_DISMISS] + navigator.navigate_and_compare(default_screenshot_path, + test_name, + instructions) + + except ExceptionRAPDU as e: + assert e.status == StatusWord.CONDITION_NOT_SATISFIED + else: + assert False # An exception should have been raised + + +def common_fail(backend: BackendInterface, + tx_params: dict, + expected: StatusWord, + path: str = BIP32_PATH): + app_client = EthAppClient(backend) + + try: + with app_client.sign(path, tx_params): + pass + + except ExceptionRAPDU as e: + assert e.status == expected + else: + assert False # An exception should have been raised + + +def test_legacy(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + default_screenshot_path: Path): + tx_params: dict = { "nonce": NONCE, "gasPrice": Web3.to_wei(GAS_PRICE, "gwei"), "gas": GAS_LIMIT, "to": ADDR, "value": Web3.to_wei(AMOUNT, "ether"), "chainId": CHAIN_ID - }) + } + common(firmware, backend, navigator, default_screenshot_path, tx_params) + + +# Transfer amount >= 2^87 Eth on Ethereum app should fail +def test_legacy_send_error(backend: BackendInterface): + tx_params: dict = { + "nonce": 38, + "gasPrice": 56775612312210000000001234554332, + "gas": GAS_LIMIT, + "to": ADDR3, + "value": 12345678912345678912345678000000000000000000, + "chainId": CHAIN_ID + } + common_fail(backend, tx_params, StatusWord.EXCEPTION_OVERFLOW, path=BIP32_PATH2) -def test_1559(firmware: Firmware, backend: BackendInterface, navigator: Navigator): - common(firmware, backend, navigator, { +# Transfer bsc +def test_legacy_send_bsc(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + tx_params: dict = { + "nonce": 1, + "gasPrice": Web3.to_wei(GAS_PRICE2, 'gwei'), + "gas": GAS_LIMIT, + "to": ADDR2, + "value": Web3.to_wei(AMOUNT2, "ether"), + "chainId": 56 + } + common(firmware, backend, navigator, default_screenshot_path, tx_params, test_name, BIP32_PATH2) + + +# Transfer on network 112233445566 on Ethereum +def test_legacy_chainid(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + tx_params: dict = { + "nonce": NONCE2, + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), + "gas": GAS_LIMIT, + "to": ADDR2, + "value": Web3.to_wei(AMOUNT2, "ether"), + "chainId": 112233445566 + } + common(firmware, backend, navigator, default_screenshot_path, tx_params, test_name, BIP32_PATH2) + + +# Try to blind sign with setting disabled +def test_legacy_contract(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + + buffer = bytes.fromhex("058000002c8000003c800000010000000000000000f849208506fc23ac008303dc3194f650c3d88d12db855b8bf7d11be6c55a4e07dcc980a4a1712d6800000000000000000000000000000000000000000000000000000000000acbc7018080") + app_client = EthAppClient(backend) + + try: + with app_client.send_raw(0xe0, 0x04, 0x00, 0x00, buffer): + if firmware.device.startswith("nano"): + # No screens recorded on Stax + moves = [ + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK + ] + navigator.navigate_and_compare(default_screenshot_path, + test_name, + moves) + + except ExceptionRAPDU as e: + assert e.status == StatusWord.INVALID_DATA + + +def test_1559(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + default_screenshot_path: Path): + tx_params: dict = { "nonce": NONCE, "maxFeePerGas": Web3.to_wei(145, "gwei"), "maxPriorityFeePerGas": Web3.to_wei(1.5, "gwei"), @@ -64,4 +217,174 @@ def test_1559(firmware: Firmware, backend: BackendInterface, navigator: Navigato "to": ADDR, "value": Web3.to_wei(AMOUNT, "ether"), "chainId": CHAIN_ID - }) + } + common(firmware, backend, navigator, default_screenshot_path, tx_params) + + +def test_sign_simple(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + tx_params: dict = { + "nonce": NONCE2, + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), + "gas": GAS_LIMIT, + "to": ADDR2, + "value": Web3.to_wei(AMOUNT2, "ether"), + "chainId": CHAIN_ID + } + common(firmware, backend, navigator, default_screenshot_path, tx_params, test_name, "m/44'/60'/1'/0/0") + + +def test_sign_limit_nonce(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + tx_params: dict = { + "nonce": 2**64-1, + "gasPrice": 10, + "gas": 50000, + "to": ADDR2, + "value": 0x08762, + "chainId": CHAIN_ID + } + common(firmware, backend, navigator, default_screenshot_path, tx_params, test_name, "m/44'/60'/1'/0/0") + + +def test_sign_nonce_display(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + + settings_toggle(firmware, navigator, [SettingID.NONCE]) + + tx_params: dict = { + "nonce": NONCE2, + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), + "gas": GAS_LIMIT, + "to": ADDR2, + "value": Web3.to_wei(AMOUNT2, "ether"), + "chainId": CHAIN_ID + } + common(firmware, backend, navigator, default_screenshot_path, tx_params, test_name, "m/44'/60'/1'/0/0") + + +def test_sign_blind_simple(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + settings_toggle(firmware, navigator, [SettingID.BLIND_SIGNING]) + + data = "ok" + tx_params: dict = { + "nonce": NONCE2, + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), + "gas": GAS_LIMIT, + "to": ADDR2, + "value": Web3.to_wei(AMOUNT2, "ether"), + "chainId": CHAIN_ID, + "data": data.encode('utf-8').hex() + } + common(firmware, backend, navigator, default_screenshot_path, tx_params, test_name, "m/44'/60'/1'/0/0") + + +def test_sign_blind_and_nonce_display(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + settings_toggle(firmware, navigator, [SettingID.NONCE, SettingID.BLIND_SIGNING]) + + data = "That's a little message :)" + tx_params: dict = { + "nonce": 1844674, + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), + "gas": GAS_LIMIT, + "to": ADDR2, + "value": Web3.to_wei(AMOUNT2, "ether"), + "chainId": CHAIN_ID, + "data": data.encode('utf-8').hex() + } + common(firmware, backend, navigator, default_screenshot_path, tx_params, test_name, "m/44'/60'/1'/0/0") + + +def test_sign_reject(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + tx_params: dict = { + "nonce": NONCE2, + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), + "gas": GAS_LIMIT, + "to": ADDR2, + "value": Web3.to_wei(AMOUNT2, "ether"), + "chainId": CHAIN_ID + } + common_reject(firmware, backend, navigator, default_screenshot_path, tx_params, test_name, "m/44'/60'/1'/0/0") + + +def test_sign_error_transaction_type(backend: BackendInterface): + tx_params: dict = { + "type": 0, + "nonce": 0, + "gasPrice": 10, + "gas": 50000, + "to": ADDR2, + "value": 0x19, + "chainId": CHAIN_ID + } + + app_client = EthAppClient(backend) + try: + with app_client.sign(BIP32_PATH2, tx_params): + pass + + except TypeError: + pass + else: + assert False # An exception should have been raised + + +def test_sign_blind_error_disabled(backend: BackendInterface): + data = "ok" + tx_params: dict = { + "nonce": NONCE2, + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), + "gas": GAS_LIMIT, + "to": ADDR2, + "value": Web3.to_wei(AMOUNT2, "ether"), + "chainId": CHAIN_ID, + "data": data.encode('utf-8').hex() + } + + common_fail(backend, tx_params, StatusWord.INVALID_DATA, BIP32_PATH2) + + +def test_sign_eip_2930(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + test_name: str, + default_screenshot_path: Path): + + tx_params = { + "nonce": NONCE, + "gasPrice": Web3.to_wei(GAS_PRICE2, "gwei"), + "gas": GAS_LIMIT, + "to": ADDR4, + "value": Web3.to_wei(0.01, "ether"), + "chainId": 3, + "accessList": [ + { + "address": "0x0000000000000000000000000000000000000001", + "storageKeys": [ + "0x0100000000000000000000000000000000000000000000000000000000000000" + ] + } + ], + } + common(firmware, backend, navigator, default_screenshot_path, tx_params, test_name) diff --git a/tests/ragger/usage.md b/tests/ragger/usage.md new file mode 100644 index 000000000..2a4954d9a --- /dev/null +++ b/tests/ragger/usage.md @@ -0,0 +1,92 @@ +# How to use the Ragger test framework + +This framework allows testing the application on the Speculos emulator or on a real device using `LedgerComm` or `LedgerWallet` + +## Quickly get started with Ragger and Speculos + +### Install ragger and dependencies + +```shell +pip install --extra-index-url https://test.pypi.org/simple/ -r requirements.txt +sudo apt-get update && sudo apt-get install qemu-user-static +``` + +### Compile the application + +The application to test must be compiled for all required devices. +You can use for this the container `ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite`: + +```shell +docker pull ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest +cd +docker run --user "$(id -u)":"$(id -g)" --rm -ti -v "$(realpath .):/app" --privileged -v "/dev/bus/usb:/dev/bus/usb" ledger-app-builder-lite:latest +make clean && make BOLOS_SDK=$_SDK # replace with one of [NANOS, NANOX, NANOSP, STAX] +exit +``` + +### Run a simple test using the Speculos emulator + +You can use the following command to get your first experience with Ragger and Speculos + +```shell +pytest -v --tb=short --device nanox --display +``` + +Or you can refer to the section `Available pytest options` to configure the options you want to use + +### Run a simple test using a real device + +The application to test must be loaded and started on a Ledger device plugged in USB. +You can use for this the container `ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite`: + +```shell +docker pull ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest +cd app-/ # replace with the name of your app, (eg boilerplate) +docker run --user "$(id -u)":"$(id -g)" --rm -ti -v "$(realpath .):/app" --privileged -v "/dev/bus/usb:/dev/bus/usb" ledger-app-builder-lite:latest +make clean && make BOLOS_SDK=$_SDK load # replace with one of [NANOS, NANOX, NANOSP, STAX] +exit +``` + +You can use the following command to get your first experience with Ragger and Ledgerwallet on a NANOX. +Make sure that the device is plugged, unlocked, and that the tested application is open. + +```shell +pytest -v --tb=short --device nanox --backend ledgerwallet +``` + +Or you can refer to the section `Available pytest options` to configure the options you want to use + +### Ethereum specific + +With Ethereum App, it is also possible to load an app (like a _plugin_), and use the `app-ethereum` like a _library_. +Such case is tested with application clone, using `ThunderCore`. + +This special configuration needs an additional command line parameter `--with_lib_mode`, where only the dedicated tests are selected. + +## Adding a test + +When adding new Module for tests, just be carrefull to declare it correctly in order to be handled following the parameter `--with_lib_mode`. +please refer to `conftest.py`. + +## Available pytest options + +Standard useful pytest options + +```shell + -v formats the test summary in a readable way + -s enable logs for successful tests, on Speculos it will enable app logs if compiled with DEBUG=1 + -k only run the tests that contain in their names + --tb=short in case of errors, formats the test traceback in a readable way +``` + +Custom pytest options + +```shell + --with_lib_mode run the test(s) dedicated to Library Mode + --device run the test on the specified device [nanos,nanox,nanosp,stax,all]. This parameter is mandatory + --backend run the tests against the backend [speculos, ledgercomm, ledgerwallet]. Speculos is the default + --display on Speculos, enables the display of the app screen using QT + --golden_run on Speculos, screen comparison functions will save the current screen instead of comparing + --log_apdu_file log all apdu exchanges to the file in parameter. The previous file content is erased + --seed=SEED set a custom seed +``` diff --git a/tests/speculos/.gitignore b/tests/speculos/.gitignore deleted file mode 100644 index a6d415f89..000000000 --- a/tests/speculos/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -__pycache__/ -*.py[cod] -*$py.class - - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# generated by pip -pip-wheel-metadata/ - -# pytest debug logs generated via --debug -pytestdebug.log -.cache -.pytest_cache -.mypy_cache -.coverage -.coverage.* -coverage.xml diff --git a/tests/speculos/README.md b/tests/speculos/README.md deleted file mode 100644 index 3cc7fd3c4..000000000 --- a/tests/speculos/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# Speculos functional tests - -These tests are implemented in Python with the `SpeculosClient` interface which allows easy execution on the [Speculos](https://github.com/LedgerHQ/speculos) emulator. - -## Requirements - -- [python >= 3.8](https://www.python.org/downloads/) -- [pip](https://pip.pypa.io/en/stable/installation/) - -### Dependencies - -Python dependencies are listed in [requirements.txt](requirements.txt) - -```shell -python3 -m pip install -r requirements.txt -``` - -## Usage - -### Compilation app - -Go to the root of the repository: - -```sh -make DEBUG=1 NFT_TESTING_KEY=1 BOLOS_SDK=$NANOX_SDK -mv bin/app.elf tests/speculos/.elf -``` - -Given the requirements are installed, just do (by default command): - -```shell -cd tests/speculos/ -pytest -``` - -### Custom options - -- **--model:** "nanos", "nanox", "nanosp" | default: "nanos" -- **--display:** "qt", "headless" | default: "qt" -- **--path:** the path of the binary app | default: path of makefile compilation - -## Example - -With `nanox` binary app: - -```sh -# the --path is variable to where you put your binary - -pytest --model nanox --path ./elfs/nanox.elf - -# Execute specific test: -pytest --model nanox --path ./elfs/nanox.elf test_pubkey_cmd.py -``` diff --git a/tests/speculos/conftest.py b/tests/speculos/conftest.py deleted file mode 100644 index 4d68fc695..000000000 --- a/tests/speculos/conftest.py +++ /dev/null @@ -1,39 +0,0 @@ -from pathlib import Path -import pytest - -from speculos.client import SpeculosClient - -from ethereum_client.ethereum_cmd import EthereumCommand - - -SCRIPT_DIR = Path(__file__).absolute().parent -API_URL = "http://127.0.0.1:5000" - - -def pytest_addoption(parser): - # nanos, nanox, nanosp - parser.addoption("--model", action="store", default="nanos") - # qt: default, requires a X server - # headless: nothing is displayed - parser.addoption("--display", action="store", default="qt") - - path: str = SCRIPT_DIR.parent.parent / "bin" / "app.elf" - parser.addoption("--path", action="store", default=path) - -@pytest.fixture() -def client(pytestconfig): - file_path = pytestconfig.getoption("path") - model = pytestconfig.getoption("model") - - args = ['--log-level', 'speculos:DEBUG','--model', model, '--display', pytestconfig.getoption("display")] - with SpeculosClient(app=str(file_path), args=args) as client: - yield client - - -@pytest.fixture() -def cmd(client, pytestconfig): - yield EthereumCommand( - client=client, - debug=True, - model=pytestconfig.getoption("model"), - ) diff --git a/tests/speculos/docs/README.md b/tests/speculos/docs/README.md deleted file mode 100644 index 8a10e58a0..000000000 --- a/tests/speculos/docs/README.md +++ /dev/null @@ -1,134 +0,0 @@ -# Documentation of Ethereum's client test - -```sh -. -├── conftest.py # Configuration for pytest -├── ethereum_client # All utils of client test -│ ├── ethereum_cmd_builder.py # Creation of apdu to send -│ ├── ethereum_cmd.py # Send Apdu and parsing of response -│ ├── exception -│ │ ├── device_exception.py -│ │ └── errors.py -│ ├── plugin.py # Creation of content apdu which manage plugin, erc20Information, provide nft information -│ ├── transaction.py # Creation of content apdu which manage personal tx, transaction, eip712 -│ └── utils.py -├── requirements.txt -├── screenshots # All screenshot of nanoS,X,SP for compare in tests -├── setup.cfg - -# ========= All Tests ========= -├── test_configuration_cmd.py -├── test_eip1559.py -├── test_eip191.py -├── test_eip2930.py -├── test_eip712.py -├── test_erc1155.py -├── test_erc20information.py -├── test_erc721.py -├── test_pubkey_cmd.py -└── test_sign_cmd.py -``` - -## Ethereum_client - -### Ethereum_cmd_builder - -```py -def chunked(size, source) - -class EthereumCommandBuilder: - # Creation of the apdu - def get_configuration(self) -> bytes: - def set_plugin(self, plugin: Plugin) -> bytes: - def provide_nft_information(self, plugin: Plugin) -> bytes: - def provide_erc20_token_information(self, info: ERC20Information): - def get_public_key(self, bip32_path: str, display: bool = False) -> bytes: - def perform_privacy_operation(self, bip32_path: str, display: bool, shared_secret: bool) -> bytes: - def simple_sign_tx(self, bip32_path: str, transaction: Transaction) -> bytes: - def sign_eip712(self, bip32_path: str, transaction: EIP712) -> bytes: - def personal_sign_tx(self, bip32_path: str, transaction: PersonalTransaction) -> Tuple[bool,bytes]: -``` - -### Ethereum_cmd - -```py -class EthereumCommand: - # Sending apdu and parsing the response in the right form - def get_configuration(self) -> Tuple[int, int, int, int]: - def set_plugin(self, plugin: Plugin): - def provide_nft_information(self, plugin: Plugin): - def provide_erc20_token_information(self, info: ERC20Information): - def get_public_key(self, bip32_path: str, result: List, display: bool = False) -> Tuple[bytes, bytes, bytes]: - def perform_privacy_operation(self, bip32_path: str, result: List, display: bool = False, shared_secret: bool = False) -> Tuple[bytes, bytes, bytes]: - def simple_sign_tx(self, bip32_path: str, transaction: Transaction, result: List = list()) -> None: - def sign_eip712(self, bip32_path: str, transaction: EIP712, result: List = list()) -> None: - def personal_sign_tx(self, bip32_path: str, transaction: PersonalTransaction, result: List = list()) -> None: - # Allows to send an apdu without return of speculos - def send_apdu(self, apdu: bytes) -> bytes: - # Allows to send an apdu with return of speculos - def send_apdu_context(self, apdu: bytes, result: List = list()) -> bytes: -``` - -### Utils - -```py -def save_screenshot(cmd, path: str): -def compare_screenshot(cmd, path: str): -def parse_sign_response(response : bytes) -> Tuple[bytes, bytes, bytes]: -def bip32_path_from_string(path: str) -> List[bytes]: -def packed_bip32_path_from_string(path: str) -> bytes: -def write_varint(n: int) -> bytes: -def read_varint(buf: BytesIO, prefix: Optional[bytes] = None) -> int: -def read(buf: BytesIO, size: int) -> bytes: -def read_uint(buf: BytesIO, bit_len: int, byteorder: Literal['big', 'little'] = 'little') -> int: -``` - -## Tests new apdu - -If a new instruction is programmed it will be necessary to create 2 new functions. -one in `ethereum_cmd_builder`: - -- Creation of the raw apdu you can find some examples in this same file - -and one in `ethereum_cmd`: - -- Send the apdu to speculos and parse the answer in a `list` named result you can find some examples in this same file - -## Example for write new tests - -To send several apdu and get the return - -```py -FIRST = bytes.fromhex("{YourAPDU}") -SECOND = bytes.fromhex("{YourAPDU}") - -def test_multiple_raw_apdu(cmd): - result: list = [] - - cmd.send_apdu(FIRST) - with cmd.send_apdu_context(SECOND, result) as ex: - sleep(0.5) - # Here your code for press button and compare screen if you want - - response: bytes = result[0] # response returning - # Here you function to parse response of some code - v, r, s = parse_sign_response(response) - - # And here assertion of your tests - assert v == 0x25 # 37 - assert r.hex() == "68ba082523584adbfc31d36d68b51d6f209ce0838215026bf1802a8f17dcdff4" - assert s.hex() == "7c92908fa05c8bc86507a3d6a1c8b3c2722ee01c836d89a61df60c1ab0b43fff" -``` - -To test an error - -```py -def test_some_error(cmd): - result: list = [] - - with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error: - # With an function in ethereum_cmd - with cmd.send_apdu_context(bytes.fromhex("{YourAPDU}"), result) as ex: - pass - assert error.args[0] == '0x6a80' -``` diff --git a/tests/speculos/ethereum_client/ethereum_cmd.py b/tests/speculos/ethereum_client/ethereum_cmd.py deleted file mode 100644 index 8c575af6b..000000000 --- a/tests/speculos/ethereum_client/ethereum_cmd.py +++ /dev/null @@ -1,223 +0,0 @@ -from ast import List -from contextlib import contextmanager -import struct -from time import sleep -from typing import Tuple - -from speculos.client import SpeculosClient, ApduException - -from ethereum_client.ethereum_cmd_builder import EthereumCommandBuilder, InsType -from ethereum_client.exception import DeviceException -from ethereum_client.transaction import EIP712, PersonalTransaction, Transaction -from ethereum_client.plugin import ERC20Information, Plugin -from ethereum_client.utils import parse_sign_response - - -class EthereumCommand: - def __init__(self, - client: SpeculosClient, - debug: bool = False, - model: str = "nanos") -> None: - self.client = client - self.builder = EthereumCommandBuilder(debug=debug) - self.debug = debug - self.model = model - - def get_configuration(self) -> Tuple[int, int, int, int]: - try: - response = self.client._apdu_exchange( - self.builder.get_configuration() - ) # type: int, bytes - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_GET_VERSION) - - # response = FLAG (1) || MAJOR (1) || MINOR (1) || PATCH (1) - assert len(response) == 4 - - info, major, minor, patch = struct.unpack( - "BBBB", - response - ) # type: int, int, int - - return info, major, minor, patch - - def set_plugin(self, plugin: Plugin): - try: - self.client._apdu_exchange( - self.builder.set_plugin(plugin=plugin) - ) - - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_SET_PLUGIN) - - def provide_nft_information(self, plugin: Plugin): - try: - self.client._apdu_exchange( - self.builder.provide_nft_information(plugin=plugin) - ) - - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_PROVIDE_NFT_INFORMATION) - - def provide_erc20_token_information(self, info: ERC20Information): - try: - self.client._apdu_exchange( - self.builder.provide_erc20_token_information(info=info) - ) - - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_PROVIDE_ERC20) - - - @contextmanager - def get_public_key(self, bip32_path: str, result: List, display: bool = False) -> Tuple[bytes, bytes, bytes]: - try: - chunk: bytes = self.builder.get_public_key(bip32_path=bip32_path, display=display) - - with self.client.apdu_exchange_nowait(cla=chunk[0], ins=chunk[1], - p1=chunk[2], p2=chunk[3], - data=chunk[5:]) as exchange: - yield exchange - response: bytes = exchange.receive() - - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_GET_PUBLIC_KEY) - - # response = pub_key_len (1) || - # pub_key (var) || - # chain_code_len (1) || - # chain_code (var) - offset: int = 0 - - pub_key_len: int = response[offset] - offset += 1 - - uncompressed_addr_len: bytes = response[offset:offset + pub_key_len] - offset += pub_key_len - - eth_addr_len: int = response[offset] - offset += 1 - - eth_addr: bytes = response[offset:offset + eth_addr_len] - offset += eth_addr_len - - chain_code: bytes = response[offset:] - - assert len(response) == 1 + pub_key_len + 1 + eth_addr_len + 32 # 32 -> chain_code_len - - result.append(uncompressed_addr_len) - result.append(eth_addr) - result.append(chain_code) - - - @contextmanager - def perform_privacy_operation(self, bip32_path: str, result: List, display: bool = False, shared_secret: bool = False) -> Tuple[bytes, bytes, bytes]: - try: - chunk: bytes = self.builder.perform_privacy_operation(bip32_path=bip32_path, display=display, shared_secret=shared_secret) - - with self.client.apdu_exchange_nowait(cla=chunk[0], ins=chunk[1], - p1=chunk[2], p2=chunk[3], - data=chunk[5:]) as exchange: - yield exchange - response: bytes = exchange.receive() - - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_PERFORM_PRIVACY_OPERATION) - - # response = Public encryption key or shared secret (32) - assert len(response) == 32 - - result.append(response) - - def send_apdu(self, apdu: bytes) -> bytes: - try: - self.client.apdu_exchange(cla=apdu[0], ins=apdu[1], - p1=apdu[2], p2=apdu[3], - data=apdu[5:]) - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_SIGN_TX) - - @contextmanager - def send_apdu_context(self, apdu: bytes, result: List = list()) -> bytes: - try: - - with self.client.apdu_exchange_nowait(cla=apdu[0], ins=apdu[1], - p1=apdu[2], p2=apdu[3], - data=apdu[5:]) as exchange: - yield exchange - result.append(exchange.receive()) - - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_SIGN_TX) - - - - @contextmanager - def simple_sign_tx(self, bip32_path: str, transaction: Transaction, result: List = list()) -> None: - try: - chunk: bytes = self.builder.simple_sign_tx(bip32_path=bip32_path, transaction=transaction) - - with self.client.apdu_exchange_nowait(cla=chunk[0], ins=chunk[1], - p1=chunk[2], p2=chunk[3], - data=chunk[5:]) as exchange: - yield exchange - response: bytes = exchange.receive() - - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_SIGN_TX) - - # response = V (1) || R (32) || S (32) - assert len(response) == 65 - v, r, s = parse_sign_response(response) - - result.append(v) - result.append(r) - result.append(s) - - - @contextmanager - def sign_eip712(self, bip32_path: str, transaction: EIP712, result: List = list()) -> None: - try: - chunk: bytes = self.builder.sign_eip712(bip32_path=bip32_path, transaction=transaction) - - with self.client.apdu_exchange_nowait(cla=chunk[0], ins=chunk[1], - p1=chunk[2], p2=chunk[3], - data=chunk[5:]) as exchange: - yield exchange - response: bytes = exchange.receive() - - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_SIGN_EIP712) - - # response = V (1) || R (32) || S (32) - assert len(response) == 65 - v, r, s = parse_sign_response(response) - - result.append(v) - result.append(r) - result.append(s) - - - @contextmanager - def personal_sign_tx(self, bip32_path: str, transaction: PersonalTransaction, result: List = list()) -> None: - try: - for islast_apdu, apdu in self.builder.personal_sign_tx(bip32_path=bip32_path, transaction=transaction): - if islast_apdu: - with self.client.apdu_exchange_nowait(cla=apdu[0], ins=apdu[1], - p1=apdu[2], p2=apdu[3], - data=apdu[5:]) as exchange: - # the "yield" here allows to wait for a button interaction (click right, left, both) - yield exchange - response: bytes = exchange.receive() - else: - self.send_apdu(apdu) - - except ApduException as error: - raise DeviceException(error_code=error.sw, ins=InsType.INS_SIGN_TX) - - # response = V (1) || R (32) || S (32) - v, r, s = parse_sign_response(response) - - result.append(v) - result.append(r) - result.append(s) diff --git a/tests/speculos/ethereum_client/ethereum_cmd_builder.py b/tests/speculos/ethereum_client/ethereum_cmd_builder.py deleted file mode 100644 index dd516d415..000000000 --- a/tests/speculos/ethereum_client/ethereum_cmd_builder.py +++ /dev/null @@ -1,293 +0,0 @@ -import enum -import logging -import struct -from typing import List, Tuple, Union, Iterator, cast - -from ethereum_client.transaction import EIP712, PersonalTransaction, Transaction -from ethereum_client.plugin import ERC20Information, Plugin -from ethereum_client.utils import packed_bip32_path_from_string - -MAX_APDU_LEN: int = 255 - -def chunked(size, source): - for i in range(0, len(source), size): - yield source[i:i+size] - -def chunkify(data: bytes, chunk_len: int) -> Iterator[Tuple[bool, bytes]]: - size: int = len(data) - - if size <= chunk_len: - yield True, data - return - - chunk: int = size // chunk_len - remaining: int = size % chunk_len - offset: int = 0 - - for i in range(chunk): - yield False, data[offset:offset + chunk_len] - offset += chunk_len - - if remaining: - yield True, data[offset:] - -class InsType(enum.IntEnum): - INS_GET_PUBLIC_KEY = 0x02 - INS_SIGN_TX = 0x04 - INS_GET_CONFIGURATION = 0x06 - INS_SIGN_PERSONAL_TX = 0x08 - INS_PROVIDE_ERC20 = 0x0A - INS_SIGN_EIP712 = 0x0c - INS_ETH2_GET_PUBLIC_KEY = 0x0E - INS_SET_ETH2_WITHDRAWAL = 0x10 - INS_SET_EXTERNAL_PLUGIN = 0x12 - INS_PROVIDE_NFT_INFORMATION = 0x14 - INS_SET_PLUGIN = 0x16 - INS_PERFORM_PRIVACY_OPERATION = 0x18 - - -class EthereumCommandBuilder: - """APDU command builder for the Boilerplate application. - - Parameters - ---------- - debug: bool - Whether you want to see logging or not. - - Attributes - ---------- - debug: bool - Whether you want to see logging or not. - - """ - CLA: int = 0xE0 - - def __init__(self, debug: bool = False): - """Init constructor.""" - self.debug = debug - - def serialize(self, - cla: int, - ins: Union[int, enum.IntEnum], - p1: int = 0, - p2: int = 0, - cdata: bytes = b"") -> bytes: - """Serialize the whole APDU command (header + data). - - Parameters - ---------- - cla : int - Instruction class: CLA (1 byte) - ins : Union[int, IntEnum] - Instruction code: INS (1 byte) - p1 : int - Instruction parameter 1: P1 (1 byte). - p2 : int - Instruction parameter 2: P2 (1 byte). - cdata : bytes - Bytes of command data. - - Returns - ------- - bytes - Bytes of a complete APDU command. - - """ - ins = cast(int, ins.value) if isinstance(ins, enum.IntEnum) else cast(int, ins) - - header: bytes = struct.pack("BBBBB", - cla, - ins, - p1, - p2, - len(cdata)) # add Lc to APDU header - - if self.debug: - logging.info("header: %s", header.hex()) - logging.info("cdata: %s", cdata.hex()) - - return header + cdata - - def get_configuration(self) -> bytes: - """Command builder for GET_CONFIGURATON - - Returns - ------- - bytes - APDU command for GET_CONFIGURATON - - """ - return self.serialize(cla=self.CLA, - ins=InsType.INS_GET_CONFIGURATION, - p1=0x00, - p2=0x00, - cdata=b"") - - def _same_header_builder(self, data: Union[Plugin, ERC20Information], ins: int) -> bytes: - return self.serialize(cla=self.CLA, - ins=ins, - p1=0x00, - p2=0x00, - cdata=data.serialize()) - - def set_plugin(self, plugin: Plugin) -> bytes: - return self._same_header_builder(plugin, InsType.INS_SET_PLUGIN) - - def provide_nft_information(self, plugin: Plugin) -> bytes: - return self._same_header_builder(plugin, InsType.INS_PROVIDE_NFT_INFORMATION) - - def provide_erc20_token_information(self, info: ERC20Information): - return self._same_header_builder(info, InsType.INS_PROVIDE_ERC20) - - def get_public_key(self, bip32_path: str, display: bool = False) -> bytes: - """Command builder for GET_PUBLIC_KEY. - - Parameters - ---------- - bip32_path: str - String representation of BIP32 path. - display : bool - Whether you want to display the address on the device. - - Returns - ------- - bytes - APDU command for GET_PUBLIC_KEY. - - """ - cdata = packed_bip32_path_from_string(bip32_path) - - return self.serialize(cla=self.CLA, - ins=InsType.INS_GET_PUBLIC_KEY, - p1=0x01 if display else 0x00, - p2=0x01, - cdata=cdata) - - def perform_privacy_operation(self, bip32_path: str, display: bool, shared_secret: bool) -> bytes: - """Command builder for INS_PERFORM_PRIVACY_OPERATION. - - Parameters - ---------- - bip32_path : str - String representation of BIP32 path. - Third party public key on Curve25519 : 32 bytes - Optional if returning the shared secret - - """ - cdata = packed_bip32_path_from_string(bip32_path) - - return self.serialize(cla=self.CLA, - ins=InsType.INS_PERFORM_PRIVACY_OPERATION, - p1=0x01 if display else 0x00, - p2=0x01 if shared_secret else 0x00, - cdata=cdata) - - - def simple_sign_tx(self, bip32_path: str, transaction: Transaction) -> bytes: - """Command builder for INS_SIGN_TX. - - Parameters - ---------- - bip32_path : str - String representation of BIP32 path. - transaction : Transaction - Representation of the transaction to be signed. - - Yields - ------- - bytes - APDU command chunk for INS_SIGN_TX. - - """ - cdata = packed_bip32_path_from_string(bip32_path) - - tx: bytes = transaction.serialize() - - cdata = cdata + tx - - return self.serialize(cla=self.CLA, - ins=InsType.INS_SIGN_TX, - p1=0x00, - p2=0x00, - cdata=cdata) - - def sign_eip712(self, bip32_path: str, transaction: EIP712) -> bytes: - """Command builder for INS_SIGN_EIP712. - - Parameters - ---------- - bip32_path : str - String representation of BIP32 path. - transaction : EIP712 - Domain hash -> 32 bytes - Message hash -> 32 bytes - - Yields - ------- - bytes - APDU command chunk for INS_SIGN_EIP712. - - """ - cdata = packed_bip32_path_from_string(bip32_path) - - - tx: bytes = transaction.serialize() - - cdata = cdata + tx - - return self.serialize(cla=self.CLA, - ins=InsType.INS_SIGN_EIP712, - p1=0x00, - p2=0x00, - cdata=cdata) - - def personal_sign_tx(self, bip32_path: str, transaction: PersonalTransaction) -> Tuple[bool,bytes]: - """Command builder for INS_SIGN_PERSONAL_TX. - - Parameters - ---------- - bip32_path : str - String representation of BIP32 path. - transaction : Transaction - Representation of the transaction to be signed. - - Yields - ------- - bytes - APDU command chunk for INS_SIGN_PERSONAL_TX. - - """ - - cdata = packed_bip32_path_from_string(bip32_path) - - tx: bytes = transaction.serialize() - - cdata = cdata + tx - last_chunk = len(cdata) // MAX_APDU_LEN - - # The generator allows to send apdu frames because we can't send an apdu > 255 - for i, (chunk) in enumerate(chunked(MAX_APDU_LEN, cdata)): - if i == 0 and i == last_chunk: - yield True, self.serialize(cla=self.CLA, - ins=InsType.INS_SIGN_PERSONAL_TX, - p1=0x00, - p2=0x00, - cdata=chunk) - elif i == 0: - yield False, self.serialize(cla=self.CLA, - ins=InsType.INS_SIGN_PERSONAL_TX, - p1=0x00, - p2=0x00, - cdata=chunk) - elif i == last_chunk: - yield True, self.serialize(cla=self.CLA, - ins=InsType.INS_SIGN_PERSONAL_TX, - p1=0x80, - p2=0x00, - cdata=chunk) - else: - yield False, self.serialize(cla=self.CLA, - ins=InsType.INS_SIGN_PERSONAL_TX, - p1=0x80, - p2=0x00, - cdata=chunk) diff --git a/tests/speculos/ethereum_client/exception/__init__.py b/tests/speculos/ethereum_client/exception/__init__.py deleted file mode 100644 index acb2bb8c0..000000000 --- a/tests/speculos/ethereum_client/exception/__init__.py +++ /dev/null @@ -1,35 +0,0 @@ -from .device_exception import DeviceException -from .errors import (UnknownDeviceError, - DenyError, - WrongP1P2Error, - WrongDataLengthError, - InsNotSupportedError, - ClaNotSupportedError, - WrongResponseLengthError, - DisplayBip32PathFailError, - DisplayAddressFailError, - DisplayAmountFailError, - WrongTxLengthError, - TxParsingFailError, - TxHashFail, - BadStateError, - SignatureFailError) - -__all__ = [ - "DeviceException", - "DenyError", - "UnknownDeviceError", - "WrongP1P2Error", - "WrongDataLengthError", - "InsNotSupportedError", - "ClaNotSupportedError", - "WrongResponseLengthError", - "DisplayBip32PathFailError", - "DisplayAddressFailError", - "DisplayAmountFailError", - "WrongTxLengthError", - "TxParsingFailError", - "TxHashFail", - "BadStateError", - "SignatureFailError" -] diff --git a/tests/speculos/ethereum_client/exception/device_exception.py b/tests/speculos/ethereum_client/exception/device_exception.py deleted file mode 100644 index 7cd26f23b..000000000 --- a/tests/speculos/ethereum_client/exception/device_exception.py +++ /dev/null @@ -1,38 +0,0 @@ -import enum -from typing import Dict, Any, Union - -from .errors import * - - -class DeviceException(Exception): # pylint: disable=too-few-public-methods - exc: Dict[int, Any] = { - 0x6985: DenyError, - 0x6A86: WrongP1P2Error, - 0x6A87: WrongDataLengthError, - 0x6D00: InsNotSupportedError, - 0x6E00: ClaNotSupportedError, - 0xB000: WrongResponseLengthError, - 0xB001: DisplayBip32PathFailError, - 0xB002: DisplayAddressFailError, - 0xB003: DisplayAmountFailError, - 0xB004: WrongTxLengthError, - 0xB005: TxParsingFailError, - 0xB006: TxHashFail, - 0xB007: BadStateError, - 0xB008: SignatureFailError - } - - def __new__(cls, - error_code: int, - ins: Union[int, enum.IntEnum, None] = None, - message: str = "" - ) -> Any: - error_message: str = (f"Error in {ins!r} command" - if ins else "Error in command") - - if error_code in DeviceException.exc: - return DeviceException.exc[error_code](hex(error_code), - error_message, - message) - - return UnknownDeviceError(hex(error_code), error_message, message) diff --git a/tests/speculos/ethereum_client/exception/errors.py b/tests/speculos/ethereum_client/exception/errors.py deleted file mode 100644 index a9a853d50..000000000 --- a/tests/speculos/ethereum_client/exception/errors.py +++ /dev/null @@ -1,58 +0,0 @@ -class UnknownDeviceError(Exception): - pass - - -class DenyError(Exception): - pass - - -class WrongP1P2Error(Exception): - pass - - -class WrongDataLengthError(Exception): - pass - - -class InsNotSupportedError(Exception): - pass - - -class ClaNotSupportedError(Exception): - pass - - -class WrongResponseLengthError(Exception): - pass - - -class DisplayBip32PathFailError(Exception): - pass - - -class DisplayAddressFailError(Exception): - pass - - -class DisplayAmountFailError(Exception): - pass - - -class WrongTxLengthError(Exception): - pass - - -class TxParsingFailError(Exception): - pass - - -class TxHashFail(Exception): - pass - - -class BadStateError(Exception): - pass - - -class SignatureFailError(Exception): - pass diff --git a/tests/speculos/ethereum_client/plugin.py b/tests/speculos/ethereum_client/plugin.py deleted file mode 100644 index 88e7892c1..000000000 --- a/tests/speculos/ethereum_client/plugin.py +++ /dev/null @@ -1,70 +0,0 @@ -import string -from typing import Union - -from ethereum_client.utils import write_varint - -class ERC20Information: - def __init__(self, erc20_ticker: string , addr: Union[str, bytes], nb_decimals: int, chainID: int, sign: str) -> None: - self.erc20_ticker: bytes = bytes.fromhex(erc20_ticker) - self.addr: bytes = bytes.fromhex(addr[2:]) if isinstance(addr, str) else addr - self.nb_decimals: int = nb_decimals - self.chainID: int = chainID - self.sign: bytes = bytes.fromhex(sign) - - def serialize(self) -> bytes: - return b"".join([ - write_varint(len(self.erc20_ticker)), - self.erc20_ticker, - - self.addr, - - self.nb_decimals.to_bytes(4, byteorder="big"), - - self.chainID.to_bytes(4, byteorder="big"), - - self.sign, - ]) - -class Plugin: - """Plugin class - Allows to generate an apdu of the SET_PLUGIN command or PROVIDE_NFT_INFORMATION - - PROVIDE_NFT_INFORMATION - ---- - do not define a selector - - """ - def __init__(self, type: int, version: int, name: str, addr: Union[str, bytes], selector: int = -1, chainID: int = 1, keyID: int = 0, algorithm: int = 1, sign: str = "") -> None: - self.type: int = type - self.version: int = version - self.name: bytes = bytes(name, 'UTF-8') - self.addr: bytes = bytes.fromhex(addr[2:]) if isinstance(addr, str) else addr - self.selector: int = selector - self.chainID: int = chainID - self.keyID: int = keyID - self.algorithm: int = algorithm - self.sign: bytes = bytes.fromhex(sign) - - def serialize(self) -> bytes: - return b"".join([ - self.type.to_bytes(1, byteorder="big"), - - self.version.to_bytes(1, byteorder="big"), - - write_varint(len(self.name)), - self.name, - - self.addr, - - b'' if self.selector == -1 else self.selector.to_bytes(4, byteorder="big"), - - self.chainID.to_bytes(8, byteorder="big"), - - self.keyID.to_bytes(1, byteorder="big"), - - self.algorithm.to_bytes(1, byteorder="big"), - - write_varint(len(self.sign)), - self.sign, - - ]) diff --git a/tests/speculos/ethereum_client/transaction.py b/tests/speculos/ethereum_client/transaction.py deleted file mode 100644 index 64b261b36..000000000 --- a/tests/speculos/ethereum_client/transaction.py +++ /dev/null @@ -1,96 +0,0 @@ -from typing import Union - -from ethereum_client.utils import write_varint, UINT64_MAX - - -class TransactionError(Exception): - pass - -EIP2930 = 1 -EIP1559 = 2 - -class PersonalTransaction: - def __init__(self, msg: Union[str, bytes]) -> None: - # If you want to send bytes directly you have to put "0x" before the string - if msg[0:2] == "0x": - self.msg: bytes = bytes.fromhex(msg[2:]) - else: - self.msg: bytes = bytes(msg, "utf-8") - - def serialize(self) -> bytes: - return b"".join([ - len(self.msg).to_bytes(4, byteorder="big"), - self.msg, - ]) - -class Transaction: - def __init__(self, txType: int, nonce: int, gasPrice: int, gasLimit: int, to: Union[str, bytes], value: int, data: Union[str, bytes] = "", chainID: int = -1) -> None: - self.txType: int = txType - self.nonce: int = nonce - self.gasPrice: int = gasPrice - self.gasLimit: int = gasLimit - self.to: bytes = bytes.fromhex(to[2:]) if isinstance(to, str) else to - self.value: int = value - self.data: bytes = bytes(data, "utf-8") - self.chainID = b'' - - if not (0 <= self.nonce <= UINT64_MAX): - raise TransactionError(f"Bad nonce: '{self.nonce}'!") - - if not (0 <= self.value <= UINT64_MAX): - raise TransactionError(f"Bad value: '{self.value}'!") - - if len(self.to) != 20: - raise TransactionError(f"Bad address: '{self.to}'!") - - self.lenNonce = int((len(hex(self.nonce)) - 1) / 2) - self.lenGP = int((len(hex(self.gasPrice)) - 1) / 2) - self.lenGL = int((len(hex(self.gasLimit)) - 1) / 2) - self.lenValue = int((len(hex(self.value)) - 1) / 2) - - self.lenChainID = int((len(hex(chainID)) - 1) / 2) - - if chainID != -1: - self.chainID = b"".join([ - b'' if self.lenChainID == 1 else (self.lenChainID + 0x80).to_bytes(1, byteorder="big"), - chainID.to_bytes(self.lenChainID, byteorder="big"), - write_varint(0 + 0x80), - write_varint(0 + 0x80), - ]) - - def serialize(self) -> bytes: - return b"".join([ - self.txType.to_bytes(1, byteorder="big"), - - b'' if self.lenNonce == 1 else write_varint(self.lenNonce + 0x80), - self.nonce.to_bytes(self.lenNonce, byteorder="big"), - - write_varint(self.lenGP + 0x80), - self.gasPrice.to_bytes(self.lenGP, byteorder="big"), - - write_varint(self.lenGL + 0x80), - self.gasLimit.to_bytes(self.lenGL, byteorder="big"), - - write_varint(len(self.to) + 0x80), - self.to, - - write_varint(self.lenValue + 0x80), - self.value.to_bytes(self.lenValue, byteorder="big"), - - write_varint(len(self.data) + 0x80), - self.data, - - self.chainID, - - ]) - -class EIP712: - def __init__(self, domain_hash: str, msg_hash: str) -> None: - self.domain_hash = bytes.fromhex(domain_hash) - self.msg_hash = bytes.fromhex(msg_hash) - - def serialize(self) -> bytes: - return b"".join([ - self.domain_hash, - self.msg_hash - ]) diff --git a/tests/speculos/ethereum_client/utils.py b/tests/speculos/ethereum_client/utils.py deleted file mode 100644 index de03b782a..000000000 --- a/tests/speculos/ethereum_client/utils.py +++ /dev/null @@ -1,115 +0,0 @@ -from io import BytesIO -from typing import List, Optional, Literal, Tuple -import PIL.Image as Image - -import speculos.client - -UINT64_MAX: int = 18446744073709551615 -UINT32_MAX: int = 4294967295 -UINT16_MAX: int = 65535 - -# Association tableau si écran nanos ou nanox -PATH_IMG = {"nanos": "nanos", "nanox": "nanox", "nanosp": "nanox"} - -def save_screenshot(cmd, path: str): - screenshot = cmd.client.get_screenshot() - img = Image.open(BytesIO(screenshot)) - img.save(path) - - -def compare_screenshot(cmd, path: str): - screenshot = cmd.client.get_screenshot() - assert speculos.client.screenshot_equal(path, BytesIO(screenshot)) - - -def parse_sign_response(response : bytes) -> Tuple[bytes, bytes, bytes]: - assert len(response) == 65 - - offset: int = 0 - - v: bytes = response[offset] - offset += 1 - - r: bytes = response[offset:offset + 32] - offset += 32 - - s: bytes = response[offset:] - - return (v, r, s) - - -def bip32_path_from_string(path: str) -> List[bytes]: - splitted_path: List[str] = path.split("/") - - if not splitted_path: - raise Exception(f"BIP32 path format error: '{path}'") - - if "m" in splitted_path and splitted_path[0] == "m": - splitted_path = splitted_path[1:] - - return [int(p).to_bytes(4, byteorder="big") if "'" not in p - else (0x80000000 | int(p[:-1])).to_bytes(4, byteorder="big") - for p in splitted_path] - - -def packed_bip32_path_from_string(path: str) -> bytes: - bip32_paths = bip32_path_from_string(path) - - return b"".join([ - len(bip32_paths).to_bytes(1, byteorder="big"), - *bip32_paths - ]) - - -def write_varint(n: int) -> bytes: - if n < 0xFC: - return n.to_bytes(1, byteorder="little") - - if n <= UINT16_MAX: - return b"\xFD" + n.to_bytes(2, byteorder="little") - - if n <= UINT32_MAX: - return b"\xFE" + n.to_bytes(4, byteorder="little") - - if n <= UINT64_MAX: - return b"\xFF" + n.to_bytes(8, byteorder="little") - - raise ValueError(f"Can't write to varint: '{n}'!") - - -def read_varint(buf: BytesIO, - prefix: Optional[bytes] = None) -> int: - b: bytes = prefix if prefix else buf.read(1) - - if not b: - raise ValueError(f"Can't read prefix: '{b}'!") - - n: int = {b"\xfd": 2, b"\xfe": 4, b"\xff": 8}.get(b, 1) # default to 1 - - b = buf.read(n) if n > 1 else b - - if len(b) != n: - raise ValueError("Can't read varint!") - - return int.from_bytes(b, byteorder="little") - - -def read(buf: BytesIO, size: int) -> bytes: - b: bytes = buf.read(size) - - if len(b) < size: - raise ValueError(f"Can't read {size} bytes in buffer!") - - return b - - -def read_uint(buf: BytesIO, - bit_len: int, - byteorder: Literal['big', 'little'] = 'little') -> int: - size: int = bit_len // 8 - b: bytes = buf.read(size) - - if len(b) < size: - raise ValueError(f"Can't read u{bit_len} in buffer!") - - return int.from_bytes(b, byteorder) diff --git a/tests/speculos/old_test_eip191.py b/tests/speculos/old_test_eip191.py deleted file mode 100644 index 423bd2377..000000000 --- a/tests/speculos/old_test_eip191.py +++ /dev/null @@ -1,209 +0,0 @@ -from time import sleep - -import pytest - -import ethereum_client -from ethereum_client.utils import compare_screenshot, compare_screenshot, parse_sign_response, save_screenshot, PATH_IMG -from ethereum_client.transaction import PersonalTransaction - -def test_personal_sign_metamask(cmd): - result: list = [] - - bip32_path="44'/60'/0'/0/0" - transaction = PersonalTransaction( - msg="Example `personal_sign` message" - ) - - with cmd.personal_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_metamask/00000.png") - cmd.client.press_and_release('right') - - # Message 1/2, 2/2 - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_metamask/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_metamask/00002.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_metamask/00003.png") - cmd.client.press_and_release('both') - if cmd.model == "nanox" or cmd.model == "nanosp": - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_metamask/00000.png") - cmd.client.press_and_release('right') - - # Message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_metamask/00001.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_metamask/00002.png") - cmd.client.press_and_release('both') - - v, r, s = result - - assert v == 0x1c # 28 - assert r.hex() == "916099cf0d9c21911c85f0770a47a9696a8189e78c259cf099749748c507baae" - assert s.hex() == "0d72234bc0ac2e94c5f7a5f4f9cd8610a52be4ea55515a85b9703f1bb158415c" - -def test_personal_sign_reject(cmd): - result: list = [] - - bip32_path="44'/60'/0'/0/0" - transaction = PersonalTransaction( - msg="This is an reject sign" - ) - - with pytest.raises(ethereum_client.exception.errors.DenyError) as error: - with cmd.personal_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_reject/00000.png") - cmd.client.press_and_release('right') - - # Message 1/2, 2/2 - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_reject/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_reject/00002.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_reject/00003.png") - cmd.client.press_and_release('right') - - # Cancel signature - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_reject/00004.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_reject/00000.png") - cmd.client.press_and_release('right') - - # Message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_reject/00001.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_reject/00002.png") - cmd.client.press_and_release('right') - - # Cancel signature - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_reject/00003.png") - cmd.client.press_and_release('both') - assert error.args[0] == '0x6985' - -def test_personal_sign_non_ascii(cmd): - result: list = [] - - bip32_path="44'/60'/0'/0/0" - transaction = PersonalTransaction( - msg="0x9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658" - ) - - with cmd.personal_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_non_ascii/00000.png") - cmd.client.press_and_release('right') - - # Message 1/4, 2/4, 3/4, 4/4 - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_non_ascii/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_non_ascii/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_non_ascii/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_non_ascii/00004.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_non_ascii/00005.png") - cmd.client.press_and_release('both') - if cmd.model == "nanox" or cmd.model == "nanosp": - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_non_ascii/00000.png") - cmd.client.press_and_release('right') - - # Message 1/2, 2/2 - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_non_ascii/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_non_ascii/00002.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_non_ascii/00003.png") - cmd.client.press_and_release('both') - - v, r, s = result - - assert v == 0x1c # 28 - assert r.hex() == "64bdbdb6959425445d00ff2536a7018d2dce904e1f7475938fe4221c3c72500c" - assert s.hex() == "7c9208e99b6b9266a73aae17b73472d06499746edec34fd47a9dab42f06f2e42" - -def test_personal_sign_opensea(cmd): - result: list = [] - - bip32_path="44'/60'/0'/0/0" - transaction = PersonalTransaction( - msg="Welcome to OpenSea!\n\nClick to sign in and accept the OpenSea Terms of Service: https://opensea.io/tos\n\nThis request will not trigger a blockchain transaction or cost any gas fees.\n\nYour authentication status will reset after 24 hours.\n\nWallet address:\n0x9858effd232b4033e47d90003d41ec34ecaeda94\n\nNonce:\n2b02c8a0-f74f-4554-9821-a28054dc9121" - ) - - with cmd.personal_sign_tx(bip32_path, transaction, result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00000.png") - cmd.client.press_and_release('right') - - # Message 1/5, 2/5, 3/5, 4/5, 5/5 - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00004.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00005.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00006.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00000.png") - cmd.client.press_and_release('right') - - # Message 1/5, 2/5, 3/5, 4/5, 5/5 - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00004.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00005.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip191/{PATH_IMG[cmd.model]}/personal_sign_opensea/00006.png") - cmd.client.press_and_release('both') - - v, r, s = result - - assert v == 0x1c # 28 - assert r.hex() == "61a68c986f087730d2f6ecf89d6d1e48ab963ac461102bb02664bc05c3db75bb" - assert s.hex() == "5714729ef441e097673a7b29a681e97f6963d875eeed2081f26b0b6686cd2bd2" diff --git a/tests/speculos/requirements.txt b/tests/speculos/requirements.txt deleted file mode 100644 index 2744c3552..000000000 --- a/tests/speculos/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -speculos -pytest>=6.1.1,<7.0.0 -ledgercomm>=1.1.0,<1.2.0 -ecdsa>=0.16.1,<0.17.0 -pysha3>=1.0.0,<2.0.0 diff --git a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00001.png b/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00001.png deleted file mode 100644 index 9f2651390..000000000 Binary files a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00002.png b/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00002.png deleted file mode 100644 index 701b26bfc..000000000 Binary files a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00003.png b/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00003.png deleted file mode 100644 index 32a2ee929..000000000 Binary files a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00004.png b/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00004.png deleted file mode 100644 index 1ed3d773d..000000000 Binary files a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00005.png b/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00005.png deleted file mode 100644 index f19d91cc0..000000000 Binary files a/tests/speculos/screenshots/eip1559/nanos/sign_eip_1559/00005.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00001.png b/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00001.png deleted file mode 100644 index cdcc19d05..000000000 Binary files a/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00002.png b/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00002.png deleted file mode 100644 index 5b65b54dc..000000000 Binary files a/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00003.png b/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00003.png deleted file mode 100644 index a1e3cc0f7..000000000 Binary files a/tests/speculos/screenshots/eip1559/nanox/sign_eip_1559/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00000.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00000.png deleted file mode 100644 index ab16f62bf..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00001.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00001.png deleted file mode 100644 index ad00cb8ed..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00002.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00002.png deleted file mode 100644 index b435297ce..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00003.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00003.png deleted file mode 100644 index fcd68b2ff..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00004.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00004.png deleted file mode 100644 index 251c562bb..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_non_ascii/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00000.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00000.png deleted file mode 100644 index ab16f62bf..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00001.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00001.png deleted file mode 100644 index bdbb3a0f2..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00002.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00002.png deleted file mode 100644 index 067695318..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00003.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00003.png deleted file mode 100644 index 582648da5..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00004.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00004.png deleted file mode 100644 index 53e131782..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00005.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00005.png deleted file mode 100644 index 228f924e9..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00005.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00006.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00006.png deleted file mode 100644 index f5c2d6774..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_opensea/00006.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00000.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00000.png deleted file mode 100644 index ab16f62bf..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00004.png b/tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00004.png deleted file mode 100644 index d55782f42..000000000 Binary files a/tests/speculos/screenshots/eip191/nanos/personal_sign_reject/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_metamask/00001.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_metamask/00001.png deleted file mode 100644 index 58f060626..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_metamask/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_metamask/00002.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_metamask/00002.png deleted file mode 100644 index c9da92b60..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_metamask/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00000.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00000.png deleted file mode 100644 index 1b271542d..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00001.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00001.png deleted file mode 100644 index 93eda3538..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00002.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00002.png deleted file mode 100644 index 873634efa..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00003.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00003.png deleted file mode 100644 index c9da92b60..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_non_ascii/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00000.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00000.png deleted file mode 100644 index 1b271542d..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00001.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00001.png deleted file mode 100644 index 802fad56d..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00002.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00002.png deleted file mode 100644 index a3ba73961..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00003.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00003.png deleted file mode 100644 index 4601bcaf8..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00004.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00004.png deleted file mode 100644 index eab9f1d48..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00005.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00005.png deleted file mode 100644 index 0b4bdbd98..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00005.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00006.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00006.png deleted file mode 100644 index c9da92b60..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_opensea/00006.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00000.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00000.png deleted file mode 100644 index 1b271542d..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00001.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00001.png deleted file mode 100644 index 717f3a5ba..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00002.png b/tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00002.png deleted file mode 100644 index c9da92b60..000000000 Binary files a/tests/speculos/screenshots/eip191/nanox/personal_sign_reject/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00000.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00000.png deleted file mode 100644 index 910bc4302..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00001.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00001.png deleted file mode 100644 index 1492bd7a1..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00002.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00002.png deleted file mode 100644 index f6dba7ed9..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00003.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00003.png deleted file mode 100644 index 21193e007..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00004.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00004.png deleted file mode 100644 index 45c88a315..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00005.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00005.png deleted file mode 100644 index a512c884e..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00005.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00006.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00006.png deleted file mode 100644 index 489127ffa..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00006.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00007.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00007.png deleted file mode 100644 index 61bcb2d48..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00007.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00008.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00008.png deleted file mode 100644 index 326560118..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00008.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00009.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00009.png deleted file mode 100644 index f5c2d6774..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg/00009.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00000.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00000.png deleted file mode 100644 index 910bc4302..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00001.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00001.png deleted file mode 100644 index 1492bd7a1..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00002.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00002.png deleted file mode 100644 index f6dba7ed9..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00003.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00003.png deleted file mode 100644 index 21193e007..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00004.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00004.png deleted file mode 100644 index 45c88a315..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00005.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00005.png deleted file mode 100644 index a512c884e..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00005.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00006.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00006.png deleted file mode 100644 index 489127ffa..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00006.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00007.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00007.png deleted file mode 100644 index 61bcb2d48..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00007.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00008.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00008.png deleted file mode 100644 index 326560118..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00008.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00009.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00009.png deleted file mode 100644 index f5c2d6774..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00009.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00010.png b/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00010.png deleted file mode 100644 index d55782f42..000000000 Binary files a/tests/speculos/screenshots/eip712/nanos/sign_eip_712_hashed_msg_reject/00010.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00000.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00000.png deleted file mode 100644 index 00a89fd69..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00001.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00001.png deleted file mode 100644 index dfd24f466..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00002.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00002.png deleted file mode 100644 index 542bf198f..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00003.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00003.png deleted file mode 100644 index ae1ff79c1..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00004.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00004.png deleted file mode 100644 index 034e96f49..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00000.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00000.png deleted file mode 100644 index 00a89fd69..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00001.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00001.png deleted file mode 100644 index dfd24f466..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00002.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00002.png deleted file mode 100644 index 542bf198f..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00003.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00003.png deleted file mode 100644 index ae1ff79c1..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00004.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00004.png deleted file mode 100644 index 034e96f49..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00006.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00006.png deleted file mode 100644 index 121cfd59e..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00006.png and /dev/null differ diff --git a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00009.png b/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00009.png deleted file mode 100644 index 121cfd59e..000000000 Binary files a/tests/speculos/screenshots/eip712/nanox/sign_eip_712_hashed_msg_reject/00009.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00001.png b/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00001.png deleted file mode 100644 index ba1dfa0e3..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00002.png b/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00002.png deleted file mode 100644 index 7d01fe80c..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00003.png b/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00003.png deleted file mode 100644 index 950fd72aa..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00004.png b/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00004.png deleted file mode 100644 index 5906d1967..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00005.png b/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00005.png deleted file mode 100644 index 05c1afa85..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00005.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00006.png b/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00006.png deleted file mode 100644 index fb49360e7..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00006.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00007.png b/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00007.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/test_transfer_batch_erc1155/00007.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00001.png b/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00001.png deleted file mode 100644 index 2b0fd141f..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00002.png b/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00002.png deleted file mode 100644 index 7d01fe80c..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00003.png b/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00003.png deleted file mode 100644 index a5790c197..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00004.png b/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00004.png deleted file mode 100644 index 5906d1967..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00005.png b/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00005.png deleted file mode 100644 index d6257d347..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00005.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00006.png b/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00006.png deleted file mode 100644 index 061c754c7..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00006.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00007.png b/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00007.png deleted file mode 100644 index c748a750b..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00007.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00008.png b/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00008.png deleted file mode 100644 index 432e634e3..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00008.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00009.png b/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00009.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/speculos/screenshots/erc1155/nanox/transfer_erc1155/00009.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00001.png b/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00001.png deleted file mode 100644 index 2b0fd141f..000000000 Binary files a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00002.png b/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00002.png deleted file mode 100644 index 7d01fe80c..000000000 Binary files a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00003.png b/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00003.png deleted file mode 100644 index 9e8c446eb..000000000 Binary files a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00004.png b/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00004.png deleted file mode 100644 index 23f2a4504..000000000 Binary files a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00005.png b/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00005.png deleted file mode 100644 index e369a1bb9..000000000 Binary files a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00005.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00006.png b/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00006.png deleted file mode 100644 index 10b862ede..000000000 Binary files a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00006.png and /dev/null differ diff --git a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00007.png b/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00007.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/speculos/screenshots/erc721/nanox/transfer_erc721/00007.png and /dev/null differ diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00000.png b/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00000.png deleted file mode 100644 index 63778c416..000000000 Binary files a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00001.png b/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00001.png deleted file mode 100644 index 63fe23c20..000000000 Binary files a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00002.png b/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00002.png deleted file mode 100644 index b79ecb43c..000000000 Binary files a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00003.png b/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00003.png deleted file mode 100644 index 0b61bde37..000000000 Binary files a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00002.png b/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00002.png deleted file mode 100644 index 7ebda4f3a..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00003.png b/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00003.png deleted file mode 100644 index c2af54e96..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00004.png b/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00004.png deleted file mode 100644 index a54fefd4c..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/blind_and_nonce_display/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/blind_simple/00002.png b/tests/speculos/screenshots/sign/nanos/blind_simple/00002.png deleted file mode 100644 index 7ebda4f3a..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/blind_simple/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/blind_simple/00003.png b/tests/speculos/screenshots/sign/nanos/blind_simple/00003.png deleted file mode 100644 index c2af54e96..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/blind_simple/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/blind_simple/00004.png b/tests/speculos/screenshots/sign/nanos/blind_simple/00004.png deleted file mode 100644 index a54fefd4c..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/blind_simple/00004.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/nonce_display/00001.png b/tests/speculos/screenshots/sign/nanos/nonce_display/00001.png deleted file mode 100644 index 7ebda4f3a..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/nonce_display/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/nonce_display/00002.png b/tests/speculos/screenshots/sign/nanos/nonce_display/00002.png deleted file mode 100644 index c2af54e96..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/nonce_display/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/nonce_display/00003.png b/tests/speculos/screenshots/sign/nanos/nonce_display/00003.png deleted file mode 100644 index a54fefd4c..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/nonce_display/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/reject/00001.png b/tests/speculos/screenshots/sign/nanos/reject/00001.png deleted file mode 100644 index 7ebda4f3a..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/reject/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/reject/00002.png b/tests/speculos/screenshots/sign/nanos/reject/00002.png deleted file mode 100644 index c2af54e96..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/reject/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/reject/00003.png b/tests/speculos/screenshots/sign/nanos/reject/00003.png deleted file mode 100644 index a54fefd4c..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/reject/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/simple/00001.png b/tests/speculos/screenshots/sign/nanos/simple/00001.png deleted file mode 100644 index 7ebda4f3a..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/simple/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/simple/00002.png b/tests/speculos/screenshots/sign/nanos/simple/00002.png deleted file mode 100644 index c2af54e96..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/simple/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanos/simple/00003.png b/tests/speculos/screenshots/sign/nanos/simple/00003.png deleted file mode 100644 index a54fefd4c..000000000 Binary files a/tests/speculos/screenshots/sign/nanos/simple/00003.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00002.png b/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00002.png deleted file mode 100644 index 0976a317a..000000000 Binary files a/tests/speculos/screenshots/sign/nanox/blind_and_nonce_display/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanox/blind_simple/00002.png b/tests/speculos/screenshots/sign/nanox/blind_simple/00002.png deleted file mode 100644 index 0976a317a..000000000 Binary files a/tests/speculos/screenshots/sign/nanox/blind_simple/00002.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanox/nonce_display/00001.png b/tests/speculos/screenshots/sign/nanox/nonce_display/00001.png deleted file mode 100644 index 0976a317a..000000000 Binary files a/tests/speculos/screenshots/sign/nanox/nonce_display/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanox/reject/00001.png b/tests/speculos/screenshots/sign/nanox/reject/00001.png deleted file mode 100644 index 0976a317a..000000000 Binary files a/tests/speculos/screenshots/sign/nanox/reject/00001.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanox/simple/00000.png b/tests/speculos/screenshots/sign/nanox/simple/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/speculos/screenshots/sign/nanox/simple/00000.png and /dev/null differ diff --git a/tests/speculos/screenshots/sign/nanox/simple/00001.png b/tests/speculos/screenshots/sign/nanox/simple/00001.png deleted file mode 100644 index 0976a317a..000000000 Binary files a/tests/speculos/screenshots/sign/nanox/simple/00001.png and /dev/null differ diff --git a/tests/speculos/test_configuration_cmd.py b/tests/speculos/test_configuration_cmd.py deleted file mode 100644 index af56756e5..000000000 --- a/tests/speculos/test_configuration_cmd.py +++ /dev/null @@ -1,3 +0,0 @@ - -def test_configuration(cmd): - assert cmd.get_configuration() == (2, 1, 11, 0) diff --git a/tests/speculos/test_eip1559.py b/tests/speculos/test_eip1559.py deleted file mode 100644 index 62cb43a70..000000000 --- a/tests/speculos/test_eip1559.py +++ /dev/null @@ -1,64 +0,0 @@ -from time import sleep - -from ethereum_client.utils import compare_screenshot, save_screenshot, PATH_IMG, parse_sign_response - -def test_sign_eip_1559(cmd): - result: list = [] - # with bip32_path "44'/60'/0'/0/0" - apdu_sign_eip_1559 = bytes.fromhex("e004000088058000002c8000003c80000000000000000000000002f87001018502540be4008502540be40086246139ca800094cccccccccccccccccccccccccccccccccccccccc8000c001a0e07fb8a64ea3786c9a6649e54429e2786af3ea31c6d06165346678cf8ce44f9ba00e4a0526db1e905b7164a858fd5ebd2f1759e22e6955499448bd276a6aa62830") - - with cmd.send_apdu_context(apdu_sign_eip_1559, result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Review transaction - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00000.png") - cmd.client.press_and_release('right') - - # Amount - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00001.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00004.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00005.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00006.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Review transaction - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00000.png") - cmd.client.press_and_release('right') - - # Amount - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00001.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00002.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00003.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/eip1559/{PATH_IMG[cmd.model]}/sign_eip_1559/00004.png") - cmd.client.press_and_release('both') - - response: bytes = result[0] - v, r, s = parse_sign_response(response) - - assert v == 0x01 - assert r.hex() == "3d6dfabc6c52374bfa34cb2c433856a0bcd9484870dd1b50249f7164a5fce052" - assert s.hex() == "0548a774dd0b63930d83cb2e1a836fe3ef24444e8b758b00585d9a076c0e98a8" diff --git a/tests/speculos/test_eip2930.py b/tests/speculos/test_eip2930.py deleted file mode 100644 index 972cbc576..000000000 --- a/tests/speculos/test_eip2930.py +++ /dev/null @@ -1,72 +0,0 @@ -from time import sleep - -from ethereum_client.utils import compare_screenshot, save_screenshot, PATH_IMG, parse_sign_response - -def test_sign_eip_2930(cmd): - result: list = [] - apdu_sign_eip_2930 = bytes.fromhex("e004000096058000002c8000003c80000000000000000000000001f886030685012a05f20082520894b2bb2b958afa2e96dab3f3ce7162b87daea39017872386f26fc1000080f85bf85994de0b295669a9fd93d5f28d9ec85e40f4cb697baef842a00000000000000000000000000000000000000000000000000000000000000003a00000000000000000000000000000000000000000000000000000000000000007") - - with cmd.send_apdu_context(apdu_sign_eip_2930, result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Review transaction - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00000.png") - cmd.client.press_and_release('right') - - # Amount - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00001.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00004.png") - cmd.client.press_and_release('right') - - # Network - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00005.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00006.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00007.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Review transaction - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00000.png") - cmd.client.press_and_release('right') - - # Amount - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00001.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00002.png") - cmd.client.press_and_release('right') - - # Network - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00003.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00004.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/eip2930/{PATH_IMG[cmd.model]}/sign_eip_2930/00005.png") - cmd.client.press_and_release('both') - - - response: bytes = result[0] - v, r, s = parse_sign_response(response) - - assert v == 0x01 - assert r.hex() == "a74d82400f49d1f9d85f734c22a1648d4ab74bb6367bef54c6abb0936be3d8b7" - assert s.hex() == "7a84a09673394c3c1bd76be05620ee17a2d0ff32837607625efa433cc017854e" diff --git a/tests/speculos/test_eip712.py b/tests/speculos/test_eip712.py deleted file mode 100644 index 161e6eee3..000000000 --- a/tests/speculos/test_eip712.py +++ /dev/null @@ -1,179 +0,0 @@ -from time import sleep - -import pytest - -from ethereum_client.utils import compare_screenshot, save_screenshot, PATH_IMG, parse_sign_response -from ethereum_client.transaction import EIP712 -import ethereum_client - -def test_sign_eip_712_hashed_msg(cmd): - result: list = [] - - bip32_path="44'/60'/0'/0'/0" - transaction = EIP712( - domain_hash="c24f499b8c957196651b13edd64aaccc3980009674b2aea0966c8a56ba81278e", - msg_hash="9d96be8a7cca396e711a3ba356bd9878df02a726d753ddb6cda3c507d888bc77" - ) - - with cmd.sign_eip712(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Sign typed message - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00000.png") - cmd.client.press_and_release('right') - - # Domain hash 1/4, 2/4, 3/4, 4/4 - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00004.png") - cmd.client.press_and_release('right') - - # Message hash 1/4, 2/4, 3/4, 4/4 - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00005.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00006.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00007.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00008.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00009.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Sign typed message - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00000.png") - cmd.client.press_and_release('right') - - # Domain hash 1/2, 2/2 - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00002.png") - cmd.client.press_and_release('right') - - # Message hash 1/2, 2/2 - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00004.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00005.png") - cmd.client.press_and_release('both') - - v, r, s = result - - assert v == 0x1B #27 - assert r.hex() == "b1cf3dd6f2902ae9b181e158cc07f6ee6e6c456360b18842ece0b947dec89f07" - assert s.hex() == "5372a9b1a495b76ccd75347b6f591867859fb73aa05a546b79c81073ddff5e8a" - -def test_sign_eip_712_hashed_msg_reject(cmd): - result: list = [] - - bip32_path="44'/60'/0'/0'/0" - transaction = EIP712( - domain_hash="c24f499b8c957196651b13edd64aaccc3980009674b2aea0966c8a56ba81278e", - msg_hash="9d96be8a7cca396e711a3ba356bd9878df02a726d753ddb6cda3c507d888bc77" - ) - - with pytest.raises(ethereum_client.exception.errors.DenyError) as error: - with cmd.sign_eip712(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Sign typed message - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00000.png") - cmd.client.press_and_release('right') - - # Domain hash 1/4, 2/4, 3/4, 4/4 - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00004.png") - cmd.client.press_and_release('right') - - # Message hash 1/4, 2/4, 3/4, 4/4 - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00005.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00006.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00007.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00008.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00009.png") - cmd.client.press_and_release('right') - - # Cancel signature - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00010.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Sign typed message - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00000.png") - cmd.client.press_and_release('right') - - # Domain hash 1/2, 2/2 - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00002.png") - cmd.client.press_and_release('right') - - # Message hash 1/2, 2/2 - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00004.png") - cmd.client.press_and_release('right') - - # Sign message - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00005.png") - cmd.client.press_and_release('right') - - # Cancel signature - compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00006.png") - cmd.client.press_and_release('both') - assert error.args[0] == '0x6985' - -def test_sign_eip_712_bad_domain(cmd): - result: list = [] - - bip32_path="44'/60'/0'/0'/0" - transaction = EIP712( - domain_hash="deadbeef", - msg_hash="9d96be8a7cca396e711a3ba356bd9878df02a726d753ddb6cda3c507d888bc77" - ) - - with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error: - - with cmd.sign_eip712(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - pass - - assert error.args[0] == '0x6a80' - -def test_sign_eip_712_bad_msg(cmd): - result: list = [] - - bip32_path="44'/60'/0'/0'/0" - transaction = EIP712( - domain_hash="c24f499b8c957196651b13edd64aaccc3980009674b2aea0966c8a56ba81278e", - msg_hash="deadbeef" - ) - - with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error: - - with cmd.sign_eip712(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - pass - - assert error.args[0] == '0x6a80' diff --git a/tests/speculos/test_erc1155.py b/tests/speculos/test_erc1155.py deleted file mode 100644 index f3948a4a7..000000000 --- a/tests/speculos/test_erc1155.py +++ /dev/null @@ -1,208 +0,0 @@ -from time import sleep - -import pytest - -import ethereum_client -from ethereum_client.utils import compare_screenshot, save_screenshot, PATH_IMG, parse_sign_response -from ethereum_client.plugin import Plugin - -SIGN_FIRST = bytes.fromhex("e004000096058000002c8000003c800000000000000000000000f901090b8520b673dd0082bcb394495f947276749ce646f68ac8c248420045cb7b5e80b8e4f242432a0000000000000000000000006cbcd73cd8e8a42844662f0a0e76d7f79afd933d000000000000000000000000c2907efcce4011c491bbeda8a0fa63ba7aab596cabf06640f8ca8fc5e0ed471b10befcdf65a33e4300000000") -SIGN_MORE = bytes.fromhex("e00480008b00006a0000000064000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000043078303000000000000000000000000000000000000000000000000000000000018080") - -PLUGIN = Plugin( - type=1, - version=1, - name="ERC1155", - addr="0x495f947276749ce646f68ac8c248420045cb7b5e", - selector=0xf242432a, - chainID=1, - keyID=0, - algorithm=1, - sign="3045022100ec4377d17e8d98d424bf16b29c691bc1a010825fb5b8a35de0268a9dc22eab2402206701b016fe6718bf519d18cc12e9838e9ef898cc4c143017839023c3260b2d74", -) - -PROVIDE_NFT_INFORMATION = Plugin( - type=1, - version=1, - name="OpenSea Collection", - addr="0x495f947276749ce646f68ac8c248420045cb7b5e", - chainID=1, - keyID=0, - algorithm=1, - sign="304502210083e357a828f13d574b1296214a3749c194ab1df1f8a243655c053b1c72f91e0c02201ed93cfac7e87759445c4da2e4bfd6e1cf0405ea37c7293bc965948f51bef5cc", -) - -def test_transfer_erc1155(cmd): - result: list = [] - - if cmd.model == "nanox" or cmd.model == "nanosp": - cmd.set_plugin(plugin=PLUGIN) - cmd.provide_nft_information(plugin=PROVIDE_NFT_INFORMATION) - - cmd.send_apdu(SIGN_FIRST) - - with cmd.send_apdu_context(SIGN_MORE, result) as ex: - sleep(0.5) - # Review transaction - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/transfer_erc1155/00000.png") - cmd.client.press_and_release('right') - - # NFT Transfer - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/transfer_erc1155/00001.png") - cmd.client.press_and_release('right') - - # To - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/transfer_erc1155/00002.png") - cmd.client.press_and_release('right') - - # Collection Name - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/transfer_erc1155/00003.png") - cmd.client.press_and_release('right') - - # NFT Address - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/transfer_erc1155/00004.png") - cmd.client.press_and_release('right') - - # NFT ID 1/2, 2/2 - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/transfer_erc1155/00005.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/transfer_erc1155/00006.png") - cmd.client.press_and_release('right') - - # Quantity - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/transfer_erc1155/00007.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/transfer_erc1155/00008.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/transfer_erc1155/00009.png") - cmd.client.press_and_release('both') - - - response: bytes = result[0] - v, r, s = parse_sign_response(response) - - assert v == 0x25 # 37 - assert r.hex() == "ab3eca1a0b5c66bfe603252037682a024a12f92d799b4d74993a8bf4221bbe7d" - assert s.hex() == "24de0c0598d1d8e5ea99b75fa26105478f45f43b510e504fc1b14f07fe7dda2a" - - -def test_transfer_erc1155_without_nft_provide_info(cmd): - result: list = [] - - if cmd.model == "nanox" or cmd.model == "nanosp": - with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error: - - cmd.set_plugin(plugin=PLUGIN) - - - cmd.send_apdu(SIGN_FIRST) - - with cmd.send_apdu_context(SIGN_MORE, result) as ex: - pass - - assert error.args[0] == '0x6a80' - - -def test_transfer_erc1155_without_set_plugin(cmd): - result: list = [] - - if cmd.model == "nanox" or cmd.model == "nanosp": - with pytest.raises(ethereum_client.exception.errors.DenyError) as error: - - cmd.provide_nft_information(plugin=PROVIDE_NFT_INFORMATION) - - cmd.send_apdu(SIGN_FIRST) - - with cmd.send_apdu_context(SIGN_MORE, result) as ex: - pass - - assert error.args[0] == '0x6985' - - -# =========================== -# Batch -# =========================== - -SIGN_FIRST_BATCH = bytes.fromhex("e004000096058000002c8000003c800000000000000000000000f9020b0e850d8cfd86008301617d94495f947276749ce646f68ac8c248420045cb7b5e80b901e42eb2c2d60000000000000000000000006cbcd73cd8e8a42844662f0a0e76d7f79afd933d000000000000000000000000c2907efcce4011c491bbeda8a0fa63ba7aab596c00000000000000000000000000000000000000000000") -SIGN_MORE_1_BATCH = bytes.fromhex("e004800096000000000000000000a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000003abf06640f8ca8fc5e0ed471b10befcdf65a33e430000000000006a0000000064def9d99ff495856496c028c0") -SIGN_MORE_2_BATCH = bytes.fromhex("e00480009689732473fcd0bbbe000000000000a30000000001abf06640f8ca8fc5e0ed471b10befcdf65a33e430000000000006a00000000640000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000010000") -SIGN_MORE_3_BATCH = bytes.fromhex("e00480006100000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000043078303000000000000000000000000000000000000000000000000000000000018080") - -PLUGIN_BATCH = Plugin( - type=1, - version=1, - name="ERC1155", - addr="0x495f947276749ce646f68ac8c248420045cb7b5e", - selector=0x2eb2c2d6, - chainID=1, - keyID=0, - algorithm=1, - sign="304502210087b35cefc53fd94e25404933eb0d5ff08f20ba655d181de3b24ff0099dc3317f02204a216aa9e0b84bef6e20fcb036bd49647bf0cab66732b99b49ec277ffb682aa1", -) - -PROVIDE_NFT_INFORMATION_BATCH = Plugin( - type=1, - version=1, - name="OpenSea Shared Storefront", - addr="0x495f947276749ce646f68ac8c248420045cb7b5e", - chainID=1, - keyID=0, - algorithm=1, - sign="3045022100c74cd613a27a9f4887210f5a3a0e12745e1ba0ab3a0d284cb6485d89c3cce4e602205a13e62a91164985cf58a838f8f531c0b91b980d206a5ba8df28270023ef93a3", -) - -def test_transfer_batch_erc1155(cmd): - result: list = [] - - if cmd.model == "nanox" or cmd.model == "nanosp": - cmd.set_plugin(plugin=PLUGIN_BATCH) - cmd.provide_nft_information(plugin=PROVIDE_NFT_INFORMATION_BATCH) - - cmd.send_apdu(SIGN_FIRST_BATCH) - cmd.send_apdu(SIGN_MORE_1_BATCH) - cmd.send_apdu(SIGN_MORE_2_BATCH) - - with cmd.send_apdu_context(SIGN_MORE_3_BATCH, result) as ex: - sleep(0.5) - # Review transaction - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/test_transfer_batch_erc1155/00000.png") - cmd.client.press_and_release('right') - - # NFT Batch Transfer - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/test_transfer_batch_erc1155/00001.png") - cmd.client.press_and_release('right') - - # To - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/test_transfer_batch_erc1155/00002.png") - cmd.client.press_and_release('right') - - # Collection Name - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/test_transfer_batch_erc1155/00003.png") - cmd.client.press_and_release('right') - - # NFT Address - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/test_transfer_batch_erc1155/00004.png") - cmd.client.press_and_release('right') - - # Total Quantity - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/test_transfer_batch_erc1155/00005.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/test_transfer_batch_erc1155/00006.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/erc1155/{PATH_IMG[cmd.model]}/test_transfer_batch_erc1155/00007.png") - cmd.client.press_and_release('both') - - response: bytes = result[0] - v, r, s = parse_sign_response(response) - - assert v == 0x25 # 37 - assert r.hex() == "ee17b599747775a5056c6f654b476bdec0f3fea2c03a4754a31f736e61015082" - assert s.hex() == "3d76f264da438a5bda69389e59c08216e98ddb6649323bd5055980ae31f79c1c" diff --git a/tests/speculos/test_erc20information.py b/tests/speculos/test_erc20information.py deleted file mode 100644 index de01c638c..000000000 --- a/tests/speculos/test_erc20information.py +++ /dev/null @@ -1,31 +0,0 @@ -import pytest -from ethereum_client.plugin import ERC20Information -import ethereum_client - -def test_provide_erc20_token(cmd): - erc20_info = ERC20Information( - erc20_ticker="5a5258", - addr="0xe41d2489571d322189246dafa5ebde1f4699f498", - nb_decimals=18, - chainID=1, - sign="304402200ae8634c22762a8ba41d2acb1e068dcce947337c6dd984f13b820d396176952302203306a49d8a6c35b11a61088e1570b3928ca3a0db6bd36f577b5ef87628561ff7" - ) - - # Test if return 9000 - try: - cmd.provide_erc20_token_information(info=erc20_info) - except: - raise - -def test_provide_erc20_token_error(cmd): - erc20_info = ERC20Information( - erc20_ticker="5a5258", - addr="0xe41d2489571d322189246dafa5ebde1f4699f498", - nb_decimals=18, - chainID=1, - sign="deadbeef" - ) - - with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error: - cmd.provide_erc20_token_information(info=erc20_info) - assert error.args[0] == '0x6a80' diff --git a/tests/speculos/test_erc721.py b/tests/speculos/test_erc721.py deleted file mode 100644 index c492f65a4..000000000 --- a/tests/speculos/test_erc721.py +++ /dev/null @@ -1,115 +0,0 @@ -from time import sleep - -import pytest - -import ethereum_client -from ethereum_client.utils import compare_screenshot, save_screenshot, PATH_IMG, parse_sign_response -from ethereum_client.plugin import Plugin - -SIGN_FIRST = bytes.fromhex("e004000096058000002c8000003c800000000000000000000000f88a0a852c3ce1ec008301f5679460f80121c31a0d46b5279700f9df786054aa5ee580b86442842e0e0000000000000000000000006cbcd73cd8e8a42844662f0a0e76d7f79afd933d000000000000000000000000c2907efcce4011c491bbeda8a0fa63ba7aab596c000000000000000000000000000000000000000000000000") -SIGN_MORE = bytes.fromhex("e00480000b0000000000112999018080") - -PLUGIN = Plugin( - type=1, - version=1, - name="ERC721", - addr="0x60f80121c31a0d46b5279700f9df786054aa5ee5", - selector=0x42842e0e, - chainID=1, - keyID=0, - algorithm=1, - sign="304502202e2282d7d3ea714da283010f517af469e1d59654aaee0fc438f017aa557eaea50221008b369679381065bbe01135723a4f9adb229295017d37c4d30138b90a51cf6ab6", -) - -PROVIDE_NFT_INFORMATION = Plugin( - type=1, - version=1, - name="Rarible", - addr="0x60f80121c31a0d46b5279700f9df786054aa5ee5", - chainID=1, - keyID=0, - algorithm=1, - sign="3045022025696986ef5f0ee2f72d9c6e41d7e2bf2e4f06373ab26d73ebe326c7fd4c7a6602210084f6b064d8750ae68ed5dd012296f37030390ec06ff534c5da6f0f4a4460af33", -) - -def test_transfer_erc721(cmd): - result: list = [] - - if cmd.model == "nanox" or cmd.model == "nanosp": - cmd.set_plugin(plugin=PLUGIN) - cmd.provide_nft_information(plugin=PROVIDE_NFT_INFORMATION) - - cmd.send_apdu(SIGN_FIRST) - - with cmd.send_apdu_context(SIGN_MORE, result) as ex: - sleep(0.5) - # Review transaction - compare_screenshot(cmd, f"screenshots/erc721/{PATH_IMG[cmd.model]}/transfer_erc721/00000.png") - cmd.client.press_and_release('right') - - # NFT Transfer - compare_screenshot(cmd, f"screenshots/erc721/{PATH_IMG[cmd.model]}/transfer_erc721/00001.png") - cmd.client.press_and_release('right') - - # To - compare_screenshot(cmd, f"screenshots/erc721/{PATH_IMG[cmd.model]}/transfer_erc721/00002.png") - cmd.client.press_and_release('right') - - # Collection Name - compare_screenshot(cmd, f"screenshots/erc721/{PATH_IMG[cmd.model]}/transfer_erc721/00003.png") - cmd.client.press_and_release('right') - - # NFT Address - compare_screenshot(cmd, f"screenshots/erc721/{PATH_IMG[cmd.model]}/transfer_erc721/00004.png") - cmd.client.press_and_release('right') - - # NFT ID - compare_screenshot(cmd, f"screenshots/erc721/{PATH_IMG[cmd.model]}/transfer_erc721/00005.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/erc721/{PATH_IMG[cmd.model]}/transfer_erc721/00006.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/erc721/{PATH_IMG[cmd.model]}/transfer_erc721/00007.png") - cmd.client.press_and_release('both') - - response: bytes = result[0] - v, r, s = parse_sign_response(response) - - assert v == 0x25 # 37 - assert r.hex() == "68ba082523584adbfc31d36d68b51d6f209ce0838215026bf1802a8f17dcdff4" - assert s.hex() == "7c92908fa05c8bc86507a3d6a1c8b3c2722ee01c836d89a61df60c1ab0b43fff" - - -def test_transfer_erc721_without_nft_provide_info(cmd): - result: list = [] - - if cmd.model == "nanox" or cmd.model == "nanosp": - with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error: - - cmd.set_plugin(plugin=PLUGIN) - - cmd.send_apdu(SIGN_FIRST) - - with cmd.send_apdu_context(SIGN_MORE, result) as ex: - pass - - assert error.args[0] == '0x6a80' - - - -def test_transfer_erc721_without_set_plugin(cmd): - result: list = [] - - if cmd.model == "nanox" or cmd.model == "nanosp": - with pytest.raises(ethereum_client.exception.errors.DenyError) as error: - cmd.provide_nft_information(plugin=PROVIDE_NFT_INFORMATION) - - cmd.send_apdu(SIGN_FIRST) - - with cmd.send_apdu_context(SIGN_MORE, result) as ex: - pass - - assert error.args[0] == '0x6985' diff --git a/tests/speculos/test_pubkey_cmd.py b/tests/speculos/test_pubkey_cmd.py deleted file mode 100644 index 451bbf9aa..000000000 --- a/tests/speculos/test_pubkey_cmd.py +++ /dev/null @@ -1,117 +0,0 @@ -from time import sleep - -import pytest - -import ethereum_client -from ethereum_client.utils import compare_screenshot, save_screenshot, PATH_IMG - - -def test_get_public_key(cmd): - # ETHER COIN without display - result: list = [] - with cmd.get_public_key(bip32_path="44'/60'/1'/0/0", display=False, result=result) as exchange: - pass - - uncompressed_addr_len, eth_addr, chain_code = result - - assert len(uncompressed_addr_len) == 65 - assert len(eth_addr) == 40 - assert len(chain_code) == 32 - - assert uncompressed_addr_len == b'\x04\xea\x02&\x91\xc7\x87\x00\xd2\xc3\xa0\xc7E\xbe\xa4\xf2\xb8\xe5\xe3\x13\x97j\x10B\xf6\xa1Vc\\\xb2\x05\xda\x1a\xcb\xfe\x04*\nZ\x89eyn6"E\x89\x0eT\xbd-\xbex\xec\x1e\x18df\xf2\xe9\xd0\xf5\xd5\xd8\xdf' - assert eth_addr == b'463e4e114AA57F54f2Fd2C3ec03572C6f75d84C2' - assert chain_code == b'\xaf\x89\xcd)\xea${8I\xec\xc80\xc2\xc8\x94\\e1\xd6P\x87\x07?\x9f\xd09\x00\xa0\xea\xa7\x96\xc8' - - # DAI COIN with display - result: list = [] - with cmd.get_public_key(bip32_path="44'/700'/1'/0/0", display=True, result=result) as exchange: - sleep(0.5) - - if cmd.model == "nanos": - # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00000.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00003.png") - cmd.client.press_and_release('right') - - # Approved - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00004.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00000.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00001.png") - cmd.client.press_and_release('right') - - # Approve - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00002.png") - cmd.client.press_and_release('both') - - uncompressed_addr_len, eth_addr, chain_code = result - assert len(uncompressed_addr_len) == 65 - assert len(eth_addr) == 40 - assert len(chain_code) == 32 - - assert uncompressed_addr_len == b'\x04V\x8a\x15\xdc\xed\xc8[\x16\x17\x8d\xaf\xcax\x91v~{\x9c\x06\xba\xaa\xde\xf4\xe7\x9f\x86\x1d~\xed)\xdc\n8\x9c\x84\xf01@E\x13]\xd7~6\x8e\x8e\xabb-\xad\xcdo\xc3Fw\xb7\xc8y\xdbQ/\xc3\xe5\x18' - assert eth_addr == b'Ba9A9aED0a1AbBE1da1155F64e73e57Af7995880' - assert chain_code == b'4\xaa\x95\xf4\x02\x12\x12-T\x155\x86\xed\xc5\x0b\x1d8\x81\xae\xce\xbd\x1a\xbbv\x9a\xc7\xd5\x1a\xd0KT\xe4' - - -def test_reject_get_public_key(cmd): - # DAI COIN with display - result: list = [] - - with pytest.raises(ethereum_client.exception.errors.DenyError) as error: - - with cmd.get_public_key(bip32_path="44'/700'/1'/0/0", display=True, result=result) as exchange: - sleep(0.5) - - if cmd.model == "nanos": - # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00000.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00003.png") - cmd.client.press_and_release('right') - - # Approve - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00004.png") - cmd.client.press_and_release('right') - - # Reject - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00005.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00000.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00001.png") - cmd.client.press_and_release('right') - - # Approve - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00002.png") - cmd.client.press_and_release('right') - - # Reject - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00003.png") - cmd.client.press_and_release('both') - - assert error.args[0] == '0x6985' diff --git a/tests/speculos/test_sign_cmd.py b/tests/speculos/test_sign_cmd.py deleted file mode 100644 index 5da7ef6ec..000000000 --- a/tests/speculos/test_sign_cmd.py +++ /dev/null @@ -1,620 +0,0 @@ -from time import sleep - -import pytest - -import ethereum_client -from ethereum_client.utils import compare_screenshot, compare_screenshot, save_screenshot, PATH_IMG -from ethereum_client.transaction import Transaction - - -# https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md - -def test_sign_simple(cmd): - result: list = [] - - # Ether coin type - bip32_path="44'/60'/1'/0/0" - - transaction = Transaction( - txType=0xEB, - nonce=68, - gasPrice=0x0306dc4200, - gasLimit=0x5208, - to="0x5a321744667052affa8386ed49e00ef223cbffc3", - value=0x6f9c9e7bf61818, - chainID=1, - ) - - with cmd.simple_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00000.png") - cmd.client.press_and_release('right') - - # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00003.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00004.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00005.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00006.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00007.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00008.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00000.png") - cmd.client.press_and_release('right') - - # Amount - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00001.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00002.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00003.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00004.png") - cmd.client.press_and_release('both') - - v, r, s = result - - assert v == 0x26 # 38 - assert r.hex() == "6f389d15320f0501383526ed03de917c14212716f09a262dbc98431086a5db49" - assert s.hex() == "0dc994b7b97230bb35fdf6fec2f4d8ff4cfb8bfeb2a652c364c738ff033c05dd" - - -def test_sign_reject(cmd): - result: list = [] - - # Ether coin type - bip32_path="44'/60'/1'/0/0" - - transaction = Transaction( - txType=0xEB, - nonce=0, - gasPrice=0x0306dc4200, - gasLimit=0x5208, - to="0x5a321744667052affa8386ed49e00ef223cbffc3", - value=0x6f9c9e7bf61818, - chainID=1, - ) - - with pytest.raises(ethereum_client.exception.errors.DenyError) as error: - - with cmd.simple_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00000.png") - cmd.client.press_and_release('right') - - # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00003.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00004.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00005.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00006.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00007.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00008.png") - cmd.client.press_and_release('right') - - # Reject - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00009.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00000.png") - cmd.client.press_and_release('right') - - # Amount - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00001.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00002.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00003.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00004.png") - cmd.client.press_and_release('right') - - # Reject - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00005.png") - cmd.client.press_and_release('both') - - assert error.args[0] == '0x6985' - - -def test_sign_limit_nonce(cmd): - result: list = [] - - # Ether coin type - bip32_path="44'/60'/1'/0/0" - - # EIP-2681: Limit account nonce to 2^64-1 - transaction = Transaction( - txType=0xEB, - nonce=2**64-1, - gasPrice=10, - gasLimit=50000, - to="0x5a321744667052affa8386ed49e00ef223cbffc3", - value=0x08762, - chainID=1, - ) - - with cmd.simple_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00000.png") - cmd.client.press_and_release('right') - - # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00003.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00004.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00005.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00006.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00007.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00008.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00000.png") - cmd.client.press_and_release('right') - - # Amount - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00001.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00002.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00003.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00004.png") - cmd.client.press_and_release('both') - - v, r, s = result - - assert v == 0x26 # 38 - assert r.hex() == "7f17f9efa5a6065f885a44a5f5d68a62381c6b2b23047817b4569c61ccf571c6" - assert s.hex() == "4b67d37cfe473e0b2daf246fa82c7595bcff0c1515d69089037d0c061f14b3b3" - - -def test_sign_error_transaction_type(cmd): - result: list = [] - - # Ether coin type - bip32_path="44'/60'/1'/0/0" - - # the txType is between 0x00 and 0x7F - transaction = Transaction( - txType=0x00, - nonce=0, - gasPrice=10, - gasLimit=50000, - to="0x5a321744667052affa8386ed49e00ef223cbffc3", - value=0x19, - chainID=1, - ) - - with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error: - - with cmd.simple_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - pass - - assert error.args[0] == '0x6501' - - transaction.txType = 0x7F - with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error: - with cmd.simple_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - pass - - assert error.args[0] == '0x6501' - - -def test_sign_nonce_display(cmd): - # Activate nonce display - # Application is ready - cmd.client.press_and_release('left') - # Quit - cmd.client.press_and_release('left') - # Settings - cmd.client.press_and_release('both') - # Blind signing - cmd.client.press_and_release('right') - # Debug data - cmd.client.press_and_release('right') - # Nonce display - cmd.client.press_and_release('both') - cmd.client.press_and_release('right') - # Back - cmd.client.press_and_release('both') - - result: list = [] - - # Ether coin type - bip32_path="44'/60'/1'/0/0" - - transaction = Transaction( - txType=0xEB, - nonce=68, - gasPrice=0x0306dc4200, - gasLimit=0x5208, - to="0x5a321744667052affa8386ed49e00ef223cbffc3", - value=0x6f9c9e7bf61818, - chainID=1, - ) - - with cmd.simple_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00000.png") - cmd.client.press_and_release('right') - - # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00003.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00004.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00005.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00006.png") - cmd.client.press_and_release('right') - - # Nonce - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00007.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00008.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00009.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00000.png") - cmd.client.press_and_release('right') - - # Amount - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00001.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00002.png") - cmd.client.press_and_release('right') - - # Nonce - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00003.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00004.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00005.png") - cmd.client.press_and_release('both') - - v, r, s = result - - assert v == 0x26 # 38 - assert r.hex() == "6f389d15320f0501383526ed03de917c14212716f09a262dbc98431086a5db49" - assert s.hex() == "0dc994b7b97230bb35fdf6fec2f4d8ff4cfb8bfeb2a652c364c738ff033c05dd" - - -def test_sign_blind_simple(cmd): - # Activate blind signing - # Application is ready - cmd.client.press_and_release('left') - # Quit - cmd.client.press_and_release('left') - # Settings - cmd.client.press_and_release('both') - # Blind signing - cmd.client.press_and_release('both') - cmd.client.press_and_release('right') - # Debug data - cmd.client.press_and_release('right') - # Nonce display - cmd.client.press_and_release('right') - # Back - cmd.client.press_and_release('both') - - result: list = [] - - # Ether coin type - bip32_path="44'/60'/1'/0/0" - - transaction = Transaction( - txType=0xEB, - nonce=68, - gasPrice=0x0306dc4200, - gasLimit=0x5208, - to="0x5a321744667052affa8386ed49e00ef223cbffc3", - value=0x6f9c9e7bf61818, - chainID=1, - data="ok", - ) - - with cmd.simple_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00000.png") - cmd.client.press_and_release('right') - - # Blind Signing - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00001.png") - cmd.client.press_and_release('right') - - # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00004.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00005.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00006.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00007.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00008.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00009.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00000.png") - cmd.client.press_and_release('right') - - # Blind Signing - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00001.png") - cmd.client.press_and_release('right') - - # Amount - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00002.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00003.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00004.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00005.png") - cmd.client.press_and_release('both') - - v, r, s = result - - assert v == 0x26 # 38 - assert r.hex() == "98163696ad14f54e0e7207306b6f66665131cee601052facab8fd24250e15470" - assert s.hex() == "318e573fc809f7dcb8f9718c8bd2946b2c3c83cedf3720e66e06fb63ceea3174" - - -def test_sign_blind_error_disabled(cmd): - result: list = [] - - # Ether coin type - bip32_path="44'/60'/1'/0/0" - - transaction = Transaction( - txType=0xEB, - nonce=68, - gasPrice=0x0306dc4200, - gasLimit=0x5208, - to="0x5a321744667052affa8386ed49e00ef223cbffc3", - value=0x6f9c9e7bf61818, - chainID=1, - data="ok", - ) - - with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error: - - with cmd.simple_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - pass - if cmd.model == "nanox" or cmd.model == "nanosp": - pass - - assert error.args[0] == '0x6a80' - - -def test_sign_blind_and_nonce_display(cmd): - # Activate blind signing - # Application is ready - cmd.client.press_and_release('left') - # Quit - cmd.client.press_and_release('left') - # Settings - cmd.client.press_and_release('both') - # Blind signing - cmd.client.press_and_release('both') - cmd.client.press_and_release('right') - # Debug data - cmd.client.press_and_release('right') - # Nonce display - cmd.client.press_and_release('both') - cmd.client.press_and_release('right') - # Back - cmd.client.press_and_release('both') - - result: list = [] - - # Ether coin type - bip32_path="44'/60'/1'/0/0" - - transaction = Transaction( - txType=0xEB, - nonce=1844674, - gasPrice=0x0306dc4200, - gasLimit=0x5208, - to="0x5a321744667052affa8386ed49e00ef223cbffc3", - value=0x6f9c9e7bf61818, - chainID=1, - data="That's a little message :)", - ) - - with cmd.simple_sign_tx(bip32_path=bip32_path, transaction=transaction, result=result) as ex: - sleep(0.5) - - if cmd.model == "nanos": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00000.png") - cmd.client.press_and_release('right') - - # Blind Signing - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00001.png") - cmd.client.press_and_release('right') - - # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00003.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00004.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00005.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00006.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00007.png") - cmd.client.press_and_release('right') - - # Nonce - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00008.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00009.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00010.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00000.png") - cmd.client.press_and_release('right') - - # Blind Signing - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00001.png") - cmd.client.press_and_release('right') - - # Amount - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00002.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00003.png") - cmd.client.press_and_release('right') - - # Nonce - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00004.png") - cmd.client.press_and_release('right') - - # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00005.png") - cmd.client.press_and_release('right') - - # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00006.png") - cmd.client.press_and_release('both') - - v, r, s = result - - assert v == 0x26 # 38 - assert r.hex() == "c8d7cd5c1711ea1af7da048d15d1a95fc9347d4622afa11f32320d73384984d1" - assert s.hex() == "3165ca0a27f565e1a87560ed3d3a144c4ac9732370428da5e6952e93659f6ac2" diff --git a/tests/zemu/.babelrc b/tests/zemu/.babelrc deleted file mode 100644 index 0f36fe647..000000000 --- a/tests/zemu/.babelrc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "plugins": [ - [ - "@babel/plugin-proposal-class-properties" - ] - ], - "presets": [ - [ - "@babel/preset-env", - { - "targets": { - "node": "current" - } - } - ], - "@babel/preset-flow" - ], -} diff --git a/tests/zemu/.flowconfig b/tests/zemu/.flowconfig deleted file mode 100644 index 43c5d124f..000000000 --- a/tests/zemu/.flowconfig +++ /dev/null @@ -1,13 +0,0 @@ -[ignore] -/lib - -[include] - -[libs] -flow-typed - -[lints] - -[options] - -[strict] diff --git a/tests/zemu/.gitignore b/tests/zemu/.gitignore deleted file mode 100644 index fedc35235..000000000 --- a/tests/zemu/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/node_modules -/snapshots-tmp -/elfs -/lib diff --git a/tests/zemu/Makefile b/tests/zemu/Makefile deleted file mode 100644 index 0ff9a8419..000000000 --- a/tests/zemu/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -MAKEFLAGS += --no-print-directory - -all: - ./build_local_test_elfs.sh - yarn install - yarn test - -.PHONY: all diff --git a/tests/zemu/build_local_test_elfs.sh b/tests/zemu/build_local_test_elfs.sh deleted file mode 100755 index c6b0d0e1e..000000000 --- a/tests/zemu/build_local_test_elfs.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env bash - -set -e - -TESTS_PATH=$(dirname "$(realpath "$0")") - -# FILL THESE WITH YOUR OWN SDKs PATHS -# NANOS_SDK= -# NANOX_SDK= - -# list of apps required by tests that we want to build here -APPS=("ethereum" "ethereum_classic") - -# list of SDKS -NANO_SDKS=("$NANOS_SDK" "$NANOX_SDK") -# list of target elf file name suffix -FILE_SUFFIXES=("nanos" "nanox") - -# move to the tests directory -cd "$TESTS_PATH" || exit 1 - -# Do it only now since before the cd command, we might not have been inside the repository -GIT_REPO_ROOT=$(git rev-parse --show-toplevel) - -# create elfs directory if it doesn't exist -mkdir -p elfs - -# move to repo's root to build apps -cd "$GIT_REPO_ROOT" || exit 1 - -for ((sdk_idx=0; sdk_idx < "${#NANO_SDKS[@]}"; sdk_idx++)) -do - nano_sdk="${NANO_SDKS[$sdk_idx]}" - elf_suffix="${FILE_SUFFIXES[$sdk_idx]}" - echo "* Building elfs for $(basename "$nano_sdk")..." - for appname in "${APPS[@]}" - do - echo "** Building app $appname..." - make clean BOLOS_SDK="$nano_sdk" - make -j DEBUG=1 NFT_TESTING_KEY=1 BOLOS_SDK="$nano_sdk" CHAIN="$appname" - cp bin/app.elf "$TESTS_PATH/elfs/${appname}_${elf_suffix}.elf" - done -done - -echo "done" diff --git a/tests/zemu/globalsetup.js b/tests/zemu/globalsetup.js deleted file mode 100644 index ce41bc60d..000000000 --- a/tests/zemu/globalsetup.js +++ /dev/null @@ -1,17 +0,0 @@ -import Zemu from "@zondax/zemu"; -import fsExtra from "fs-extra"; - -const catchExit = async () => { - process.on("SIGINT", () => { - Zemu.stopAllEmuContainers(function () { - process.exit(); - }); - }); -}; - -module.exports = async () => { - await catchExit(); - await Zemu.checkAndPullImage(); - await Zemu.stopAllEmuContainers(); - fsExtra.emptyDirSync("snapshots/tmp") -}; diff --git a/tests/zemu/jest.config.js b/tests/zemu/jest.config.js deleted file mode 100644 index 63b60516f..000000000 --- a/tests/zemu/jest.config.js +++ /dev/null @@ -1,39 +0,0 @@ -// For a detailed explanation regarding each configuration property, visit: -// https://jestjs.io/docs/en/configuration.html - -module.exports = { - modulePaths: ["/src", "/tests"], - - moduleNameMapper: { - "^jest$": "/jest.js", - }, - - // Automatically clear mock calls and instances between every test - clearMocks: true, - - // The directory where Jest should output its coverage files - coverageDirectory: "coverage", - - globalSetup: "/globalsetup.js", - - // A list of paths to directories that Jest should use to search for files in - roots: [""], - - runner: "jest-serial-runner", - - // The test environment that will be used for testing - testEnvironment: "node", - - // The glob patterns Jest uses to detect test files - testMatch: [ - "**/__tests__/**/*.[jt]s?(x)", - "**/?(*.)+(spec|test).[tj]s?(x)", - "**/?(*.)+(ispec|test).[tj]s?(x)", - ], - - // Path of the file where tests can be """decorated""" - setupFilesAfterEnv: ['/setupTests.js'], - - // Stop immediately when a test fail - bail: true, -}; diff --git a/tests/zemu/jest.js b/tests/zemu/jest.js deleted file mode 100644 index c5156ab7f..000000000 --- a/tests/zemu/jest.js +++ /dev/null @@ -1,22 +0,0 @@ -export default jest; -export const { expect, test } = global; - -export const sim_options_s = { - model: "nanos", - logging: true, - start_delay: 2000, - X11: true, - custom: "", -}; - -export const sim_options_x = { - model: "nanox", - logging: true, - start_delay: 2000, - X11: true, - custom: "", -}; - -export const Resolve = require("path").resolve; -export const NANOS_ELF_PATH = Resolve("elfs/ethereum_nanos.elf"); -export const NANOX_ELF_PATH = Resolve("elfs/ethereum_nanox.elf"); diff --git a/tests/zemu/package.json b/tests/zemu/package.json deleted file mode 100644 index ff934a8b4..000000000 --- a/tests/zemu/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "swap-test", - "version": "1.0.0", - "description": "", - "main": "test.js", - "scripts": { - "build": "babel src/ -d lib/", - "prepublish": "yarn run build", - "test": "jest src --verbose --runInBand --detectOpenHandles" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@ledgerhq/hw-app-eth": "^6.5.0", - "@ledgerhq/hw-transport-http": "^4.74.2", - "@ledgerhq/logs": "^5.50.0", - "@zondax/zemu": "^0.27.4", - "bignumber.js": "^9.0.0", - "bip32-path": "^0.4.2", - "core-js": "^3.7.0", - "ethereum-tx-decoder": "^3.0.0", - "ethers": "^5.5.1", - "fs-extra": "^10.0.0", - "google-protobuf": "^3.11.0", - "jest-serial-runner": "^1.1.0", - "js-sha256": "^0.9.0", - "regenerator-runtime": "^0.13.7", - "secp256k1": "^3.7.1" - }, - "devDependencies": { - "@babel/cli": "^7.7.0", - "@babel/core": "^7.7.2", - "@babel/preset-env": "^7.7.1", - "@babel/preset-flow": "^7.0.0", - "@babel/preset-stage-0": "^7.0.0", - "@babel/register": "^7.7.0", - "flow-bin": "^0.112.0", - "jest": "^26.6.3" - } -} diff --git a/tests/zemu/setupTests.js b/tests/zemu/setupTests.js deleted file mode 100644 index a9a9f827b..000000000 --- a/tests/zemu/setupTests.js +++ /dev/null @@ -1,19 +0,0 @@ -import expect from 'expect' - -expect.extend({ - toMatchSnapshot(received, original) { - - if(received.data.equals(original.data)){ - return { - message: () => `snapshots are equal`, - pass: true - } - } else { - console.log("snapshots are not equal") - return { - message: () => `snapshots are not equal`, - pass: false - } - } - }, - }); diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00001.png b/tests/zemu/snapshots/nanos_approve_dai_tokens/00001.png deleted file mode 100644 index e48314bb3..000000000 Binary files a/tests/zemu/snapshots/nanos_approve_dai_tokens/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00002.png b/tests/zemu/snapshots/nanos_approve_dai_tokens/00002.png deleted file mode 100644 index 8afcc0115..000000000 Binary files a/tests/zemu/snapshots/nanos_approve_dai_tokens/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00003.png b/tests/zemu/snapshots/nanos_approve_dai_tokens/00003.png deleted file mode 100644 index 95968f9f5..000000000 Binary files a/tests/zemu/snapshots/nanos_approve_dai_tokens/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00004.png b/tests/zemu/snapshots/nanos_approve_dai_tokens/00004.png deleted file mode 100644 index f5c1c9b8b..000000000 Binary files a/tests/zemu/snapshots/nanos_approve_dai_tokens/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00005.png b/tests/zemu/snapshots/nanos_approve_dai_tokens/00005.png deleted file mode 100644 index 839e83a86..000000000 Binary files a/tests/zemu/snapshots/nanos_approve_dai_tokens/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00006.png b/tests/zemu/snapshots/nanos_approve_dai_tokens/00006.png deleted file mode 100644 index aca9efb86..000000000 Binary files a/tests/zemu/snapshots/nanos_approve_dai_tokens/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00008.png b/tests/zemu/snapshots/nanos_approve_dai_tokens/00008.png deleted file mode 100644 index 9c7e7049c..000000000 Binary files a/tests/zemu/snapshots/nanos_approve_dai_tokens/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_approve_dai_tokens/00009.png b/tests/zemu/snapshots/nanos_approve_dai_tokens/00009.png deleted file mode 120000 index 10266b3b2..000000000 --- a/tests/zemu/snapshots/nanos_approve_dai_tokens/00009.png +++ /dev/null @@ -1 +0,0 @@ -00007.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00001.png b/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00001.png deleted file mode 100644 index b2ab3717e..000000000 Binary files a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00002.png b/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00002.png deleted file mode 100644 index a4fd0e1fa..000000000 Binary files a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00003.png b/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00003.png deleted file mode 100644 index da3439147..000000000 Binary files a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00004.png b/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00004.png deleted file mode 100644 index be3c17ecb..000000000 Binary files a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00005.png b/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00005.png deleted file mode 100644 index 08c6b00ac..000000000 Binary files a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00006.png b/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00006.png deleted file mode 100644 index 1d461c6fa..000000000 Binary files a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00008.png b/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00008.png deleted file mode 100644 index 9c7e7049c..000000000 Binary files a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00009.png b/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00009.png deleted file mode 120000 index 10266b3b2..000000000 --- a/tests/zemu/snapshots/nanos_deposit_eth_compound_blind/00009.png +++ /dev/null @@ -1 +0,0 @@ -00007.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanos_disable_blind_signing/00000.png b/tests/zemu/snapshots/nanos_disable_blind_signing/00000.png deleted file mode 100644 index 0bef4f3a7..000000000 Binary files a/tests/zemu/snapshots/nanos_disable_blind_signing/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_disable_blind_signing/00001.png b/tests/zemu/snapshots/nanos_disable_blind_signing/00001.png deleted file mode 100644 index 29a6bd332..000000000 Binary files a/tests/zemu/snapshots/nanos_disable_blind_signing/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_disable_blind_signing/00002.png b/tests/zemu/snapshots/nanos_disable_blind_signing/00002.png deleted file mode 100644 index d4bd8ad27..000000000 Binary files a/tests/zemu/snapshots/nanos_disable_blind_signing/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_disable_blind_signing/00003.png b/tests/zemu/snapshots/nanos_disable_blind_signing/00003.png deleted file mode 100644 index 7b3e0eabd..000000000 Binary files a/tests/zemu/snapshots/nanos_disable_blind_signing/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_disable_blind_signing/00004.png b/tests/zemu/snapshots/nanos_disable_blind_signing/00004.png deleted file mode 100644 index e4ad84fa4..000000000 Binary files a/tests/zemu/snapshots/nanos_disable_blind_signing/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_disable_blind_signing/00005.png b/tests/zemu/snapshots/nanos_disable_blind_signing/00005.png deleted file mode 100644 index 28e70e8bc..000000000 Binary files a/tests/zemu/snapshots/nanos_disable_blind_signing/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_disable_blind_signing/00006.png b/tests/zemu/snapshots/nanos_disable_blind_signing/00006.png deleted file mode 100644 index c844a37fb..000000000 Binary files a/tests/zemu/snapshots/nanos_disable_blind_signing/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_disable_blind_signing/00007.png b/tests/zemu/snapshots/nanos_disable_blind_signing/00007.png deleted file mode 100644 index be028387e..000000000 Binary files a/tests/zemu/snapshots/nanos_disable_blind_signing/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_disable_blind_signing/00008.png b/tests/zemu/snapshots/nanos_disable_blind_signing/00008.png deleted file mode 100644 index 0bef4f3a7..000000000 Binary files a/tests/zemu/snapshots/nanos_disable_blind_signing/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_metamask/00000.png b/tests/zemu/snapshots/nanos_eip191_metamask/00000.png deleted file mode 100644 index ab16f62bf..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_metamask/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_metamask/00001.png b/tests/zemu/snapshots/nanos_eip191_metamask/00001.png deleted file mode 100644 index b90315cd3..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_metamask/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_metamask/00002.png b/tests/zemu/snapshots/nanos_eip191_metamask/00002.png deleted file mode 100644 index 3d90dfd93..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_metamask/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_metamask/00003.png b/tests/zemu/snapshots/nanos_eip191_metamask/00003.png deleted file mode 100644 index f5c2d6774..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_metamask/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_metamask/00004.png b/tests/zemu/snapshots/nanos_eip191_metamask/00004.png deleted file mode 100644 index d55782f42..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_metamask/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_metamask/00005.png b/tests/zemu/snapshots/nanos_eip191_metamask/00005.png deleted file mode 100644 index f5c2d6774..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_metamask/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00000.png b/tests/zemu/snapshots/nanos_eip191_nonascii/00000.png deleted file mode 100644 index ab16f62bf..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_nonascii/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00001.png b/tests/zemu/snapshots/nanos_eip191_nonascii/00001.png deleted file mode 100644 index 51efae064..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_nonascii/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00002.png b/tests/zemu/snapshots/nanos_eip191_nonascii/00002.png deleted file mode 100644 index b4e4df511..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_nonascii/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00003.png b/tests/zemu/snapshots/nanos_eip191_nonascii/00003.png deleted file mode 100644 index d95e83116..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_nonascii/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00004.png b/tests/zemu/snapshots/nanos_eip191_nonascii/00004.png deleted file mode 100644 index e8c4c8e78..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_nonascii/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00005.png b/tests/zemu/snapshots/nanos_eip191_nonascii/00005.png deleted file mode 100644 index a259c69de..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_nonascii/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00006.png b/tests/zemu/snapshots/nanos_eip191_nonascii/00006.png deleted file mode 100644 index 4ce22f64e..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_nonascii/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00007.png b/tests/zemu/snapshots/nanos_eip191_nonascii/00007.png deleted file mode 100644 index f5c2d6774..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_nonascii/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00008.png b/tests/zemu/snapshots/nanos_eip191_nonascii/00008.png deleted file mode 100644 index d55782f42..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_nonascii/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_nonascii/00009.png b/tests/zemu/snapshots/nanos_eip191_nonascii/00009.png deleted file mode 100644 index f5c2d6774..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_nonascii/00009.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00000.png b/tests/zemu/snapshots/nanos_eip191_opensea/00000.png deleted file mode 100644 index ab16f62bf..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00001.png b/tests/zemu/snapshots/nanos_eip191_opensea/00001.png deleted file mode 100644 index bdbb3a0f2..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00002.png b/tests/zemu/snapshots/nanos_eip191_opensea/00002.png deleted file mode 100644 index 1fd81705b..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00003.png b/tests/zemu/snapshots/nanos_eip191_opensea/00003.png deleted file mode 100644 index 582648da5..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00004.png b/tests/zemu/snapshots/nanos_eip191_opensea/00004.png deleted file mode 100644 index 53e131782..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00005.png b/tests/zemu/snapshots/nanos_eip191_opensea/00005.png deleted file mode 100644 index b1bddfeb4..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00006.png b/tests/zemu/snapshots/nanos_eip191_opensea/00006.png deleted file mode 100644 index f872acc96..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00007.png b/tests/zemu/snapshots/nanos_eip191_opensea/00007.png deleted file mode 100644 index 56b7f7b3b..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00008.png b/tests/zemu/snapshots/nanos_eip191_opensea/00008.png deleted file mode 100644 index d5c4fde63..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00009.png b/tests/zemu/snapshots/nanos_eip191_opensea/00009.png deleted file mode 100644 index 407da907e..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00009.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00010.png b/tests/zemu/snapshots/nanos_eip191_opensea/00010.png deleted file mode 100644 index 481c8dccd..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00010.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00011.png b/tests/zemu/snapshots/nanos_eip191_opensea/00011.png deleted file mode 100644 index ff9dba946..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00011.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00012.png b/tests/zemu/snapshots/nanos_eip191_opensea/00012.png deleted file mode 100644 index e179c2993..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00012.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00013.png b/tests/zemu/snapshots/nanos_eip191_opensea/00013.png deleted file mode 100644 index f872acc96..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00013.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00014.png b/tests/zemu/snapshots/nanos_eip191_opensea/00014.png deleted file mode 100644 index f5c2d6774..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00014.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00015.png b/tests/zemu/snapshots/nanos_eip191_opensea/00015.png deleted file mode 100644 index d55782f42..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00015.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_eip191_opensea/00016.png b/tests/zemu/snapshots/nanos_eip191_opensea/00016.png deleted file mode 100644 index f5c2d6774..000000000 Binary files a/tests/zemu/snapshots/nanos_eip191_opensea/00016.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_enable_blind_signing/00001.png b/tests/zemu/snapshots/nanos_enable_blind_signing/00001.png deleted file mode 100644 index e2279803e..000000000 Binary files a/tests/zemu/snapshots/nanos_enable_blind_signing/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_enable_blind_signing/00002.png b/tests/zemu/snapshots/nanos_enable_blind_signing/00002.png deleted file mode 100644 index 04259b175..000000000 Binary files a/tests/zemu/snapshots/nanos_enable_blind_signing/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_enable_blind_signing/00003.png b/tests/zemu/snapshots/nanos_enable_blind_signing/00003.png deleted file mode 100644 index c828b7c1f..000000000 Binary files a/tests/zemu/snapshots/nanos_enable_blind_signing/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_enable_blind_signing/00004.png b/tests/zemu/snapshots/nanos_enable_blind_signing/00004.png deleted file mode 100644 index cabccc8c5..000000000 Binary files a/tests/zemu/snapshots/nanos_enable_blind_signing/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_enable_blind_signing/00005.png b/tests/zemu/snapshots/nanos_enable_blind_signing/00005.png deleted file mode 100644 index de843af9d..000000000 Binary files a/tests/zemu/snapshots/nanos_enable_blind_signing/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_enable_blind_signing/00006.png b/tests/zemu/snapshots/nanos_enable_blind_signing/00006.png deleted file mode 100644 index e615d310f..000000000 Binary files a/tests/zemu/snapshots/nanos_enable_blind_signing/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_enable_blind_signing/00007.png b/tests/zemu/snapshots/nanos_enable_blind_signing/00007.png deleted file mode 100644 index 70c909256..000000000 Binary files a/tests/zemu/snapshots/nanos_enable_blind_signing/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00000.png b/tests/zemu/snapshots/nanos_transfer_112233445566_network/00000.png deleted file mode 100644 index 8d84cc70f..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00001.png b/tests/zemu/snapshots/nanos_transfer_112233445566_network/00001.png deleted file mode 100644 index 73ac9f618..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00002.png b/tests/zemu/snapshots/nanos_transfer_112233445566_network/00002.png deleted file mode 100644 index c2af54e96..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00003.png b/tests/zemu/snapshots/nanos_transfer_112233445566_network/00003.png deleted file mode 100644 index a54fefd4c..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00010.png b/tests/zemu/snapshots/nanos_transfer_112233445566_network/00010.png deleted file mode 100644 index 9c7e7049c..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_112233445566_network/00010.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00000.png b/tests/zemu/snapshots/nanos_transfer_bsc/00000.png deleted file mode 100644 index 8d84cc70f..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_bsc/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00001.png b/tests/zemu/snapshots/nanos_transfer_bsc/00001.png deleted file mode 100644 index 837fd64a1..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_bsc/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00002.png b/tests/zemu/snapshots/nanos_transfer_bsc/00002.png deleted file mode 100644 index c2af54e96..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_bsc/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00003.png b/tests/zemu/snapshots/nanos_transfer_bsc/00003.png deleted file mode 100644 index a54fefd4c..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_bsc/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00010.png b/tests/zemu/snapshots/nanos_transfer_bsc/00010.png deleted file mode 100644 index 9c7e7049c..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_bsc/00010.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_bsc/00011.png b/tests/zemu/snapshots/nanos_transfer_bsc/00011.png deleted file mode 120000 index 489390ada..000000000 --- a/tests/zemu/snapshots/nanos_transfer_bsc/00011.png +++ /dev/null @@ -1 +0,0 @@ -00009.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanos_transfer_eip1559/00000.png b/tests/zemu/snapshots/nanos_transfer_eip1559/00000.png deleted file mode 100644 index 8d84cc70f..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_eip1559/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_eip1559/00001.png b/tests/zemu/snapshots/nanos_transfer_eip1559/00001.png deleted file mode 100644 index 9f2651390..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_eip1559/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_eip1559/00002.png b/tests/zemu/snapshots/nanos_transfer_eip1559/00002.png deleted file mode 100644 index 701b26bfc..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_eip1559/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_eip1559/00003.png b/tests/zemu/snapshots/nanos_transfer_eip1559/00003.png deleted file mode 100644 index 32a2ee929..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_eip1559/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_eip1559/00004.png b/tests/zemu/snapshots/nanos_transfer_eip1559/00004.png deleted file mode 100644 index 1ed3d773d..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_eip1559/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_eip1559/00005.png b/tests/zemu/snapshots/nanos_transfer_eip1559/00005.png deleted file mode 100644 index f19d91cc0..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_eip1559/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_eip1559/00008.png b/tests/zemu/snapshots/nanos_transfer_eip1559/00008.png deleted file mode 120000 index e4abcaef3..000000000 --- a/tests/zemu/snapshots/nanos_transfer_eip1559/00008.png +++ /dev/null @@ -1 +0,0 @@ -00006.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00000.png b/tests/zemu/snapshots/nanos_transfer_ethereum/00000.png deleted file mode 100644 index 8d84cc70f..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00001.png b/tests/zemu/snapshots/nanos_transfer_ethereum/00001.png deleted file mode 100644 index 7ebda4f3a..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00002.png b/tests/zemu/snapshots/nanos_transfer_ethereum/00002.png deleted file mode 100644 index c2af54e96..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00003.png b/tests/zemu/snapshots/nanos_transfer_ethereum/00003.png deleted file mode 100644 index a54fefd4c..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00007.png b/tests/zemu/snapshots/nanos_transfer_ethereum/00007.png deleted file mode 100644 index c84d3ec3e..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00009.png b/tests/zemu/snapshots/nanos_transfer_ethereum/00009.png deleted file mode 100644 index 9c7e7049c..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum/00009.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00010.png b/tests/zemu/snapshots/nanos_transfer_ethereum/00010.png deleted file mode 120000 index de12d0196..000000000 --- a/tests/zemu/snapshots/nanos_transfer_ethereum/00010.png +++ /dev/null @@ -1 +0,0 @@ -00008.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00000.png b/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00000.png deleted file mode 100644 index 8d84cc70f..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00001.png b/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00001.png deleted file mode 100644 index 77e79afdd..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00002.png b/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00002.png deleted file mode 100644 index c2af54e96..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00003.png b/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00003.png deleted file mode 100644 index a54fefd4c..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00004.png b/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00004.png deleted file mode 100644 index 8656b8175..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00005.png b/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00005.png deleted file mode 100644 index fd3155c0d..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00006.png b/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00006.png deleted file mode 100644 index c63f25f8d..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00007.png b/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00007.png deleted file mode 100644 index aa0f49690..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00009.png b/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00009.png deleted file mode 100644 index 9c7e7049c..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00009.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00010.png b/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00010.png deleted file mode 120000 index de12d0196..000000000 --- a/tests/zemu/snapshots/nanos_transfer_ethereum_clone/00010.png +++ /dev/null @@ -1 +0,0 @@ -00008.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00000.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00000.png deleted file mode 100644 index 8d84cc70f..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_palm_network/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00001.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00001.png deleted file mode 100644 index b66c0ff38..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_palm_network/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00002.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00002.png deleted file mode 100644 index c2af54e96..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_palm_network/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00003.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00003.png deleted file mode 100644 index a54fefd4c..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_palm_network/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00004.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00004.png deleted file mode 100644 index 8656b8175..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_palm_network/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00005.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00005.png deleted file mode 100644 index fd3155c0d..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_palm_network/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00006.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00006.png deleted file mode 100644 index c63f25f8d..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_palm_network/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00007.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00007.png deleted file mode 100644 index 2bac3376a..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_palm_network/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00008.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00008.png deleted file mode 100644 index 193f82145..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_palm_network/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00010.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00010.png deleted file mode 100644 index 9c7e7049c..000000000 Binary files a/tests/zemu/snapshots/nanos_transfer_palm_network/00010.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanos_transfer_palm_network/00011.png b/tests/zemu/snapshots/nanos_transfer_palm_network/00011.png deleted file mode 120000 index 489390ada..000000000 --- a/tests/zemu/snapshots/nanos_transfer_palm_network/00011.png +++ /dev/null @@ -1 +0,0 @@ -00009.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_approve_dai_tokens/00000.png b/tests/zemu/snapshots/nanox_approve_dai_tokens/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_approve_dai_tokens/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_approve_dai_tokens/00001.png b/tests/zemu/snapshots/nanox_approve_dai_tokens/00001.png deleted file mode 100644 index 3add52434..000000000 Binary files a/tests/zemu/snapshots/nanox_approve_dai_tokens/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_approve_dai_tokens/00002.png b/tests/zemu/snapshots/nanox_approve_dai_tokens/00002.png deleted file mode 100644 index 1bf7f2e0b..000000000 Binary files a/tests/zemu/snapshots/nanox_approve_dai_tokens/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_approve_dai_tokens/00003.png b/tests/zemu/snapshots/nanox_approve_dai_tokens/00003.png deleted file mode 100644 index d1a0cdc26..000000000 Binary files a/tests/zemu/snapshots/nanox_approve_dai_tokens/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_approve_dai_tokens/00004.png b/tests/zemu/snapshots/nanox_approve_dai_tokens/00004.png deleted file mode 100644 index ae56f6079..000000000 Binary files a/tests/zemu/snapshots/nanox_approve_dai_tokens/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_approve_dai_tokens/00006.png b/tests/zemu/snapshots/nanox_approve_dai_tokens/00006.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_approve_dai_tokens/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_approve_dai_tokens/00007.png b/tests/zemu/snapshots/nanox_approve_dai_tokens/00007.png deleted file mode 120000 index 7159a1242..000000000 --- a/tests/zemu/snapshots/nanox_approve_dai_tokens/00007.png +++ /dev/null @@ -1 +0,0 @@ -00005.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_approve_dai_tokens/00008.png b/tests/zemu/snapshots/nanox_approve_dai_tokens/00008.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_approve_dai_tokens/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00000.png b/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00001.png b/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00001.png deleted file mode 100644 index 990173650..000000000 Binary files a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00002.png b/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00002.png deleted file mode 100644 index 043c123d8..000000000 Binary files a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00003.png b/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00003.png deleted file mode 100644 index 4749ed1f9..000000000 Binary files a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00004.png b/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00004.png deleted file mode 100644 index c0f77c919..000000000 Binary files a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00006.png b/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00006.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00007.png b/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00007.png deleted file mode 120000 index 7159a1242..000000000 --- a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00007.png +++ /dev/null @@ -1 +0,0 @@ -00005.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00008.png b/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00008.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_deposit_eth_compound_blind/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_disable_blind_signing/00000.png b/tests/zemu/snapshots/nanox_disable_blind_signing/00000.png deleted file mode 100644 index 7a77cb123..000000000 Binary files a/tests/zemu/snapshots/nanox_disable_blind_signing/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_disable_blind_signing/00001.png b/tests/zemu/snapshots/nanox_disable_blind_signing/00001.png deleted file mode 100644 index bf49b9676..000000000 Binary files a/tests/zemu/snapshots/nanox_disable_blind_signing/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_disable_blind_signing/00002.png b/tests/zemu/snapshots/nanox_disable_blind_signing/00002.png deleted file mode 100644 index 9230349f6..000000000 Binary files a/tests/zemu/snapshots/nanox_disable_blind_signing/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_disable_blind_signing/00003.png b/tests/zemu/snapshots/nanox_disable_blind_signing/00003.png deleted file mode 100644 index 75f5f7cb0..000000000 Binary files a/tests/zemu/snapshots/nanox_disable_blind_signing/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_disable_blind_signing/00004.png b/tests/zemu/snapshots/nanox_disable_blind_signing/00004.png deleted file mode 100644 index ed04d7055..000000000 Binary files a/tests/zemu/snapshots/nanox_disable_blind_signing/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_disable_blind_signing/00005.png b/tests/zemu/snapshots/nanox_disable_blind_signing/00005.png deleted file mode 100644 index ed018664e..000000000 Binary files a/tests/zemu/snapshots/nanox_disable_blind_signing/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_disable_blind_signing/00006.png b/tests/zemu/snapshots/nanox_disable_blind_signing/00006.png deleted file mode 100644 index 9ce434307..000000000 Binary files a/tests/zemu/snapshots/nanox_disable_blind_signing/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_disable_blind_signing/00007.png b/tests/zemu/snapshots/nanox_disable_blind_signing/00007.png deleted file mode 100644 index bc8064a47..000000000 Binary files a/tests/zemu/snapshots/nanox_disable_blind_signing/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_disable_blind_signing/00008.png b/tests/zemu/snapshots/nanox_disable_blind_signing/00008.png deleted file mode 100644 index 7a77cb123..000000000 Binary files a/tests/zemu/snapshots/nanox_disable_blind_signing/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_metamask/00000.png b/tests/zemu/snapshots/nanox_eip191_metamask/00000.png deleted file mode 100644 index 1b271542d..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_metamask/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_metamask/00001.png b/tests/zemu/snapshots/nanox_eip191_metamask/00001.png deleted file mode 100644 index 58f060626..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_metamask/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_metamask/00002.png b/tests/zemu/snapshots/nanox_eip191_metamask/00002.png deleted file mode 100644 index c9da92b60..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_metamask/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_metamask/00003.png b/tests/zemu/snapshots/nanox_eip191_metamask/00003.png deleted file mode 100644 index 121cfd59e..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_metamask/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_metamask/00004.png b/tests/zemu/snapshots/nanox_eip191_metamask/00004.png deleted file mode 100644 index c9da92b60..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_metamask/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_metamask/00005.png b/tests/zemu/snapshots/nanox_eip191_metamask/00005.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_metamask/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_nonascii/00000.png b/tests/zemu/snapshots/nanox_eip191_nonascii/00000.png deleted file mode 100644 index 1b271542d..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_nonascii/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_nonascii/00001.png b/tests/zemu/snapshots/nanox_eip191_nonascii/00001.png deleted file mode 100644 index 6a5f8e8c3..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_nonascii/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_nonascii/00002.png b/tests/zemu/snapshots/nanox_eip191_nonascii/00002.png deleted file mode 100644 index 78d7d1df5..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_nonascii/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_nonascii/00003.png b/tests/zemu/snapshots/nanox_eip191_nonascii/00003.png deleted file mode 100644 index c9da92b60..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_nonascii/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_nonascii/00004.png b/tests/zemu/snapshots/nanox_eip191_nonascii/00004.png deleted file mode 100644 index 121cfd59e..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_nonascii/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_nonascii/00005.png b/tests/zemu/snapshots/nanox_eip191_nonascii/00005.png deleted file mode 100644 index c9da92b60..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_nonascii/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_nonascii/00006.png b/tests/zemu/snapshots/nanox_eip191_nonascii/00006.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_nonascii/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00000.png b/tests/zemu/snapshots/nanox_eip191_opensea/00000.png deleted file mode 100644 index 1b271542d..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_opensea/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00002.png b/tests/zemu/snapshots/nanox_eip191_opensea/00002.png deleted file mode 100644 index c094bc635..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_opensea/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00003.png b/tests/zemu/snapshots/nanox_eip191_opensea/00003.png deleted file mode 100644 index 9a3efb771..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_opensea/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00004.png b/tests/zemu/snapshots/nanox_eip191_opensea/00004.png deleted file mode 100644 index 657edb555..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_opensea/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00006.png b/tests/zemu/snapshots/nanox_eip191_opensea/00006.png deleted file mode 100644 index 952e5ca8a..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_opensea/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00009.png b/tests/zemu/snapshots/nanox_eip191_opensea/00009.png deleted file mode 100644 index c9da92b60..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_opensea/00009.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00010.png b/tests/zemu/snapshots/nanox_eip191_opensea/00010.png deleted file mode 100644 index 121cfd59e..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_opensea/00010.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00011.png b/tests/zemu/snapshots/nanox_eip191_opensea/00011.png deleted file mode 100644 index c9da92b60..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_opensea/00011.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_eip191_opensea/00012.png b/tests/zemu/snapshots/nanox_eip191_opensea/00012.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_eip191_opensea/00012.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_enable_blind_signing/00000.png b/tests/zemu/snapshots/nanox_enable_blind_signing/00000.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_enable_blind_signing/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_enable_blind_signing/00001.png b/tests/zemu/snapshots/nanox_enable_blind_signing/00001.png deleted file mode 100644 index bcb20c683..000000000 Binary files a/tests/zemu/snapshots/nanox_enable_blind_signing/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_enable_blind_signing/00002.png b/tests/zemu/snapshots/nanox_enable_blind_signing/00002.png deleted file mode 100644 index 75b78e517..000000000 Binary files a/tests/zemu/snapshots/nanox_enable_blind_signing/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_enable_blind_signing/00003.png b/tests/zemu/snapshots/nanox_enable_blind_signing/00003.png deleted file mode 100644 index 9e21d4a36..000000000 Binary files a/tests/zemu/snapshots/nanox_enable_blind_signing/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_enable_blind_signing/00004.png b/tests/zemu/snapshots/nanox_enable_blind_signing/00004.png deleted file mode 100644 index fb2843a9d..000000000 Binary files a/tests/zemu/snapshots/nanox_enable_blind_signing/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_enable_blind_signing/00005.png b/tests/zemu/snapshots/nanox_enable_blind_signing/00005.png deleted file mode 100644 index 1c5f8a29d..000000000 Binary files a/tests/zemu/snapshots/nanox_enable_blind_signing/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_enable_blind_signing/00006.png b/tests/zemu/snapshots/nanox_enable_blind_signing/00006.png deleted file mode 100644 index 0b4f46ed5..000000000 Binary files a/tests/zemu/snapshots/nanox_enable_blind_signing/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_enable_blind_signing/00007.png b/tests/zemu/snapshots/nanox_enable_blind_signing/00007.png deleted file mode 100644 index 706ef7d8d..000000000 Binary files a/tests/zemu/snapshots/nanox_enable_blind_signing/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_enable_blind_signing/00008.png b/tests/zemu/snapshots/nanox_enable_blind_signing/00008.png deleted file mode 100644 index 5b3eed92b..000000000 Binary files a/tests/zemu/snapshots/nanox_enable_blind_signing/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_enable_blind_signing/00009.png b/tests/zemu/snapshots/nanox_enable_blind_signing/00009.png deleted file mode 100644 index 61861f299..000000000 Binary files a/tests/zemu/snapshots/nanox_enable_blind_signing/00009.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00000.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00001.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00001.png deleted file mode 100644 index ba1dfa0e3..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00002.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00002.png deleted file mode 100644 index 7d01fe80c..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00003.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00003.png deleted file mode 100644 index 950fd72aa..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00004.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00004.png deleted file mode 100644 index 5906d1967..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00005.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00005.png deleted file mode 100644 index 05c1afa85..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00006.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00006.png deleted file mode 100644 index 690bb3d26..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00007.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00007.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00008.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00008.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00009.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00009.png deleted file mode 120000 index 10266b3b2..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00009.png +++ /dev/null @@ -1 +0,0 @@ -00007.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00010.png b/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00010.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_batch_transfer/00010.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00000.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00001.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00001.png deleted file mode 100644 index 2b0fd141f..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00002.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00002.png deleted file mode 100644 index 7d01fe80c..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00003.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00003.png deleted file mode 100644 index a5790c197..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00004.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00004.png deleted file mode 100644 index 5906d1967..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00005.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00005.png deleted file mode 100644 index d6257d347..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00006.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00006.png deleted file mode 100644 index 061c754c7..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00007.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00007.png deleted file mode 100644 index c748a750b..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00008.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00008.png deleted file mode 100644 index cd509d990..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00009.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00009.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00009.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00010.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00010.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00010.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00011.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00011.png deleted file mode 120000 index 489390ada..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer/00011.png +++ /dev/null @@ -1 +0,0 @@ -00009.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer/00012.png b/tests/zemu/snapshots/nanox_erc1155_transfer/00012.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer/00012.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00000.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00000.png deleted file mode 120000 index a808e251a..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00000.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00000.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00001.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00001.png deleted file mode 120000 index 18b62b5da..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00001.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00001.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00002.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00002.png deleted file mode 120000 index 3ba3b504f..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00002.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00002.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00003.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00003.png deleted file mode 100644 index b34af53fc..000000000 Binary files a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00004.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00004.png deleted file mode 120000 index d5f595812..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00004.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00004.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00005.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00005.png deleted file mode 120000 index 0d2033d8b..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00005.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00005.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00006.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00006.png deleted file mode 120000 index ce6215953..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00006.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00006.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00007.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00007.png deleted file mode 120000 index e9c683ad5..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00007.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00007.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00008.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00008.png deleted file mode 120000 index 8dc90445d..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00008.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00008.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00009.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00009.png deleted file mode 120000 index 8293fcb24..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00009.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00009.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00010.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00010.png deleted file mode 120000 index 76c0110fe..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00010.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00010.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00011.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00011.png deleted file mode 120000 index e2f437469..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00011.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00011.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00012.png b/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00012.png deleted file mode 120000 index 24a2c61de..000000000 --- a/tests/zemu/snapshots/nanox_erc1155_transfer_wo_info/00012.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc1155_transfer/00012.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00000.png b/tests/zemu/snapshots/nanox_erc721_transfer/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00001.png b/tests/zemu/snapshots/nanox_erc721_transfer/00001.png deleted file mode 100644 index 2b0fd141f..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00002.png b/tests/zemu/snapshots/nanox_erc721_transfer/00002.png deleted file mode 100644 index 7d01fe80c..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00003.png b/tests/zemu/snapshots/nanox_erc721_transfer/00003.png deleted file mode 100644 index 9e8c446eb..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00004.png b/tests/zemu/snapshots/nanox_erc721_transfer/00004.png deleted file mode 100644 index 23f2a4504..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00005.png b/tests/zemu/snapshots/nanox_erc721_transfer/00005.png deleted file mode 100644 index e369a1bb9..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00006.png b/tests/zemu/snapshots/nanox_erc721_transfer/00006.png deleted file mode 100644 index 6ce12bac1..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00007.png b/tests/zemu/snapshots/nanox_erc721_transfer/00007.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00008.png b/tests/zemu/snapshots/nanox_erc721_transfer/00008.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00009.png b/tests/zemu/snapshots/nanox_erc721_transfer/00009.png deleted file mode 120000 index 10266b3b2..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer/00009.png +++ /dev/null @@ -1 +0,0 @@ -00007.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer/00010.png b/tests/zemu/snapshots/nanox_erc721_transfer/00010.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer/00010.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00000.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00000.png deleted file mode 120000 index eaca370e9..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00000.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc721_transfer/00000.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00001.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00001.png deleted file mode 120000 index 3f0242006..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00001.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc721_transfer/00001.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00002.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00002.png deleted file mode 120000 index 55b219fcc..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00002.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc721_transfer/00002.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00003.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00003.png deleted file mode 100644 index b34af53fc..000000000 Binary files a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00004.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00004.png deleted file mode 120000 index 4e66c9ac3..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00004.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc721_transfer/00004.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00005.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00005.png deleted file mode 120000 index b538cb6a2..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00005.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc721_transfer/00005.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00006.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00006.png deleted file mode 120000 index 9d4b34350..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00006.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc721_transfer/00006.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00007.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00007.png deleted file mode 120000 index 8851ec8fb..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00007.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc721_transfer/00007.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00008.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00008.png deleted file mode 120000 index 7faf831db..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00008.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc721_transfer/00008.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00009.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00009.png deleted file mode 120000 index d3f938b04..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00009.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc721_transfer/00009.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00010.png b/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00010.png deleted file mode 120000 index 8e813645c..000000000 --- a/tests/zemu/snapshots/nanox_erc721_transfer_wo_info/00010.png +++ /dev/null @@ -1 +0,0 @@ -../nanox_erc721_transfer/00010.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00000.png b/tests/zemu/snapshots/nanox_transfer_112233445566_network/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00001.png b/tests/zemu/snapshots/nanox_transfer_112233445566_network/00001.png deleted file mode 100644 index 0976a317a..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00004.png b/tests/zemu/snapshots/nanox_transfer_112233445566_network/00004.png deleted file mode 100644 index 70c1b9a68..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00005.png b/tests/zemu/snapshots/nanox_transfer_112233445566_network/00005.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00006.png b/tests/zemu/snapshots/nanox_transfer_112233445566_network/00006.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00007.png b/tests/zemu/snapshots/nanox_transfer_112233445566_network/00007.png deleted file mode 120000 index 7159a1242..000000000 --- a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00007.png +++ /dev/null @@ -1 +0,0 @@ -00005.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00008.png b/tests/zemu/snapshots/nanox_transfer_112233445566_network/00008.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_112233445566_network/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_bsc/00000.png b/tests/zemu/snapshots/nanox_transfer_bsc/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_bsc/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_bsc/00001.png b/tests/zemu/snapshots/nanox_transfer_bsc/00001.png deleted file mode 100644 index 4f1699aa1..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_bsc/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_bsc/00004.png b/tests/zemu/snapshots/nanox_transfer_bsc/00004.png deleted file mode 100644 index 3448ce158..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_bsc/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_bsc/00005.png b/tests/zemu/snapshots/nanox_transfer_bsc/00005.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_bsc/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_bsc/00006.png b/tests/zemu/snapshots/nanox_transfer_bsc/00006.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_bsc/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_bsc/00007.png b/tests/zemu/snapshots/nanox_transfer_bsc/00007.png deleted file mode 120000 index 7159a1242..000000000 --- a/tests/zemu/snapshots/nanox_transfer_bsc/00007.png +++ /dev/null @@ -1 +0,0 @@ -00005.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_transfer_bsc/00008.png b/tests/zemu/snapshots/nanox_transfer_bsc/00008.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_bsc/00008.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_eip1559/00000.png b/tests/zemu/snapshots/nanox_transfer_eip1559/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_eip1559/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_eip1559/00001.png b/tests/zemu/snapshots/nanox_transfer_eip1559/00001.png deleted file mode 100644 index cdcc19d05..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_eip1559/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_eip1559/00002.png b/tests/zemu/snapshots/nanox_transfer_eip1559/00002.png deleted file mode 100644 index 5b65b54dc..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_eip1559/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_eip1559/00003.png b/tests/zemu/snapshots/nanox_transfer_eip1559/00003.png deleted file mode 100644 index 1a7a3f353..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_eip1559/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_eip1559/00004.png b/tests/zemu/snapshots/nanox_transfer_eip1559/00004.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_eip1559/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_eip1559/00005.png b/tests/zemu/snapshots/nanox_transfer_eip1559/00005.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_eip1559/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_eip1559/00006.png b/tests/zemu/snapshots/nanox_transfer_eip1559/00006.png deleted file mode 120000 index 917964ca6..000000000 --- a/tests/zemu/snapshots/nanox_transfer_eip1559/00006.png +++ /dev/null @@ -1 +0,0 @@ -00004.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00000.png b/tests/zemu/snapshots/nanox_transfer_ethereum/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00001.png b/tests/zemu/snapshots/nanox_transfer_ethereum/00001.png deleted file mode 100644 index 0976a317a..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00003.png b/tests/zemu/snapshots/nanox_transfer_ethereum/00003.png deleted file mode 100644 index 70c1b9a68..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00004.png b/tests/zemu/snapshots/nanox_transfer_ethereum/00004.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00005.png b/tests/zemu/snapshots/nanox_transfer_ethereum/00005.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00006.png b/tests/zemu/snapshots/nanox_transfer_ethereum/00006.png deleted file mode 120000 index 917964ca6..000000000 --- a/tests/zemu/snapshots/nanox_transfer_ethereum/00006.png +++ /dev/null @@ -1 +0,0 @@ -00004.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00007.png b/tests/zemu/snapshots/nanox_transfer_ethereum/00007.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00000.png b/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00001.png b/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00001.png deleted file mode 100644 index 43332d41f..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00002.png b/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00002.png deleted file mode 100644 index 0f18eeec9..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00003.png b/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00003.png deleted file mode 100644 index c59d95a75..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00004.png b/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00004.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00005.png b/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00005.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00006.png b/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00006.png deleted file mode 120000 index 917964ca6..000000000 --- a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00006.png +++ /dev/null @@ -1 +0,0 @@ -00004.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00007.png b/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00007.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_ethereum_clone/00007.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_palm_network/00000.png b/tests/zemu/snapshots/nanox_transfer_palm_network/00000.png deleted file mode 100644 index 487ea10fc..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_palm_network/00000.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_palm_network/00001.png b/tests/zemu/snapshots/nanox_transfer_palm_network/00001.png deleted file mode 100644 index 224a9daf1..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_palm_network/00001.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_palm_network/00002.png b/tests/zemu/snapshots/nanox_transfer_palm_network/00002.png deleted file mode 100644 index 0f18eeec9..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_palm_network/00002.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_palm_network/00003.png b/tests/zemu/snapshots/nanox_transfer_palm_network/00003.png deleted file mode 100644 index def1ae256..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_palm_network/00003.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_palm_network/00004.png b/tests/zemu/snapshots/nanox_transfer_palm_network/00004.png deleted file mode 100644 index 0c1fa4c8b..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_palm_network/00004.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_palm_network/00005.png b/tests/zemu/snapshots/nanox_transfer_palm_network/00005.png deleted file mode 100644 index 570ce28d5..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_palm_network/00005.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_palm_network/00006.png b/tests/zemu/snapshots/nanox_transfer_palm_network/00006.png deleted file mode 100644 index c9222461c..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_palm_network/00006.png and /dev/null differ diff --git a/tests/zemu/snapshots/nanox_transfer_palm_network/00007.png b/tests/zemu/snapshots/nanox_transfer_palm_network/00007.png deleted file mode 120000 index 7159a1242..000000000 --- a/tests/zemu/snapshots/nanox_transfer_palm_network/00007.png +++ /dev/null @@ -1 +0,0 @@ -00005.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_transfer_palm_network/00008.png b/tests/zemu/snapshots/nanox_transfer_palm_network/00008.png deleted file mode 100644 index a58590b98..000000000 Binary files a/tests/zemu/snapshots/nanox_transfer_palm_network/00008.png and /dev/null differ diff --git a/tests/zemu/src/approve.test.js b/tests/zemu/src/approve.test.js deleted file mode 100644 index f6380d850..000000000 --- a/tests/zemu/src/approve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import { waitForAppScreen, zemu, nano_models } from './test.fixture'; - -nano_models.forEach(function(model) { - test('[Nano ' + model.letter + '] Approve DAI tokens', zemu(model, async (sim, eth) => { - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'F869468506A8B15E0082EBEB946B175474E89094C44DA98B954EEDEAC495271D0F80B844095EA7B30000000000000000000000007D2768DE32B0B80B7A3454C06BDAC94A69DDC7A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF018080', - ); - - let clicks; - if (model.letter === 'S') clicks = 8; - else clicks = 6; - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots('.', model.name + '_approve_dai_tokens', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "92243511396b65a4faa735a5472ea99b3ce0f7f2338eab426206730bc0ddc57f", - "s": "161bc0f861064d840de4f4304cfd19a571017e62df7d8f70cf605c0f025593b6", - "v": "25", - }); - })); -}); diff --git a/tests/zemu/src/blind_compound_deposit.test.js b/tests/zemu/src/blind_compound_deposit.test.js deleted file mode 100644 index 670153af1..000000000 --- a/tests/zemu/src/blind_compound_deposit.test.js +++ /dev/null @@ -1,30 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import { waitForAppScreen, zemu, nano_models } from './test.fixture'; - -nano_models.forEach(function(model) { - test('[Nano ' + model.letter + '] Deposit ETH on compound, blind sign', zemu(model, async (sim, eth) => { - let clicks; - // LNS does not have EIP712 & ENS settings - if (model.letter === 'S') clicks = 3; - else clicks = 5; - // Enable blind-signing - await sim.navigateAndCompareSnapshots('.', model.name + '_enable_blind_signing', [-2, 0, 0, clicks, 0]); - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'f8924685028fa6ae008306599594cc9a0b7c43dc2a5f023bb9b738e45b0ef6b06e0488016345785d8a0000b864474cf53d0000000000000000000000007d2768de32b0b80b7a3454c06bdac94a69ddc7a900000000000000000000000070bc641723fad48be2df6cf63dc6270ee2f897430000000000000000000000000000000000000000000000000000000000000000018080', - ); - - await waitForAppScreen(sim); - if (model.letter === 'S') clicks = 8; - else clicks = 6; - await sim.navigateAndCompareSnapshots('.', model.name + '_deposit_eth_compound_blind', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "b5ae3a011eb50e7d1fe9f5e6f6d91ca9f4dfca5f73805fc4866d49e72ead2f5c", - "s": "3c6e55db5925586bb58e434b58b2c04756f662131597f98c1aa2418b16992b81", - "v": "26", - }); - })); -}); diff --git a/tests/zemu/src/chainid.test.js b/tests/zemu/src/chainid.test.js deleted file mode 100644 index 668b19690..000000000 --- a/tests/zemu/src/chainid.test.js +++ /dev/null @@ -1,47 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import { waitForAppScreen, zemu, nano_models } from './test.fixture'; - -nano_models.forEach(function(model) { - test('[Nano ' + model.letter + '] Transfer on network 112233445566 on Ethereum', zemu(model, async (sim, eth) => { - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'f044850306dc4200825208945a321744667052affa8386ed49e00ef223cbffc3876f9c9e7bf6181880851a21a278be8080', - ); - - await waitForAppScreen(sim); - let clicks; - if (model.letter === 'S') clicks = 10; - else clicks = 6; - await sim.navigateAndCompareSnapshots('.', model.name + '_transfer_112233445566_network', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "509981d8dfb66757e25ff47c009b9b5bc5db0f169473e4735f5212b144f1c069", - "s": "5db989d81025de3c846e41a9ce01a3f9fd0982e2d827f1b88ffc95d73a48d04c", - "v": "344344f19f", - }); - })); -}); - -nano_models.forEach(function(model) { - test('[Nano ' + model.letter + '] Transfer on palm network on Ethereum', zemu(model, async (sim, eth) => { - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'f044850306dc4200825208945a321744667052affa8386ed49e00ef223cbffc3876f9c9e7bf61818808502a15c308d8080', - ); - - await waitForAppScreen(sim); - let clicks; - if (model.letter === 'S') clicks = 10; - else clicks = 6; - await sim.navigateAndCompareSnapshots('.', model.name + '_transfer_palm_network', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "946700c4972b3da24ddaa95e590ad25a8f905da62e2bd053285a4cc17f93f490", - "s": "3698e84564e58477a49f7a9cea572ef5d672a5538db08f3ee42df5eb75a1b907", - "v": "0542b8613d", - }); - })); -}); diff --git a/tests/zemu/src/contract_data_warning.test.js b/tests/zemu/src/contract_data_warning.test.js deleted file mode 100644 index c3b06e2ed..000000000 --- a/tests/zemu/src/contract_data_warning.test.js +++ /dev/null @@ -1,23 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { TransportStatusError } from "@ledgerhq/errors"; -import { waitForAppScreen, zemu, nano_models } from './test.fixture'; -import Zemu from '@zondax/zemu'; - -nano_models.forEach(function(model) { - test('[Nano ' + model.letter + '] Try to blind sign with setting disabled', zemu(model, async (sim, eth) => { - // we can't use eth.signTransaction because it detects that contract data is disabled and fails early - let transport = await sim.getTransport(); - let buffer = Buffer.from("058000002c8000003c800000010000000000000000f849208506fc23ac008303dc3194f650c3d88d12db855b8bf7d11be6c55a4e07dcc980a4a1712d6800000000000000000000000000000000000000000000000000000000000acbc7018080", "hex"); - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - - await expect(tx).rejects.toEqual(new TransportStatusError(0x6a80)); - - await Zemu.sleep(1000); - await waitForAppScreen(sim); - let clicks; - if (model.letter === 'S') clicks = [1, 0]; - else clicks = [0]; - await sim.navigateAndCompareSnapshots('.', model.name + '_try_to_blind_sign_with_setting_disabled', clicks); - })); -}); diff --git a/tests/zemu/src/eip1559.test.js b/tests/zemu/src/eip1559.test.js deleted file mode 100644 index 41d12d4ba..000000000 --- a/tests/zemu/src/eip1559.test.js +++ /dev/null @@ -1,25 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import { waitForAppScreen, zemu, nano_models } from './test.fixture'; - -nano_models.forEach(function(model) { - test('[Nano ' + model.letter + '] Transfer eip1559', zemu(model, async (sim, eth) => { - - const tx = eth.signTransaction( - "44'/60'/0'/0/0", - '02f87001018502540be4008502540be40086246139ca800094cccccccccccccccccccccccccccccccccccccccc8000c001a0e07fb8a64ea3786c9a6649e54429e2786af3ea31c6d06165346678cf8ce44f9ba00e4a0526db1e905b7164a858fd5ebd2f1759e22e6955499448bd276a6aa62830', - ); - - await waitForAppScreen(sim); - let clicks; - if (model.letter === 'S') clicks = 7; - else clicks = 5; - await sim.navigateAndCompareSnapshots('.', model.name + '_transfer_eip1559', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "3d6dfabc6c52374bfa34cb2c433856a0bcd9484870dd1b50249f7164a5fce052", - "s": "0548a774dd0b63930d83cb2e1a836fe3ef24444e8b758b00585d9a076c0e98a8", - "v": "01" - }); - })); -}); diff --git a/tests/zemu/src/eip191.test.js b/tests/zemu/src/eip191.test.js deleted file mode 100644 index c54b01352..000000000 --- a/tests/zemu/src/eip191.test.js +++ /dev/null @@ -1,72 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import { waitForAppScreen, zemu, nano_models, apdu_as_string, send_apdu } from './test.fixture'; - -const testgroup = "EIP-191"; - -nano_models.forEach(function(model) { - test("[Nano " + model.letter + "] "+ testgroup +" Metamask test", zemu(model, async (sim, eth) => { - - const tx = eth.signPersonalMessage( - "44'/60'/0'/0/0", - Buffer.from("Example `personal_sign` message").toString("hex") - ); - - await waitForAppScreen(sim); - - const rclicks = (model.letter == 'S') ? 4 : 3; - await sim.navigateAndCompareSnapshots('.', model.name + '_eip191_metamask', [rclicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "v": 28, - "r": "916099cf0d9c21911c85f0770a47a9696a8189e78c259cf099749748c507baae", - "s": "0d72234bc0ac2e94c5f7a5f4f9cd8610a52be4ea55515a85b9703f1bb158415c" - }); - })); - - - test("[Nano " + model.letter + "] "+ testgroup +" non-ASCII test", zemu(model, async (sim, eth) => { - - const tx = eth.signPersonalMessage( - "44'/60'/0'/0/0", - "9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658" - ); - - await waitForAppScreen(sim); - - const rclicks = (model.letter == 'S') ? 8 : 4; - await sim.navigateAndCompareSnapshots('.', model.name + '_eip191_nonascii', [rclicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "v": 28, - "r": "64bdbdb6959425445d00ff2536a7018d2dce904e1f7475938fe4221c3c72500c", - "s": "7c9208e99b6b9266a73aae17b73472d06499746edec34fd47a9dab42f06f2e42" - }); - })); - - - test("[Nano " + model.letter + "] "+ testgroup +" OpenSea test", zemu(model, async (sim, eth) => { - - const tx = eth.signPersonalMessage( - "44'/60'/0'/0/0", - Buffer.from("Welcome to OpenSea!\n\nClick to sign in and accept the OpenSea Terms of Service: https://opensea.io/tos\n\nThis request will not trigger a blockchain transaction or cost any gas fees.\n\nYour authentication status will reset after 24 hours.\n\nWallet address:\n0x9858effd232b4033e47d90003d41ec34ecaeda94\n\nNonce:\n2b02c8a0-f74f-4554-9821-a28054dc9121").toString("hex") - ); - - await waitForAppScreen(sim); - - if (model.letter == 'S') - { - await sim.navigateAndCompareSnapshots('.', model.name + '_eip191_opensea', [1, 5, 1, 6, 0, 1, -1, 0]); - } - else - { - await sim.navigateAndCompareSnapshots('.', model.name + '_eip191_opensea', [1, 5, 1, 2, 1, -1, 0]); - } - - await expect(tx).resolves.toEqual({ - "v": 28, - "r": "61a68c986f087730d2f6ecf89d6d1e48ab963ac461102bb02664bc05c3db75bb", - "s": "5714729ef441e097673a7b29a681e97f6963d875eeed2081f26b0b6686cd2bd2" - }); - })); -}); diff --git a/tests/zemu/src/erc1155.notest.js b/tests/zemu/src/erc1155.notest.js deleted file mode 100644 index 37d1a8d58..000000000 --- a/tests/zemu/src/erc1155.notest.js +++ /dev/null @@ -1,67 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import Zemu from '@zondax/zemu'; -import { TransportStatusError } from "@ledgerhq/errors"; -import { waitForAppScreen, zemu, nano_models, apdu_as_string, send_apdu } from './test.fixture'; - -// Only LNX -const model = nano_models[1]; - -{ - const set_plugin = apdu_as_string('e01600007401010745524331313535495f947276749ce646f68ac8c248420045cb7b5ef242432a00000000000000010001473045022100ec4377d17e8d98d424bf16b29c691bc1a010825fb5b8a35de0268a9dc22eab2402206701b016fe6718bf519d18cc12e9838e9ef898cc4c143017839023c3260b2d74'); - const provide_nft_info = apdu_as_string('e01400007b0101124f70656e53656120436f6c6c656374696f6e495f947276749ce646f68ac8c248420045cb7b5e0000000000000001000147304502210083e357a828f13d574b1296214a3749c194ab1df1f8a243655c053b1c72f91e0c02201ed93cfac7e87759445c4da2e4bfd6e1cf0405ea37c7293bc965948f51bef5cc'); - const sign_first = apdu_as_string('e004000096058000002c8000003c800000000000000000000000f901090b8520b673dd0082bcb394495f947276749ce646f68ac8c248420045cb7b5e80b8e4f242432a0000000000000000000000006cbcd73cd8e8a42844662f0a0e76d7f79afd933d000000000000000000000000c2907efcce4011c491bbeda8a0fa63ba7aab596cabf06640f8ca8fc5e0ed471b10befcdf65a33e4300000000'); - const sign_more = apdu_as_string('e00480008b00006a0000000064000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000043078303000000000000000000000000000000000000000000000000000000000018080'); - - test('[Nano ' + model.letter + '] Transfer ERC-1155', zemu(model, async (sim, eth) => { - const current_screen = sim.getMainMenuSnapshot(); - await send_apdu(eth.transport, set_plugin); - await send_apdu(eth.transport, provide_nft_info); - await send_apdu(eth.transport, sign_first); - let sign_promise = send_apdu(eth.transport, sign_more); - - await waitForAppScreen(sim, current_screen); - await sim.navigateAndCompareSnapshots('.', model.name + '_erc1155_transfer', [10, -1, 0]); - - await sign_promise; - })); - - test('[Nano ' + model.letter + '] Transfer ERC-1155 w/o NFT metadata', zemu(model, async (sim, eth) => { - const current_screen = sim.getMainMenuSnapshot(); - await send_apdu(eth.transport, set_plugin); - let sign_tx = send_apdu(eth.transport, sign_first); - - await expect(sign_tx).rejects.toEqual(new TransportStatusError(0x6a80)); - })); - - test('[Nano ' + model.letter + '] Transfer ERC-1155 w/o plugin loaded', zemu(model, async (sim, eth) => { - const current_screen = sim.getMainMenuSnapshot(); - let nft_info = send_apdu(eth.transport, provide_nft_info); - - await expect(nft_info).rejects.toEqual(new TransportStatusError(0x6985)); - })); -} - -{ - const set_plugin = apdu_as_string('e01600007401010745524331313535495f947276749ce646f68ac8c248420045cb7b5e2eb2c2d60000000000000001000147304502210087b35cefc53fd94e25404933eb0d5ff08f20ba655d181de3b24ff0099dc3317f02204a216aa9e0b84bef6e20fcb036bd49647bf0cab66732b99b49ec277ffb682aa1'); - const provide_nft_info = apdu_as_string('e0140000820101194f70656e536561205368617265642053746f726566726f6e74495f947276749ce646f68ac8c248420045cb7b5e00000000000000010001473045022100c74cd613a27a9f4887210f5a3a0e12745e1ba0ab3a0d284cb6485d89c3cce4e602205a13e62a91164985cf58a838f8f531c0b91b980d206a5ba8df28270023ef93a3'); - const sign_first = apdu_as_string('e004000096058000002c8000003c800000000000000000000000f9020b0e850d8cfd86008301617d94495f947276749ce646f68ac8c248420045cb7b5e80b901e42eb2c2d60000000000000000000000006cbcd73cd8e8a42844662f0a0e76d7f79afd933d000000000000000000000000c2907efcce4011c491bbeda8a0fa63ba7aab596c00000000000000000000000000000000000000000000'); - const sign_more_1 = apdu_as_string('e004800096000000000000000000a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000003abf06640f8ca8fc5e0ed471b10befcdf65a33e430000000000006a0000000064def9d99ff495856496c028c0'); - const sign_more_2 = apdu_as_string('e00480009689732473fcd0bbbe000000000000a30000000001abf06640f8ca8fc5e0ed471b10befcdf65a33e430000000000006a00000000640000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000010000'); - const sign_more_3 = apdu_as_string('e00480006100000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000043078303000000000000000000000000000000000000000000000000000000000018080'); - - test('[Nano ' + model.letter + '] Batch transfer ERC-1155', zemu(model, async (sim, eth) => { - const current_screen = sim.getMainMenuSnapshot(); - await send_apdu(eth.transport, set_plugin); - await send_apdu(eth.transport, provide_nft_info); - await send_apdu(eth.transport, sign_first); - await send_apdu(eth.transport, sign_more_1); - await send_apdu(eth.transport, sign_more_2); - let sign_promise = send_apdu(eth.transport, sign_more_3); - - await waitForAppScreen(sim, current_screen); - await sim.navigateAndCompareSnapshots('.', model.name + '_erc1155_batch_transfer', [8, -1, 0]); - - await sign_promise; - })); -} diff --git a/tests/zemu/src/erc721.notest.js b/tests/zemu/src/erc721.notest.js deleted file mode 100644 index 1d0585399..000000000 --- a/tests/zemu/src/erc721.notest.js +++ /dev/null @@ -1,41 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import Zemu from '@zondax/zemu'; -import { TransportStatusError } from "@ledgerhq/errors"; -import { waitForAppScreen, zemu, nano_models, apdu_as_string, send_apdu } from './test.fixture'; - -// Only LNX -const model = nano_models[1]; - -const set_plugin = apdu_as_string('e01600007301010645524337323160f80121c31a0d46b5279700f9df786054aa5ee542842e0e0000000000000001000147304502202e2282d7d3ea714da283010f517af469e1d59654aaee0fc438f017aa557eaea50221008b369679381065bbe01135723a4f9adb229295017d37c4d30138b90a51cf6ab6'); -const provide_nft_info = apdu_as_string('e01400007001010752617269626c6560f80121c31a0d46b5279700f9df786054aa5ee500000000000000010001473045022025696986ef5f0ee2f72d9c6e41d7e2bf2e4f06373ab26d73ebe326c7fd4c7a6602210084f6b064d8750ae68ed5dd012296f37030390ec06ff534c5da6f0f4a4460af33'); -const sign_first = apdu_as_string('e004000096058000002c8000003c800000000000000000000000f88a0a852c3ce1ec008301f5679460f80121c31a0d46b5279700f9df786054aa5ee580b86442842e0e0000000000000000000000006cbcd73cd8e8a42844662f0a0e76d7f79afd933d000000000000000000000000c2907efcce4011c491bbeda8a0fa63ba7aab596c000000000000000000000000000000000000000000000000'); -const sign_more = apdu_as_string('e00480000b0000000000112999018080'); - -test('[Nano ' + model.letter + '] Transfer ERC-721', zemu(model, async (sim, eth) => { - const current_screen = sim.getMainMenuSnapshot(); - await send_apdu(eth.transport, set_plugin); - await send_apdu(eth.transport, provide_nft_info); - await send_apdu(eth.transport, sign_first); - let sign_promise = send_apdu(eth.transport, sign_more); - - await waitForAppScreen(sim, current_screen); - await sim.navigateAndCompareSnapshots('.', model.name + '_erc721_transfer', [8, -1, 0]); - - await sign_promise; -})); - -test('[Nano ' + model.letter + '] Transfer ERC-721 w/o NFT metadata', zemu(model, async(sim, eth) => { - const current_screen = sim.getMainMenuSnapshot(); - await send_apdu(eth.transport, set_plugin); - let sign_tx = send_apdu(eth.transport, sign_first); - - await expect(sign_tx).rejects.toEqual(new TransportStatusError(0x6a80)); -})); - -test('[Nano ' + model.letter + '] Transfer ERC-721 w/o plugin loaded', zemu(model, async (sim, eth) => { - const current_screen = sim.getMainMenuSnapshot(); - let nft_info = send_apdu(eth.transport, provide_nft_info); - - await expect(nft_info).rejects.toEqual(new TransportStatusError(0x6985)); -})); diff --git a/tests/zemu/src/send.test.js b/tests/zemu/src/send.test.js deleted file mode 100644 index 1634974c2..000000000 --- a/tests/zemu/src/send.test.js +++ /dev/null @@ -1,38 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import { waitForAppScreen, zemu, nano_models } from './test.fixture'; -import { TransportStatusError } from "@ledgerhq/errors"; - -nano_models.forEach(function(model) { - test('[Nano ' + model.letter + '] Transfer Ether on Ethereum app', zemu(model, async (sim, eth) => { - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880018080', - ); - - await waitForAppScreen(sim); - let clicks; - if (model.letter === 'S') clicks = 9; - else clicks = 5; - await sim.navigateAndCompareSnapshots('.', model.name + '_transfer_ethereum', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "6f389d15320f0501383526ed03de917c14212716f09a262dbc98431086a5db49", - "s": "0dc994b7b97230bb35fdf6fec2f4d8ff4cfb8bfeb2a652c364c738ff033c05dd", - "v": "26", - }); - })); -}); - -nano_models.forEach(function(model) { - test('[Nano ' + model.letter + '] Transfer amount >= 2^87 Eth on Ethereum app should fail', zemu(model, async (sim, eth) => { - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'f83f268e02cc9be5c53ea44bd43c289dcddc82520894dac17f958d2ee523a2206206994597c13d831ec7928db8b0861b8f7fe5df83cd553a829878000080018080', - ); - - await expect(tx).rejects.toEqual(new TransportStatusError(0x6807)); - })); -}); diff --git a/tests/zemu/src/send_bsc.test.js b/tests/zemu/src/send_bsc.test.js deleted file mode 100644 index 5d9dabab2..000000000 --- a/tests/zemu/src/send_bsc.test.js +++ /dev/null @@ -1,25 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import { waitForAppScreen, zemu, nano_models } from './test.fixture'; - -nano_models.forEach(function(model) { - test('[Nano ' + model.letter + '] Transfer bsc', zemu(model, async (sim, eth) => { - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'EB0185012A05F200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880388080', - ); - - await waitForAppScreen(sim); - let clicks; - if (model.letter === 'S') clicks = 10; - else clicks = 6; - await sim.navigateAndCompareSnapshots('.', model.name + '_transfer_bsc', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "f667cc34e9815df4f052fb3463cdbe355fff5c1acf4e919b3539806521a059ad", - "s": "6b35492b7108d9d9e1cc7aede536ed6b3173197b56dd873cbc3b43e041d6f407", - "v": "93", - }); - })); -}); diff --git a/tests/zemu/src/send_etc.test.js b/tests/zemu/src/send_etc.test.js deleted file mode 100644 index 6b5e7d00c..000000000 --- a/tests/zemu/src/send_etc.test.js +++ /dev/null @@ -1,38 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import { EthAppPleaseEnableContractData } from "@ledgerhq/errors"; -import { waitForAppScreen, zemu, nano_models } from './test.fixture'; - -nano_models.forEach(function(model) { - test("[Nano " + model.letter + "] Transfer on Ethereum clone app", zemu(model, async (sim, eth) => { - const tx = eth.signTransaction( - "44'/60'/0'/0/0", - 'EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818803D8080', - ); - - await waitForAppScreen(sim); - let clicks; - if (model.letter === 'S') clicks = 9; - else clicks = 5; - await sim.navigateAndCompareSnapshots('.', model.name + '_transfer_ethereum_clone', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "60df850d297e355596f87dc313a742032de4b59c5579186b3d59bdf31402fec0", - "s": "23c3a2beacabc1943d487a2e1d545e4c46c718b1e70e9d1c11a98828c9338927", - "v": "9e", - }); - }, true)); -}); - -nano_models.forEach(function(model) { - test("[Nano " + model.letter + "] Transfer on network 5234 on Ethereum clone", zemu(model, async (sim, eth) => { - const tx = eth.signTransaction( - "44'/60'/0'/0/0", - 'ED44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818808214728080', - ); - - await expect(tx).rejects.toEqual(new EthAppPleaseEnableContractData( - "Please enable Contract data on the Ethereum app Settings" - )); - }, true)); -}); diff --git a/tests/zemu/src/test.fixture.js b/tests/zemu/src/test.fixture.js deleted file mode 100644 index 1a2f898cf..000000000 --- a/tests/zemu/src/test.fixture.js +++ /dev/null @@ -1,121 +0,0 @@ -import Zemu, { DEFAULT_START_OPTIONS, DeviceModel } from '@zondax/zemu'; -import Eth from '@ledgerhq/hw-app-eth'; -import {RLP} from "ethers/lib/utils"; - -const transactionUploadDelay = 60000; - -async function waitForAppScreen(sim, current_screen = null) { - if (current_screen === null) current_screen = sim.getMainMenuSnapshot(); - - await sim.waitUntilScreenIsNot(current_screen, transactionUploadDelay); -} - -const sim_options_nano = { - ...DEFAULT_START_OPTIONS, - logging: true, - X11: true, - startText: 'is ready' -}; - -const Resolve = require('path').resolve; - -const NANOS_ELF_PATH = Resolve('elfs/ethereum_nanos.elf'); -const NANOX_ELF_PATH = Resolve('elfs/ethereum_nanox.elf'); - -const NANOS_CLONE_ELF_PATH = Resolve("elfs/ethereum_classic_nanos.elf"); -const NANOX_CLONE_ELF_PATH = Resolve("elfs/ethereum_classic_nanox.elf"); - -const nano_models: DeviceModel[] = [ - { name: 'nanos', letter: 'S', path: NANOS_ELF_PATH, clone_path: NANOS_CLONE_ELF_PATH }/*, - { name: 'nanox', letter: 'X', path: NANOX_ELF_PATH, clone_path: NANOX_CLONE_ELF_PATH }*/ -]; - -const TIMEOUT = 1000000; - -// useful to take an apdu as a hex string and convert its JS representation -function apdu_as_string(str) { - let buffer = []; - - for (let i = 0; i < str.length; i += 2) { - const str_extract = str.substring(i, i + 2); - buffer[i / 2] = parseInt(str_extract, 16); - } - return { - cla: buffer[0], - ins: buffer[1], - p1: buffer[2], - p2: buffer[3], - data: Buffer.from(buffer.slice(5)) - }; -} - -async function send_apdu(ts, apdu) { - return ts.send(apdu.cla, - apdu.ins, - apdu.p1, - apdu.p2, - apdu.data); -} - -// Generates a serializedTransaction from a rawHexTransaction copy pasted from etherscan. -function txFromEtherscan(rawTx) { - // Remove 0x prefix - rawTx = rawTx.slice(2); - - let txType = rawTx.slice(0, 2); - if (txType == "02" || txType == "01") { - // Remove "02" prefix - rawTx = rawTx.slice(2); - } else { - txType = ""; - } - - let decoded = RLP.decode("0x" + rawTx); - if (txType != "") { - decoded = decoded.slice(0, decoded.length - 3); // remove v, r, s - } else { - decoded[decoded.length - 1] = "0x"; // empty - decoded[decoded.length - 2] = "0x"; // empty - decoded[decoded.length - 3] = "0x01"; // chainID 1 - } - - // Encode back the data, drop the '0x' prefix - let encoded = RLP.encode(decoded).slice(2); - - // Don't forget to prepend the txtype - return txType + encoded; -} - -function zemu(device, func, start_clone = false) { - return async () => { - jest.setTimeout(TIMEOUT); - let elf_path; - let lib_elf; - if (start_clone) { - elf_path = device.clone_path; - lib_elf = { 'Ethereum': device.path }; - } - else { - elf_path = device.path; - } - const sim = new Zemu(elf_path, lib_elf); - try { - await sim.start({...sim_options_nano, model: device.name}); - const transport = await sim.getTransport(); - await func(sim, new Eth(transport)); - } finally { - await sim.close(); - } - }; -} - -module.exports = { - zemu, - waitForAppScreen, - sim_options_nano, - nano_models, - TIMEOUT, - txFromEtherscan, - apdu_as_string, - send_apdu -} diff --git a/tests/zemu/yarn.lock b/tests/zemu/yarn.lock deleted file mode 100644 index b4b5395b3..000000000 --- a/tests/zemu/yarn.lock +++ /dev/null @@ -1,7475 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/cli@^7.7.0": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.14.3.tgz#9f6c8aee12e8660df879610f19a8010958b26a6f" - integrity sha512-zU4JLvwk32ay1lhhyGfqiRUSPoltVDjhYkA3aQq8+Yby9z30s/EsFw1EPOHxWG9YZo2pAGfgdRNeHZQAYU5m9A== - dependencies: - commander "^4.0.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.1.0" - glob "^7.0.0" - make-dir "^2.1.0" - slash "^2.0.0" - source-map "^0.5.0" - optionalDependencies: - "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents" - chokidar "^3.4.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" - integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== - -"@babel/core@^7.1.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38" - integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.3" - "@babel/helper-compilation-targets" "^7.13.16" - "@babel/helper-module-transforms" "^7.14.2" - "@babel/helpers" "^7.14.0" - "@babel/parser" "^7.14.3" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.2" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.14.2", "@babel/generator@^7.14.3", "@babel/generator@^7.4.0": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91" - integrity sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== - dependencies: - "@babel/types" "^7.14.2" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" - integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" - integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" - integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== - dependencies: - "@babel/compat-data" "^7.13.15" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.3.tgz#832111bcf4f57ca57a4c5b1a000fc125abc6554a" - integrity sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.14.2" - "@babel/helper-member-expression-to-functions" "^7.13.12" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.14.3" - "@babel/helper-split-export-declaration" "^7.12.13" - -"@babel/helper-create-regexp-features-plugin@^7.12.13": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz#149aa6d78c016e318c43e2409a0ae9c136a86688" - integrity sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.1.tgz#e6f5f4a6edc3722152c21359190de67fc6cf664d" - integrity sha512-x3AUTVZNPunaw1opRTa5OwVA5N0YxGlIad9xQ5QflK1uIS7PnAGGU5O2Dj/G183fR//N8AzTq+Q8+oiu9m0VFg== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.12.13": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" - integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== - dependencies: - "@babel/types" "^7.13.0" - -"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz#397688b590760b6ef7725b5f0860c82427ebaac2" - integrity sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.14.2" - -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-hoist-variables@^7.13.0": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz#1b1651249e94b51f8f0d33439843e33e39775b30" - integrity sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg== - dependencies: - "@babel/traverse" "^7.13.15" - "@babel/types" "^7.13.16" - -"@babel/helper-member-expression-to-functions@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" - integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" - integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" - integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== - dependencies: - "@babel/helper-module-imports" "^7.13.12" - "@babel/helper-replace-supers" "^7.13.12" - "@babel/helper-simple-access" "^7.13.12" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.14.0" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.2" - -"@babel/helper-optimise-call-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" - integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== - -"@babel/helper-remap-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" - integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-wrap-function" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz#ca17b318b859d107f0e9b722d58cf12d94436600" - integrity sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.13.12" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.2" - -"@babel/helper-simple-access@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" - integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" - integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== - -"@babel/helper-validator-option@^7.12.17": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" - integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== - -"@babel/helper-wrap-function@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" - integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helpers@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" - integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.14.0" - -"@babel/highlight@^7.12.13": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" - integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3", "@babel/parser@^7.4.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" - integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" - integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - -"@babel/plugin-proposal-async-generator-functions@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz#3a2085abbf5d5f962d480dbc81347385ed62eb1e" - integrity sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" - integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-class-static-block@^7.13.11": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.3.tgz#5a527e2cae4a4753119c3a3e7f64ecae8ccf1360" - integrity sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.3" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-class-static-block" "^7.12.13" - -"@babel/plugin-proposal-dynamic-import@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz#01ebabd7c381cff231fa43e302939a9de5be9d9f" - integrity sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz#62542f94aa9ce8f6dba79eec698af22112253791" - integrity sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz#830b4e2426a782e8b2878fbfe2cba85b70cbf98c" - integrity sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz#222348c080a1678e0e74ea63fe76f275882d1fd7" - integrity sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz#425b11dc62fc26939a2ab42cbba680bdf5734546" - integrity sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz#82b4cc06571143faf50626104b335dd71baa4f9e" - integrity sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz#e17d418f81cc103fedd4ce037e181c8056225abc" - integrity sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw== - dependencies: - "@babel/compat-data" "^7.14.0" - "@babel/helper-compilation-targets" "^7.13.16" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.14.2" - -"@babel/plugin-proposal-optional-catch-binding@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz#150d4e58e525b16a9a1431bd5326c4eed870d717" - integrity sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz#df8171a8b9c43ebf4c1dabe6311b432d83e1b34e" - integrity sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" - integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-private-property-in-object@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz#b1a1f2030586b9d3489cc26179d2eb5883277636" - integrity sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-create-class-features-plugin" "^7.14.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-private-property-in-object" "^7.14.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" - integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz#8e3d674b0613e67975ceac2776c97b60cafc5c9c" - integrity sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" - integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz#762a4babec61176fec6c88480dec40372b140c0b" - integrity sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" - integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-arrow-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" - integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" - integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" - -"@babel/plugin-transform-block-scoped-functions@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" - integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-block-scoping@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz#761cb12ab5a88d640ad4af4aa81f820e6b5fdf5c" - integrity sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-classes@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz#3f1196c5709f064c252ad056207d87b7aeb2d03d" - integrity sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.14.2" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-replace-supers" "^7.13.12" - "@babel/helper-split-export-declaration" "^7.12.13" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" - integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-destructuring@^7.13.17": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" - integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" - integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-duplicate-keys@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" - integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-exponentiation-operator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" - integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-flow-strip-types@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz#58177a48c209971e8234e99906cb6bd1122addd3" - integrity sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-flow" "^7.12.13" - -"@babel/plugin-transform-for-of@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" - integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" - integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" - integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-member-expression-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" - integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-modules-amd@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz#6622806fe1a7c07a1388444222ef9535f2ca17b0" - integrity sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw== - dependencies: - "@babel/helper-module-transforms" "^7.14.2" - "@babel/helper-plugin-utils" "^7.13.0" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" - integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== - dependencies: - "@babel/helper-module-transforms" "^7.14.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-simple-access" "^7.13.12" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" - integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== - dependencies: - "@babel/helper-hoist-variables" "^7.13.0" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-identifier" "^7.12.11" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz#2f8179d1bbc9263665ce4a65f305526b2ea8ac34" - integrity sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw== - dependencies: - "@babel/helper-module-transforms" "^7.14.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" - integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - -"@babel/plugin-transform-new-target@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" - integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-object-super@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" - integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - -"@babel/plugin-transform-parameters@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31" - integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-property-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-regenerator@^7.13.15": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39" - integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" - integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-shorthand-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" - integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-spread@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" - integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - -"@babel/plugin-transform-sticky-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" - integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-template-literals@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" - integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-typeof-symbol@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" - integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-escapes@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" - integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" - integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/preset-env@^7.7.1": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.2.tgz#e80612965da73579c84ad2f963c2359c71524ed5" - integrity sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ== - dependencies: - "@babel/compat-data" "^7.14.0" - "@babel/helper-compilation-targets" "^7.13.16" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" - "@babel/plugin-proposal-async-generator-functions" "^7.14.2" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-class-static-block" "^7.13.11" - "@babel/plugin-proposal-dynamic-import" "^7.14.2" - "@babel/plugin-proposal-export-namespace-from" "^7.14.2" - "@babel/plugin-proposal-json-strings" "^7.14.2" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.2" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.2" - "@babel/plugin-proposal-numeric-separator" "^7.14.2" - "@babel/plugin-proposal-object-rest-spread" "^7.14.2" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.2" - "@babel/plugin-proposal-optional-chaining" "^7.14.2" - "@babel/plugin-proposal-private-methods" "^7.13.0" - "@babel/plugin-proposal-private-property-in-object" "^7.14.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.12.13" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.0" - "@babel/plugin-syntax-top-level-await" "^7.12.13" - "@babel/plugin-transform-arrow-functions" "^7.13.0" - "@babel/plugin-transform-async-to-generator" "^7.13.0" - "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.14.2" - "@babel/plugin-transform-classes" "^7.14.2" - "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.13.17" - "@babel/plugin-transform-dotall-regex" "^7.12.13" - "@babel/plugin-transform-duplicate-keys" "^7.12.13" - "@babel/plugin-transform-exponentiation-operator" "^7.12.13" - "@babel/plugin-transform-for-of" "^7.13.0" - "@babel/plugin-transform-function-name" "^7.12.13" - "@babel/plugin-transform-literals" "^7.12.13" - "@babel/plugin-transform-member-expression-literals" "^7.12.13" - "@babel/plugin-transform-modules-amd" "^7.14.2" - "@babel/plugin-transform-modules-commonjs" "^7.14.0" - "@babel/plugin-transform-modules-systemjs" "^7.13.8" - "@babel/plugin-transform-modules-umd" "^7.14.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" - "@babel/plugin-transform-new-target" "^7.12.13" - "@babel/plugin-transform-object-super" "^7.12.13" - "@babel/plugin-transform-parameters" "^7.14.2" - "@babel/plugin-transform-property-literals" "^7.12.13" - "@babel/plugin-transform-regenerator" "^7.13.15" - "@babel/plugin-transform-reserved-words" "^7.12.13" - "@babel/plugin-transform-shorthand-properties" "^7.12.13" - "@babel/plugin-transform-spread" "^7.13.0" - "@babel/plugin-transform-sticky-regex" "^7.12.13" - "@babel/plugin-transform-template-literals" "^7.13.0" - "@babel/plugin-transform-typeof-symbol" "^7.12.13" - "@babel/plugin-transform-unicode-escapes" "^7.12.13" - "@babel/plugin-transform-unicode-regex" "^7.12.13" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.14.2" - babel-plugin-polyfill-corejs2 "^0.2.0" - babel-plugin-polyfill-corejs3 "^0.2.0" - babel-plugin-polyfill-regenerator "^0.2.0" - core-js-compat "^3.9.0" - semver "^6.3.0" - -"@babel/preset-flow@^7.0.0": - version "7.13.13" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.13.13.tgz#a61a1c149b3f77589d795287744393444d5cdd9e" - integrity sha512-MDtwtamMifqq3R2mC7l3A3uFalUb3NH5TIBQWjN/epEPlZktcLq4se3J+ivckKrLMGsR7H9LW8+pYuIUN9tsKg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - "@babel/plugin-transform-flow-strip-types" "^7.13.0" - -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-stage-0@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/preset-stage-0/-/preset-stage-0-7.8.3.tgz#b6a0eca1a3b72e07f9caf58f998e97568028f6f5" - integrity sha512-+l6FlG1j73t4wh78W41StbcCz0/9a1/y+vxfnjtHl060kSmcgMfGzK9MEkLvrCOXfhp9RCX+d88sm6rOqxEIEQ== - -"@babel/register@^7.7.0": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.13.16.tgz#ae3ab0b55c8ec28763877383c454f01521d9a53d" - integrity sha512-dh2t11ysujTwByQjXNgJ48QZ2zcXKQVdV8s0TbeMI0flmtGWCdTwK9tJiACHXPLmncm5+ktNn/diojA45JE4jg== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.0" - source-map-support "^0.5.16" - -"@babel/runtime@^7.15.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" - integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.8.4": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" - integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.12.13", "@babel/template@^7.3.3", "@babel/template@^7.4.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.4.3": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" - integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.2" - "@babel/helper-function-name" "^7.14.2" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.14.2" - "@babel/types" "^7.14.2" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" - integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== - dependencies: - "@babel/helper-validator-identifier" "^7.14.0" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@ethersproject/abi@5.4.0", "@ethersproject/abi@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.4.0.tgz#a6d63bdb3672f738398846d4279fa6b6c9818242" - integrity sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw== - dependencies: - "@ethersproject/address" "^5.4.0" - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/constants" "^5.4.0" - "@ethersproject/hash" "^5.4.0" - "@ethersproject/keccak256" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/strings" "^5.4.0" - -"@ethersproject/abi@5.5.0", "@ethersproject/abi@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.5.0.tgz#fb52820e22e50b854ff15ce1647cc508d6660613" - integrity sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w== - dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/abstract-provider@5.4.1", "@ethersproject/abstract-provider@^5.4.0": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz#e404309a29f771bd4d28dbafadcaa184668c2a6e" - integrity sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ== - dependencies: - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/networks" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/transactions" "^5.4.0" - "@ethersproject/web" "^5.4.0" - -"@ethersproject/abstract-provider@5.5.1", "@ethersproject/abstract-provider@^5.5.0": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5" - integrity sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" - -"@ethersproject/abstract-signer@5.4.1", "@ethersproject/abstract-signer@^5.4.0": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz#e4e9abcf4dd4f1ba0db7dff9746a5f78f355ea81" - integrity sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA== - dependencies: - "@ethersproject/abstract-provider" "^5.4.0" - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - -"@ethersproject/abstract-signer@5.5.0", "@ethersproject/abstract-signer@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d" - integrity sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - -"@ethersproject/address@5.4.0", "@ethersproject/address@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.4.0.tgz#ba2d00a0f8c4c0854933b963b9a3a9f6eb4a37a3" - integrity sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q== - dependencies: - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/keccak256" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/rlp" "^5.4.0" - -"@ethersproject/address@5.5.0", "@ethersproject/address@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.5.0.tgz#bcc6f576a553f21f3dd7ba17248f81b473c9c78f" - integrity sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - -"@ethersproject/base64@5.4.0", "@ethersproject/base64@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.4.0.tgz#7252bf65295954c9048c7ca5f43e5c86441b2a9a" - integrity sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ== - dependencies: - "@ethersproject/bytes" "^5.4.0" - -"@ethersproject/base64@5.5.0", "@ethersproject/base64@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.5.0.tgz#881e8544e47ed976930836986e5eb8fab259c090" - integrity sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA== - dependencies: - "@ethersproject/bytes" "^5.5.0" - -"@ethersproject/basex@5.4.0", "@ethersproject/basex@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.4.0.tgz#0a2da0f4e76c504a94f2b21d3161ed9438c7f8a6" - integrity sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg== - dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - -"@ethersproject/basex@5.5.0", "@ethersproject/basex@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.5.0.tgz#e40a53ae6d6b09ab4d977bd037010d4bed21b4d3" - integrity sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - -"@ethersproject/bignumber@5.4.1", "@ethersproject/bignumber@^5.4.0": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.4.1.tgz#64399d3b9ae80aa83d483e550ba57ea062c1042d" - integrity sha512-fJhdxqoQNuDOk6epfM7yD6J8Pol4NUCy1vkaGAkuujZm0+lNow//MKu1hLhRiYV4BsOHyBv5/lsTjF+7hWwhJg== - dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - bn.js "^4.11.9" - -"@ethersproject/bignumber@5.5.0", "@ethersproject/bignumber@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.5.0.tgz#875b143f04a216f4f8b96245bde942d42d279527" - integrity sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - bn.js "^4.11.9" - -"@ethersproject/bytes@5.4.0", "@ethersproject/bytes@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.4.0.tgz#56fa32ce3bf67153756dbaefda921d1d4774404e" - integrity sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA== - dependencies: - "@ethersproject/logger" "^5.4.0" - -"@ethersproject/bytes@5.5.0", "@ethersproject/bytes@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.5.0.tgz#cb11c526de657e7b45d2e0f0246fb3b9d29a601c" - integrity sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog== - dependencies: - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/constants@5.4.0", "@ethersproject/constants@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.4.0.tgz#ee0bdcb30bf1b532d2353c977bf2ef1ee117958a" - integrity sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q== - dependencies: - "@ethersproject/bignumber" "^5.4.0" - -"@ethersproject/constants@5.5.0", "@ethersproject/constants@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e" - integrity sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - -"@ethersproject/contracts@5.4.1": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.4.1.tgz#3eb4f35b7fe60a962a75804ada2746494df3e470" - integrity sha512-m+z2ZgPy4pyR15Je//dUaymRUZq5MtDajF6GwFbGAVmKz/RF+DNIPwF0k5qEcL3wPGVqUjFg2/krlCRVTU4T5w== - dependencies: - "@ethersproject/abi" "^5.4.0" - "@ethersproject/abstract-provider" "^5.4.0" - "@ethersproject/abstract-signer" "^5.4.0" - "@ethersproject/address" "^5.4.0" - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/constants" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/transactions" "^5.4.0" - -"@ethersproject/contracts@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.5.0.tgz#b735260d4bd61283a670a82d5275e2a38892c197" - integrity sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg== - dependencies: - "@ethersproject/abi" "^5.5.0" - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - -"@ethersproject/hash@5.4.0", "@ethersproject/hash@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.4.0.tgz#d18a8e927e828e22860a011f39e429d388344ae0" - integrity sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA== - dependencies: - "@ethersproject/abstract-signer" "^5.4.0" - "@ethersproject/address" "^5.4.0" - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/keccak256" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/strings" "^5.4.0" - -"@ethersproject/hash@5.5.0", "@ethersproject/hash@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.5.0.tgz#7cee76d08f88d1873574c849e0207dcb32380cc9" - integrity sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/hdnode@5.4.0", "@ethersproject/hdnode@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.4.0.tgz#4bc9999b9a12eb5ce80c5faa83114a57e4107cac" - integrity sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q== - dependencies: - "@ethersproject/abstract-signer" "^5.4.0" - "@ethersproject/basex" "^5.4.0" - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/pbkdf2" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/sha2" "^5.4.0" - "@ethersproject/signing-key" "^5.4.0" - "@ethersproject/strings" "^5.4.0" - "@ethersproject/transactions" "^5.4.0" - "@ethersproject/wordlists" "^5.4.0" - -"@ethersproject/hdnode@5.5.0", "@ethersproject/hdnode@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.5.0.tgz#4a04e28f41c546f7c978528ea1575206a200ddf6" - integrity sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/pbkdf2" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/wordlists" "^5.5.0" - -"@ethersproject/json-wallets@5.4.0", "@ethersproject/json-wallets@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz#2583341cfe313fc9856642e8ace3080154145e95" - integrity sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ== - dependencies: - "@ethersproject/abstract-signer" "^5.4.0" - "@ethersproject/address" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/hdnode" "^5.4.0" - "@ethersproject/keccak256" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/pbkdf2" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/random" "^5.4.0" - "@ethersproject/strings" "^5.4.0" - "@ethersproject/transactions" "^5.4.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/json-wallets@5.5.0", "@ethersproject/json-wallets@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz#dd522d4297e15bccc8e1427d247ec8376b60e325" - integrity sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hdnode" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/pbkdf2" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.4.0", "@ethersproject/keccak256@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.4.0.tgz#7143b8eea4976080241d2bd92e3b1f1bf7025318" - integrity sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A== - dependencies: - "@ethersproject/bytes" "^5.4.0" - js-sha3 "0.5.7" - -"@ethersproject/keccak256@5.5.0", "@ethersproject/keccak256@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.5.0.tgz#e4b1f9d7701da87c564ffe336f86dcee82983492" - integrity sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg== - dependencies: - "@ethersproject/bytes" "^5.5.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.4.0", "@ethersproject/logger@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.4.0.tgz#f39adadf62ad610c420bcd156fd41270e91b3ca9" - integrity sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ== - -"@ethersproject/logger@5.5.0", "@ethersproject/logger@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d" - integrity sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg== - -"@ethersproject/networks@5.4.2", "@ethersproject/networks@^5.4.0": - version "5.4.2" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.4.2.tgz#2247d977626e97e2c3b8ee73cd2457babde0ce35" - integrity sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw== - dependencies: - "@ethersproject/logger" "^5.4.0" - -"@ethersproject/networks@5.5.0", "@ethersproject/networks@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.0.tgz#babec47cab892c51f8dd652ce7f2e3e14283981a" - integrity sha512-KWfP3xOnJeF89Uf/FCJdV1a2aDJe5XTN2N52p4fcQ34QhDqQFkgQKZ39VGtiqUgHcLI8DfT0l9azC3KFTunqtA== - dependencies: - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/pbkdf2@5.4.0", "@ethersproject/pbkdf2@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz#ed88782a67fda1594c22d60d0ca911a9d669641c" - integrity sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g== - dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/sha2" "^5.4.0" - -"@ethersproject/pbkdf2@5.5.0", "@ethersproject/pbkdf2@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz#e25032cdf02f31505d47afbf9c3e000d95c4a050" - integrity sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - -"@ethersproject/properties@5.4.0", "@ethersproject/properties@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.4.0.tgz#38ba20539b44dcc5d5f80c45ad902017dcdbefe7" - integrity sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A== - dependencies: - "@ethersproject/logger" "^5.4.0" - -"@ethersproject/properties@5.5.0", "@ethersproject/properties@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.5.0.tgz#61f00f2bb83376d2071baab02245f92070c59995" - integrity sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA== - dependencies: - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/providers@5.4.4": - version "5.4.4" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.4.4.tgz#6729120317942fc0ab0ecdb35e944ec6bbedb795" - integrity sha512-mQevyXj2X2D3l8p/JGDYFZbODhZjW6On15DnCK4Xc9y6b+P0vqorQC/j46omWSm4cyo7BQ/rgfhXNYmvAfyZoQ== - dependencies: - "@ethersproject/abstract-provider" "^5.4.0" - "@ethersproject/abstract-signer" "^5.4.0" - "@ethersproject/address" "^5.4.0" - "@ethersproject/basex" "^5.4.0" - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/constants" "^5.4.0" - "@ethersproject/hash" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/networks" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/random" "^5.4.0" - "@ethersproject/rlp" "^5.4.0" - "@ethersproject/sha2" "^5.4.0" - "@ethersproject/strings" "^5.4.0" - "@ethersproject/transactions" "^5.4.0" - "@ethersproject/web" "^5.4.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/providers@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.0.tgz#bc2876a8fe5e0053ed9828b1f3767ae46e43758b" - integrity sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.4.0", "@ethersproject/random@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.4.0.tgz#9cdde60e160d024be39cc16f8de3b9ce39191e16" - integrity sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw== - dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - -"@ethersproject/random@5.5.0", "@ethersproject/random@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.5.0.tgz#305ed9e033ca537735365ac12eed88580b0f81f9" - integrity sha512-egGYZwZ/YIFKMHcoBUo8t3a8Hb/TKYX8BCBoLjudVCZh892welR3jOxgOmb48xznc9bTcMm7Tpwc1gHC1PFNFQ== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/rlp@5.4.0", "@ethersproject/rlp@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.4.0.tgz#de61afda5ff979454e76d3b3310a6c32ad060931" - integrity sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg== - dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - -"@ethersproject/rlp@5.5.0", "@ethersproject/rlp@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.5.0.tgz#530f4f608f9ca9d4f89c24ab95db58ab56ab99a0" - integrity sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/sha2@5.4.0", "@ethersproject/sha2@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.4.0.tgz#c9a8db1037014cbc4e9482bd662f86c090440371" - integrity sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg== - dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - hash.js "1.1.7" - -"@ethersproject/sha2@5.5.0", "@ethersproject/sha2@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.5.0.tgz#a40a054c61f98fd9eee99af2c3cc6ff57ec24db7" - integrity sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.4.0", "@ethersproject/signing-key@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.4.0.tgz#2f05120984e81cf89a3d5f6dec5c68ee0894fbec" - integrity sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A== - dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.5.0", "@ethersproject/signing-key@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.5.0.tgz#2aa37169ce7e01e3e80f2c14325f624c29cedbe0" - integrity sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.4.0.tgz#1305e058ea02dc4891df18b33232b11a14ece9ec" - integrity sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ== - dependencies: - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/keccak256" "^5.4.0" - "@ethersproject/sha2" "^5.4.0" - "@ethersproject/strings" "^5.4.0" - -"@ethersproject/solidity@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.5.0.tgz#2662eb3e5da471b85a20531e420054278362f93f" - integrity sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/strings@5.4.0", "@ethersproject/strings@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.4.0.tgz#fb12270132dd84b02906a8d895ae7e7fa3d07d9a" - integrity sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA== - dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/constants" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - -"@ethersproject/strings@5.5.0", "@ethersproject/strings@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.5.0.tgz#e6784d00ec6c57710755699003bc747e98c5d549" - integrity sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/transactions@5.4.0", "@ethersproject/transactions@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.4.0.tgz#a159d035179334bd92f340ce0f77e83e9e1522e0" - integrity sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ== - dependencies: - "@ethersproject/address" "^5.4.0" - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/constants" "^5.4.0" - "@ethersproject/keccak256" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/rlp" "^5.4.0" - "@ethersproject/signing-key" "^5.4.0" - -"@ethersproject/transactions@5.5.0", "@ethersproject/transactions@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908" - integrity sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA== - dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - -"@ethersproject/units@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.4.0.tgz#d57477a4498b14b88b10396062c8cbbaf20c79fe" - integrity sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg== - dependencies: - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/constants" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - -"@ethersproject/units@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.5.0.tgz#104d02db5b5dc42cc672cc4587bafb87a95ee45e" - integrity sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/wallet@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.4.0.tgz#fa5b59830b42e9be56eadd45a16a2e0933ad9353" - integrity sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ== - dependencies: - "@ethersproject/abstract-provider" "^5.4.0" - "@ethersproject/abstract-signer" "^5.4.0" - "@ethersproject/address" "^5.4.0" - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/hash" "^5.4.0" - "@ethersproject/hdnode" "^5.4.0" - "@ethersproject/json-wallets" "^5.4.0" - "@ethersproject/keccak256" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/random" "^5.4.0" - "@ethersproject/signing-key" "^5.4.0" - "@ethersproject/transactions" "^5.4.0" - "@ethersproject/wordlists" "^5.4.0" - -"@ethersproject/wallet@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.5.0.tgz#322a10527a440ece593980dca6182f17d54eae75" - integrity sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/hdnode" "^5.5.0" - "@ethersproject/json-wallets" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/wordlists" "^5.5.0" - -"@ethersproject/web@5.4.0", "@ethersproject/web@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.4.0.tgz#49fac173b96992334ed36a175538ba07a7413d1f" - integrity sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og== - dependencies: - "@ethersproject/base64" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/strings" "^5.4.0" - -"@ethersproject/web@5.5.0", "@ethersproject/web@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.0.tgz#0e5bb21a2b58fb4960a705bfc6522a6acf461e28" - integrity sha512-BEgY0eL5oH4mAo37TNYVrFeHsIXLRxggCRG/ksRIxI2X5uj5IsjGmcNiRN/VirQOlBxcUhCgHhaDLG4m6XAVoA== - dependencies: - "@ethersproject/base64" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/wordlists@5.4.0", "@ethersproject/wordlists@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.4.0.tgz#f34205ec3bbc9e2c49cadaee774cf0b07e7573d7" - integrity sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA== - dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/hash" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/strings" "^5.4.0" - -"@ethersproject/wordlists@5.5.0", "@ethersproject/wordlists@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.5.0.tgz#aac74963aa43e643638e5172353d931b347d584f" - integrity sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@grpc/grpc-js@^1.5.5": - version "1.6.7" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.6.7.tgz#4c4fa998ff719fe859ac19fe977fdef097bb99aa" - integrity sha512-eBM03pu9hd3VqDQG+kHahiG1x80RGkkqqRb1Pchcwqej/KkAH95gAvKs6laqaHCycYaPK+TKuNQnOz9UXYA8qw== - dependencies: - "@grpc/proto-loader" "^0.6.4" - "@types/node" ">=12.12.47" - -"@grpc/proto-loader@^0.6.4": - version "0.6.4" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.4.tgz#5438c0d771e92274e77e631babdc14456441cbdc" - integrity sha512-7xvDvW/vJEcmLUltCUGOgWRPM8Oofv0eCFSVMuKqaqWJaXSzmB+m9hiyqe34QofAl4WAzIKUZZlinIF9FOHyTQ== - dependencies: - "@types/long" "^4.0.1" - lodash.camelcase "^4.3.0" - long "^4.0.0" - protobufjs "^6.10.0" - yargs "^16.1.1" - -"@grpc/proto-loader@^0.6.9": - version "0.6.12" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.12.tgz#459b619b8b9b67794bf0d1cb819653a38c63e164" - integrity sha512-filTVbETFnxb9CyRX98zN18ilChTuf/C5scZ2xyaOTp0EHGq0/ufX8rjqXUcSb1Gpv7eZq4M2jDvbh9BogKnrg== - dependencies: - "@types/long" "^4.0.1" - lodash.camelcase "^4.3.0" - long "^4.0.0" - protobufjs "^6.10.0" - yargs "^16.2.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^24.7.1", "@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== - dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" - -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" - integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" - slash "^3.0.0" - -"@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" - integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== - dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - -"@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== - dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - -"@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== - dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== - dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" - "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" - integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" - -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" - integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" - -"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" - -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" - integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== - dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/istanbul-lib-coverage" "^2.0.0" - -"@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" - integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== - dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" - integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== - dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" - pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" - source-map "^0.6.1" - write-file-atomic "2.4.1" - -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" - integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@ledgerhq/cryptoassets@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-6.5.0.tgz#17250c928baa86603739ffcea19fc8de9f7fb860" - integrity sha512-HBmcfb9WTlcsqlzlHfd7nZr49on7ftpWmKXvxZu9DinLS7EZ5ZjgSvmxrx39YCS5yONILBJoA/BSpg1RcCbSjQ== - dependencies: - invariant "2" - -"@ledgerhq/devices@^4.78.0": - version "4.78.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-4.78.0.tgz#149b572f0616096e2bd5eb14ce14d0061c432be6" - integrity sha512-tWKS5WM/UU82czihnVjRwz9SXNTQzWjGJ/7+j/xZ70O86nlnGJ1aaFbs5/WTzfrVKpOKgj1ZoZkAswX67i/JTw== - dependencies: - "@ledgerhq/errors" "^4.78.0" - "@ledgerhq/logs" "^4.72.0" - rxjs "^6.5.3" - -"@ledgerhq/devices@^6.27.1": - version "6.27.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-6.27.1.tgz#3b13ab1d1ba8201e9e74a08f390560483978c962" - integrity sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ== - dependencies: - "@ledgerhq/errors" "^6.10.0" - "@ledgerhq/logs" "^6.10.0" - rxjs "6" - semver "^7.3.5" - -"@ledgerhq/devices@^6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-6.3.0.tgz#7ee59614198882311d1805912e368451527d05b2" - integrity sha512-DmVxqMAf3FhkpKjkbBCFVJ5DmesfplujeCLzFwO/zF5VGuwY7xxPqeSxlpusXJkqhEq+DbFzIDRWJYDf7rtXqg== - dependencies: - "@ledgerhq/errors" "^6.2.0" - "@ledgerhq/logs" "^6.2.0" - rxjs "6" - semver "^7.3.5" - -"@ledgerhq/errors@^4.78.0": - version "4.78.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-4.78.0.tgz#23daf3af54d03b1bda3e616002b555da1bdb705a" - integrity sha512-FX6zHZeiNtegBvXabK6M5dJ+8OV8kQGGaGtuXDeK/Ss5EmG4Ltxc6Lnhe8hiHpm9pCHtktOsnUVL7IFBdHhYUg== - -"@ledgerhq/errors@^6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.10.0.tgz#dda9127b65f653fbb2f74a55e8f0e550d69de6e4" - integrity sha512-fQFnl2VIXh9Yd41lGjReCeK+Q2hwxQJvLZfqHnKqWapTz68NHOv5QcI0OHuZVNEbv0xhgdLhi5b65kgYeQSUVg== - -"@ledgerhq/errors@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.2.0.tgz#7dc2b3bf6bdedccdaa1b97dccacfa912c4fc22f8" - integrity sha512-eO03x8HJmG60WtlrMuahigW/rwywFdcGzCnihta/MjkM8BD9A660cKVkyIuheCcpaB7UV/r+QsRl9abHbjjaag== - -"@ledgerhq/hw-app-eth@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-6.5.0.tgz#7541d2455660532272d9c61b2e4e33add06255d9" - integrity sha512-2M43aXxVX3xPwmluG/7zXRljSWSMdifi19V2JR5ezjBhpNg+fgrg6cYOkl7nhyrelsCCaRhWmn3+KCNrkFYLOQ== - dependencies: - "@ledgerhq/cryptoassets" "^6.5.0" - "@ledgerhq/errors" "^6.2.0" - "@ledgerhq/hw-transport" "^6.3.0" - "@ledgerhq/logs" "^6.2.0" - axios "^0.21.1" - bignumber.js "^9.0.1" - ethers "^5.4.4" - -"@ledgerhq/hw-transport-http@^4.74.2": - version "4.78.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-http/-/hw-transport-http-4.78.0.tgz#7f69caf99c66bb5d5d13b4c83f105ceb51b4791e" - integrity sha512-fjrPCYdi8+h9YX+XpuSKE2IgWvjI0Sk+cYZKDKdch4lMMDefEXKYwE2Oi8p5aKmTMJgn0zGfJJuRrj9Du6NwIQ== - dependencies: - "@ledgerhq/errors" "^4.78.0" - "@ledgerhq/hw-transport" "^4.78.0" - "@ledgerhq/logs" "^4.72.0" - axios "^0.19.0" - ws "6" - -"@ledgerhq/hw-transport-http@^6.24.1": - version "6.27.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-http/-/hw-transport-http-6.27.1.tgz#25c6cf02c4b464fae416d163f9ab4fda7b6198ff" - integrity sha512-494Zk5jvHcasa5xjZW7l5g+QqJqLlZpuV/RvlIWnKHdVdrBWYvG/1VukQfJQPgbK3WHtt/9WhrnJoLI+xv2PrA== - dependencies: - "@ledgerhq/errors" "^6.10.0" - "@ledgerhq/hw-transport" "^6.27.1" - "@ledgerhq/logs" "^6.10.0" - axios "^0.26.1" - ws "8.5.0" - -"@ledgerhq/hw-transport@^4.78.0": - version "4.78.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-4.78.0.tgz#714786658e1f2fbc0569e06e2abf8d15d310d931" - integrity sha512-xQu16OMPQjFYLjqCysij+8sXtdWv2YLxPrB6FoLvEWGTlQ7yL1nUBRQyzyQtWIYqZd4THQowQmzm1VjxuN6SZw== - dependencies: - "@ledgerhq/devices" "^4.78.0" - "@ledgerhq/errors" "^4.78.0" - events "^3.0.0" - -"@ledgerhq/hw-transport@^6.24.1", "@ledgerhq/hw-transport@^6.27.1": - version "6.27.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.27.1.tgz#88072278f69c279cb6569352acd4ae2fec33ace3" - integrity sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ== - dependencies: - "@ledgerhq/devices" "^6.27.1" - "@ledgerhq/errors" "^6.10.0" - events "^3.3.0" - -"@ledgerhq/hw-transport@^6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.3.0.tgz#4fc966b1a68c991c0a6b5384841f99c4f8304ce9" - integrity sha512-kdnVrgmxrFtKaRdkoaQBEa02RXgLzEBiooYbxA65BGSJig3PGWDS9LrqNpzLTZM1RQlivd9NLBmfwU2ze4chWA== - dependencies: - "@ledgerhq/devices" "^6.3.0" - "@ledgerhq/errors" "^6.2.0" - events "^3.3.0" - -"@ledgerhq/logs@^4.72.0": - version "4.72.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-4.72.0.tgz#43df23af013ad1135407e5cf33ca6e4c4c7708d5" - integrity sha512-o+TYF8vBcyySRsb2kqBDv/KMeme8a2nwWoG+lAWzbDmWfb2/MrVWYCVYDYvjXdSoI/Cujqy1i0gIDrkdxa9chA== - -"@ledgerhq/logs@^5.50.0": - version "5.50.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186" - integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== - -"@ledgerhq/logs@^6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.0.tgz#c012c1ecc1a0e53d50e6af381618dca5268461c1" - integrity sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw== - -"@ledgerhq/logs@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.2.0.tgz#9fb2d6f1811316697f7b3cc14607f6c608912419" - integrity sha512-SLyFyD7ElMhgKWPYedFGCT/ilcbGPgL5hXXYHxOM79Fs5fWi0zaUpt5oGqGMsOAAFaMa9/rbun0pokzPhEFz8A== - -"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents": - version "2.1.8-no-fsevents" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz#da7c3996b8e6e19ebd14d82eaced2313e7769f9b" - integrity sha512-+nb9vWloHNNMFHjGofEam3wopE3m1yuambrrd/fnPc+lFOMB9ROTqQlche9ByFWNkdNqfSgR/kkQtQ8DzEWt2w== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.0", "@types/babel__core@^7.1.7": - version "7.1.14" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" - integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" - integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" - integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.1.tgz#654f6c4f67568e24c23b367e947098c6206fa639" - integrity sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw== - dependencies: - "@babel/types" "^7.3.0" - -"@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" - integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/prettier@^2.0.0": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" - integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== - -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== - -"@types/yargs-parser@*": - version "20.2.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" - integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== - -"@types/yargs@^13.0.0": - version "13.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1" - integrity sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^15.0.0": - version "15.0.13" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" - integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== - dependencies: - "@types/yargs-parser" "*" - -"@zondax/zemu@^0.27.4": - version "0.27.4" - resolved "https://registry.yarnpkg.com/@zondax/zemu/-/zemu-0.27.4.tgz#4e306ba76f5c718d901c7948516668e944a6aa1e" - integrity sha512-bbYAW9JJUx+hVBdwkTonu+0q9WkeFQpcGMRUrzS/Gfc6rvhAQ+X9KrGhwGrnxmBuzajt0oXZ50QvoEJHBR9PDA== - dependencies: - "@grpc/grpc-js" "^1.5.5" - "@grpc/proto-loader" "^0.6.9" - "@ledgerhq/hw-transport" "^6.24.1" - "@ledgerhq/hw-transport-http" "^6.24.1" - axios "^0.26.0" - axios-retry "^3.2.0" - dockerode "^3.3.1" - elfy "^1.0.0" - fs-extra "^10.0.0" - get-port "^5.1.1" - path "^0.12.7" - pngjs "^6.0.0" - randomstring "^1.2.1" - rfb2 "^0.2.2" - sleep "^6.3.0" - -abab@^2.0.0, abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -acorn-globals@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^5.5.3: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - -acorn@^6.0.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4: - version "8.2.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" - integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.12.3: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^4.0.0, ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3, anymatch@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-uniq@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.2.tgz#5fcc373920775723cfd64d65c64bef53bf9eba6d" - integrity sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1@~0.2.0, asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axios-retry@^3.2.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.2.4.tgz#f447a53c3456f5bfeca18f20c3a3272207d082ae" - integrity sha512-Co3UXiv4npi6lM963mfnuH90/YFLKWWDmoBYfxkHT5xtkSSWNqK9zdG3fw5/CP/dsoKB5aMMJCsgab+tp1OxLQ== - dependencies: - "@babel/runtime" "^7.15.4" - is-retry-allowed "^2.2.0" - -axios@^0.19.0: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - -axios@^0.26.0, axios@^0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" - integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== - dependencies: - follow-redirects "^1.14.8" - -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== - dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" - -babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" - integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== - dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== - dependencies: - "@types/babel__traverse" "^7.0.6" - -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" - integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-polyfill-corejs2@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.1.tgz#ae2cf6d6f1aa7c0edcf04a25180e8856a6d1184f" - integrity sha512-hXGSPbr6IbjeMyGew+3uGIAkRjBFSOJ9FLDZNOfHuyJZCcoia4nd/72J0bSgvfytcVfUcP/dxEVcUhVJuQRtSw== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.1" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.1.tgz#786f40218040030f0edecfd48e6e59f1ee9bef53" - integrity sha512-WZCqF3DLUhdTD/P381MDJfuP18hdCZ+iqJ+wHtzhWENpsiof284JJ1tMQg1CE+hfCWyG48F7e5gDMk2c3Laz7w== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.1" - core-js-compat "^3.9.1" - -babel-plugin-polyfill-regenerator@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.1.tgz#ca9595d7d5f3afefec2d83126148b90db751a091" - integrity sha512-T3bYyL3Sll2EtC94v3f+fA8M28q7YPTOZdB++SRHjvYZTvtd+WorMUq3tDTD4Q7Kjk1LG0gGromslKjcO5p2TA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.1" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" - -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" - integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== - dependencies: - babel-plugin-jest-hoist "^26.6.2" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0, bcrypt-pbkdf@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -bignumber.js@^9.0.0, bignumber.js@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" - integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bip32-path@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/bip32-path/-/bip32-path-0.4.2.tgz#5db0416ad6822712f077836e2557b8697c0c7c99" - integrity sha1-XbBBataCJxLwd4NuJVe4aXwMfJk= - -bip66@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" - integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= - dependencies: - safe-buffer "^5.0.1" - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserslist@^4.14.5, browserslist@^4.16.6: - version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== - dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-lite@^1.0.30001219: - version "1.0.30001312" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz" - integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chokidar@^3.4.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" - integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js-compat@^3.9.0, core-js-compat@^3.9.1: - version "3.13.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.13.0.tgz#a88f5fa81d8e9b15d7f98abc4447a4dfca2a358f" - integrity sha512-jhbI2zpVskgfDC9mGRaDo1gagd0E0i/kYW0+WvibL/rafEHKAHO653hEXIxJHqRlRLITluXtRH3AGTL5qJmifQ== - dependencies: - browserslist "^4.16.6" - semver "7.0.0" - -core-js@^3.7.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.13.0.tgz#58ca436bf01d6903aee3d364089868d0d89fe58d" - integrity sha512-iWDbiyha1M5vFwPFmQnvRv+tJzGbFAm6XimJUT0NgHYW3xZEs1SkCAcasWSVFxpI2Xb/V1DDJckq3v90+bQnog== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssstyle@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== - dependencies: - cssom "0.3.x" - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@4, debug@^4.1.0, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decimal.js@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" - integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" - integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -docker-modem@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-3.0.0.tgz#cb912ad8daed42f858269fb3be6944df281ec12d" - integrity sha512-WwFajJ8I5geZ/dDZ5FDMDA6TBkWa76xWwGIGw8uzUjNUGCN0to83wJ8Oi1AxrJTC0JBn+7fvIxUctnawtlwXeg== - dependencies: - debug "^4.1.1" - readable-stream "^3.5.0" - split-ca "^1.0.1" - ssh2 "^0.8.7" - -dockerode@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-3.3.1.tgz#74f66e239e092e7910e2beae6322d35c44b08cdc" - integrity sha512-AS2mr8Lp122aa5n6d99HkuTNdRV1wkkhHwBdcnY6V0+28D3DSYwhxAk85/mM9XwD3RMliTxyr63iuvn5ZblFYQ== - dependencies: - docker-modem "^3.0.0" - tar-fs "~2.0.1" - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" - integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= - dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -electron-to-chromium@^1.3.723: - version "1.3.739" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.739.tgz#f07756aa92cabd5a6eec6f491525a64fe62f98b9" - integrity sha512-+LPJVRsN7hGZ9EIUUiWCpO7l4E3qBYHNadazlucBfsXBbccDFNKUBAgzE68FnkWGJPwD/AfKhSzL+G+Iqb8A4A== - -elfy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/elfy/-/elfy-1.0.0.tgz#7a1c86af7d41e0a568cbb4a3fa5b685648d9efcd" - integrity sha512-4Kp3AA94jC085IJox+qnvrZ3PudqTi4gQNvIoTZfJJ9IqkRuCoqP60vCVYlIg00c5aYusi5Wjh2bf0cHYt+6gQ== - dependencies: - endian-reader "^0.3.0" - -elliptic@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" - integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -elliptic@6.5.4, elliptic@^6.5.2: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" - integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -endian-reader@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/endian-reader/-/endian-reader-0.3.0.tgz#84eca436b80aed0d0639c47291338b932efe50a0" - integrity sha1-hOykNrgK7Q0GOcRykTOLky7+UKA= - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.18.0-next.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.2.tgz#6eb518b640262e8ddcbd48e0bc8549f82efd48a7" - integrity sha512-byRiNIQXE6HWNySaU6JohoNXzYgbBjztwFnBLUTiJmWXjaU9bSq3urQLUlNLQ292tc+gc07zYZXNZjaOoAX3sw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.3" - is-string "^1.0.6" - object-inspect "^1.10.3" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escodegen@^1.9.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -ethereum-tx-decoder@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereum-tx-decoder/-/ethereum-tx-decoder-3.0.0.tgz#7ef704c1b7e228128cdb81d6a3d2ab57a378b90f" - integrity sha512-l+/K/CNAobJjfGs6lO4RrR17KQrwESrGH2GrkASn7MH2FAJRkItFP21Iy2fCOUjy1Y1nBVoTO6w1GPCgVQH2hg== - dependencies: - ethers "^4.0.37" - -ethers@^4.0.37: - version "4.0.48" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.48.tgz#330c65b8133e112b0613156e57e92d9009d8fbbe" - integrity sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g== - dependencies: - aes-js "3.0.0" - bn.js "^4.4.0" - elliptic "6.5.3" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.4" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - -ethers@^5.4.4: - version "5.4.5" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.4.5.tgz#cec133b9f5b514dc55e2561ee7aa7218c33affd7" - integrity sha512-PPZ6flOAj230sXEWf/r/It6ZZ5c7EOVWx+PU87Glkbg79OtT7pLE1WgL4MRdwx6iF7HzSOvUUI+8cAmcdzo12w== - dependencies: - "@ethersproject/abi" "5.4.0" - "@ethersproject/abstract-provider" "5.4.1" - "@ethersproject/abstract-signer" "5.4.1" - "@ethersproject/address" "5.4.0" - "@ethersproject/base64" "5.4.0" - "@ethersproject/basex" "5.4.0" - "@ethersproject/bignumber" "5.4.1" - "@ethersproject/bytes" "5.4.0" - "@ethersproject/constants" "5.4.0" - "@ethersproject/contracts" "5.4.1" - "@ethersproject/hash" "5.4.0" - "@ethersproject/hdnode" "5.4.0" - "@ethersproject/json-wallets" "5.4.0" - "@ethersproject/keccak256" "5.4.0" - "@ethersproject/logger" "5.4.0" - "@ethersproject/networks" "5.4.2" - "@ethersproject/pbkdf2" "5.4.0" - "@ethersproject/properties" "5.4.0" - "@ethersproject/providers" "5.4.4" - "@ethersproject/random" "5.4.0" - "@ethersproject/rlp" "5.4.0" - "@ethersproject/sha2" "5.4.0" - "@ethersproject/signing-key" "5.4.0" - "@ethersproject/solidity" "5.4.0" - "@ethersproject/strings" "5.4.0" - "@ethersproject/transactions" "5.4.0" - "@ethersproject/units" "5.4.0" - "@ethersproject/wallet" "5.4.0" - "@ethersproject/web" "5.4.0" - "@ethersproject/wordlists" "5.4.0" - -ethers@^5.5.1: - version "5.5.1" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.1.tgz#d3259a95a42557844aa543906c537106c0406fbf" - integrity sha512-RodEvUFZI+EmFcE6bwkuJqpCYHazdzeR1nMzg+YWQSmQEsNtfl1KHGfp/FWZYl48bI/g7cgBeP2IlPthjiVngw== - dependencies: - "@ethersproject/abi" "5.5.0" - "@ethersproject/abstract-provider" "5.5.1" - "@ethersproject/abstract-signer" "5.5.0" - "@ethersproject/address" "5.5.0" - "@ethersproject/base64" "5.5.0" - "@ethersproject/basex" "5.5.0" - "@ethersproject/bignumber" "5.5.0" - "@ethersproject/bytes" "5.5.0" - "@ethersproject/constants" "5.5.0" - "@ethersproject/contracts" "5.5.0" - "@ethersproject/hash" "5.5.0" - "@ethersproject/hdnode" "5.5.0" - "@ethersproject/json-wallets" "5.5.0" - "@ethersproject/keccak256" "5.5.0" - "@ethersproject/logger" "5.5.0" - "@ethersproject/networks" "5.5.0" - "@ethersproject/pbkdf2" "5.5.0" - "@ethersproject/properties" "5.5.0" - "@ethersproject/providers" "5.5.0" - "@ethersproject/random" "5.5.0" - "@ethersproject/rlp" "5.5.0" - "@ethersproject/sha2" "5.5.0" - "@ethersproject/signing-key" "5.5.0" - "@ethersproject/solidity" "5.5.0" - "@ethersproject/strings" "5.5.0" - "@ethersproject/transactions" "5.5.0" - "@ethersproject/units" "5.5.0" - "@ethersproject/wallet" "5.5.0" - "@ethersproject/web" "5.5.0" - "@ethersproject/wordlists" "5.5.0" - -events@^3.0.0, events@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.6" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" - integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" - integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== - dependencies: - "@jest/types" "^24.9.0" - ansi-styles "^3.2.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.9.0" - -expect@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" - integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== - dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flow-bin@^0.112.0: - version "0.112.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.112.0.tgz#6a21c31937c4a2f23a750056a364c598a95ea216" - integrity sha512-vdcuKv0UU55vjv0e2EVh1ZxlU+TSNT19SkE+6gT1vYzTKtzYE6dLuAmBIiS3Rg2N9D9HOI6TKSyl53zPtqZLrA== - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.10.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" - integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== - -follow-redirects@^1.14.8: - version "1.15.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.0.tgz#06441868281c86d0dda4ad8bdaead2d02dca89d4" - integrity sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.1.2, fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-port@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@~5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -google-protobuf@^3.11.0: - version "3.17.1" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.17.1.tgz#d5224fe7dc931f1a69cbdc5cb6e3d69ae74da651" - integrity sha512-CHisE5cwd66w6y/K4K7x2N+SSZ0HgPBQwky7lKsj2vr4nXPuXQ2uUZgMF/ctXnd4xHL747Lh8LUgby2nA8gViA== - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hmac-drbg@^1.0.0, hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -invariant@2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" - integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" - integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== - dependencies: - call-bind "^1.0.2" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" - integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" - integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" - integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.2" - -is-retry-allowed@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" - integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-string@^1.0.5, is-string@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" - integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" - integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== - dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" - -jest-cli@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" - integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== - dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" - prompts "^2.0.1" - yargs "^15.4.1" - -jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" - -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" - integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" - -jest-diff@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" - integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== - dependencies: - chalk "^2.0.1" - diff-sequences "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-diff@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-docblock@^24.3.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" - integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== - dependencies: - detect-newline "^2.1.0" - -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== - dependencies: - detect-newline "^3.0.0" - -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== - dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - -jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" - integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" - -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.1" - -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" - integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" - -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== - dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" - -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" - integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== - dependencies: - "@jest/types" "^26.6.2" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^24.9.0" - is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.0.0" - -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" - integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^26.6.2" - is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - -jest-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== - dependencies: - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" - integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-matcher-utils@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" - integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== - dependencies: - chalk "^2.0.1" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" - integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== - dependencies: - chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" - -jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" - slash "^3.0.0" - stack-utils "^2.0.2" - -jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== - dependencies: - "@jest/types" "^24.9.0" - -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - -jest-pnp-resolver@^1.2.1, jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== - -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== - -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" - integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== - dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" - -jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== - dependencies: - "@jest/types" "^24.9.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" - -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" - integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" - slash "^3.0.0" - -jest-runner@^24.8.0, jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" - integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" - -jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" - integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - cjs-module-lexer "^0.6.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.4.1" - -jest-serial-runner@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jest-serial-runner/-/jest-serial-runner-1.1.0.tgz#867fcd3ce0284afdf742a7306a9cbfd998631aaf" - integrity sha512-QSCMVZMYPAB8ALys43sxgVt4R6slizz7wj2rbCQPvczMh/AOImKeRil6T0dqaXQUTT9UXYzq00zb1bdK5uGEVQ== - dependencies: - jest-runner "^24.8.0" - -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== - -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" - integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" - -jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" - integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" - chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - natural-compare "^1.4.0" - pretty-format "^26.6.2" - semver "^7.3.2" - -jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== - dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" - -jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-validate@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== - dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" - leven "^3.1.0" - pretty-format "^24.9.0" - -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - -jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" - integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== - dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^26.6.2" - string-length "^4.0.1" - -jest-worker@^24.6.0, jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" - integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== - dependencies: - "@jest/core" "^26.6.3" - import-local "^3.0.2" - jest-cli "^26.6.3" - -js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== - -js-sha3@0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= - -js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.0.0" - -jsdom@^16.4.0: - version "16.6.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" - integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.5" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash@^4.17.19, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mime-db@1.47.0: - version "1.47.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" - integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.30" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" - integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== - dependencies: - mime-db "1.47.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -mkdirp@^0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -nan@^2.12.1, nan@^2.14.0, nan@^2.14.1: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" - integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - -node-releases@^1.1.71: - version "1.1.72" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" - integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== - -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nwsapi@^2.0.7, nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" - integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.getownpropertydescriptors@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path@^0.12.7: - version "0.12.7" - resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" - integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= - dependencies: - process "^0.11.1" - util "^0.10.3" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.0, pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -pngjs@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821" - integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== - dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.1: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -prompts@^2.0.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" - integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -protobufjs@^6.10.0: - version "6.11.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" - integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -psl@^1.1.28, psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -randombytes@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" - integrity sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew= - -randomstring@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/randomstring/-/randomstring-1.2.1.tgz#71cd3cda24ad1b7e0b65286b3aa5c10853019349" - integrity sha512-eMnfell9XuU3jfCx3f4xCaFAt0YMFPZhx9R3PSStmLarDKg5j5vivqKhf/8pvG+VX/YkxsckHK/VPUrKa5V07A== - dependencies: - array-uniq "1.0.2" - randombytes "2.0.3" - -react-is@^16.8.4: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@^2.0.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.4: - version "0.6.9" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" - integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== - dependencies: - jsesc "~0.5.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.5: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.87.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.18.1: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rfb2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/rfb2/-/rfb2-0.2.2.tgz#f9444b8803e6a31848e57911ace562ce0fee5598" - integrity sha512-+Aw0oED0zsoNQYFE3FUsD+a/lm9y8YwdQaERlWHm7G5hey3tiSQGq7tfe5sFAw5fbN7Zms38bVEDxIUAOq3mRw== - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -rxjs@6, rxjs@^6.5.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -scrypt-js@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" - integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== - -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@^3.7.1: - version "3.8.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" - integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== - dependencies: - bindings "^1.5.0" - bip66 "^1.1.5" - bn.js "^4.11.8" - create-hash "^1.2.0" - drbg.js "^1.0.1" - elliptic "^6.5.2" - nan "^2.14.0" - safe-buffer "^5.1.2" - -"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.2, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -sleep@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/sleep/-/sleep-6.3.0.tgz#c524e0e6d8d2e45d3f14e0ba5650fbe45f2ae876" - integrity sha512-+WgYl951qdUlb1iS97UvQ01pkauoBK9ML9I/CMPg41v0Ze4EyMlTgFTDDo32iYj98IYqxIjDMRd+L71lawFfpQ== - dependencies: - nan "^2.14.1" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.16, source-map-support@^0.5.6: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" - integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== - -split-ca@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" - integrity sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY= - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -ssh2-streams@~0.4.10: - version "0.4.10" - resolved "https://registry.yarnpkg.com/ssh2-streams/-/ssh2-streams-0.4.10.tgz#48ef7e8a0e39d8f2921c30521d56dacb31d23a34" - integrity sha512-8pnlMjvnIZJvmTzUIIA5nT4jr2ZWNNVHwyXfMGdRJbug9TpI3kd99ffglgfSWqujVv/0gxwMsDn9j9RVst8yhQ== - dependencies: - asn1 "~0.2.0" - bcrypt-pbkdf "^1.0.2" - streamsearch "~0.1.2" - -ssh2@^0.8.7: - version "0.8.9" - resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-0.8.9.tgz#54da3a6c4ba3daf0d8477a538a481326091815f3" - integrity sha512-GmoNPxWDMkVpMFa9LVVzQZHF6EW3WKmBwL+4/GeILf2hFmix5Isxm7Amamo8o7bHiU0tC+wXsGcUXOxp8ChPaw== - dependencies: - ssh2-streams "~0.4.10" - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-utils@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" - integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== - dependencies: - escape-string-regexp "^2.0.0" - -stack-utils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" - integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -streamsearch@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" - integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -symbol-tree@^3.2.2, symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -tar-fs@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.0.1.tgz#e44086c1c60d31a4f0cf893b1c4e155dabfae9e2" - integrity sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.0.0" - -tar-stream@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -tmpl@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -tr46@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" - -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - -uuid@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-to-istanbul@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" - integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" - integrity sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg== - dependencies: - lodash "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@6: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@7.4.6, ws@^7.4.5: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -ws@8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== - -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xmlhttprequest@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2: - version "20.2.7" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== - -yargs@^13.3.0: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^16.1.1, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2"